在开始做1.2.3,1.2.5时,本来很简单的题目,每次总在dev c++中运行正确,可一到oj上就wrong answer,改了很多次都没有,纠结了一晚上加上一上午,搞得整个人郁闷死了。。。
为什么没错就是wrong answer了。。。
最后看别人 的终于发现错在哪里了-------------一个回车键,以1.2.5为例吧。
Input
Input contains multiple test cases. The first line of the input is a single integer T (0<T<1000) which is the number of test cases. T test cases follow. Each test case contains a char C (+,-,*, /) and two integers A and B(0<A,B<10000).Of course, we all know that A and B are operands and C is an operator.
|
Output
For each case, print the operation result. The result should be rounded to 2 decimal places If and only if it is not an integer.
|
Sample Input
4 + 1 2 - 1 2 * 1 2 / 1 2 |
Sample Output
3 -1 2 0.50
第一次做的代码是:
#include <stdio.h> int main(void) { int t,a,b; char ch; scanf("%d", &t); while(t--) { scanf("%c", &ch); scanf("%d %d", &a, &b); switch(ch) { case '+' : printf("%d\n", a+b); break; case '-' : printf("%d\n", a-b); break; case '*' : printf("%d\n", a*b); break; case '/' : printf("%.2lf\n", (float)a/b); break; } } return 0; }
困扰的大问题就是:
输入t后就要换行,于是就多了一个换行键,可在代码中没有输入,于是便将换行键当做a,造成了wrong answer,
在1.2.3中没有getchar();也是可以的?????
ps: 还有一个错误是如果除法最后得到的是整数,就不应该输出两位小数点。。。
改:
#include <stdio.h> int main(void) { int t,a,b; char ch; scanf("%d", &t); while(t--) { getchar(); scanf("%c %d %d", &ch, &a, &b); switch(ch) { case '+' : printf("%d\n", a+b); break; case '-' : printf("%d\n", a-b); break; case '*' : printf("%d\n", a*b); break; case '/' : if(a%b==0) printf("%d\n", a/b); else printf("%.2f\n", (float)a/b); break; } } return 0; } |