作业帮 > 综合 > 作业

杭电 2055 An easy problem

来源:学生作业帮 编辑:神马作文网作业帮 分类:综合作业 时间:2024/11/10 16:54:42
杭电 2055 An easy problem
Problem Description
we define f(A) = 1,f(a) = -1,f(B) = 2,f(b) = -2,...f(Z) = 26,f(z) = -26;
Give you a letter x and a number y ,you should output the result of y+f(x).
Input
On the first line,contains a number T.then T lines follow,each line is a case.each case contains a letter and a number.
Output
for each case,you should the result of y+f(x) on a line.
Sample Input
6
R 1
P 2
G 3
r 1
p 2
g 3
Sample Output
19
18
10
-17
-14
-4
我的代码:这段一直过不了,检查不出错,无奈之下switch了一大串,终于通过了,不过还想求教这段到底哪里有问题,
#include
int main()
{
\x05int a,s,i;
\x05char z;
while(scanf("%d",&a)!=EOF)
{
\x05for(i=0;i='a'&&z='A'&&z
杭电 2055 An easy problem
这是我的ac码
我觉得可能是你的输入控制有问题吧,没有将换行符去掉
#include
int main()
{
int a,c;
char b;
scanf("%d",&a);
while(a--)
{
getchar();*********去掉换行符,有整数有有字符的时候要注意的.
b=getchar();
scanf("%d",&c);
if(b>='a') printf("%d\n",'a'-1-b+c);
else printf("%d\n",b-'A'+1+c);
}return 0;
}
再问: 你的代码倒是很神奇地过了,不过为什么我没考虑getchar();在电脑上编译运行后也能得出正确结果?
再答: 我帮你分析一下你的代码为什么能得出正确结果: Sample Input还是采用原来的 6 R 1 P 2 G 3 r 1 p 2 g 3 第1步:把6赋给a,回车还留在缓冲区中 第2步:把回车赋给z 第3步:把字母'R'赋给整数s,但是字母'R'不是一个整数,赋不成功,此scanf语句结束。此时的s的值是内存中初始的值,是一个不确定数。字母'R'还留在缓冲区中。 第4步: 判断 if(z>='a'&&z='A'&&z='a'&&z='A'&&z