Balloon Comes! |
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) |
Total Submission(s): 9607 Accepted Submission(s): 2891 |
Problem Description The contest starts now! How excited it is to see balloons floating around. You, one of the best programmers in HDU, can get a very beautiful balloon if only you have solved the very very very... easy problem. |
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 |
Author lcy |
最开始的调试:
#include <stdio.h>
#include <math.h>
int T=0;
int main()
{
int a,b;
double sum=0.0;
char c;
scanf("%d",&T);
while (T>0)
{
scanf("%s",&c);
scanf("%d%d",&a,&b);
if(c=='+') {sum=a+b;printf("%d\n",sum);}
if(c=='-') {sum=a-b;printf("%dn",sum);}
if(c=='*') {sum=a*b;printf("%d\n",sum);}
if(c=='/') {sum=a/b;if(floor(sum)==sum) {printf("%d\n",sum);} else {printf("%.02f\n",sum);}}
T--;
}
return 0;
}
但经调试,发现因为sum为双精度变量,当用%d输出时会出现问题,输出的总是0,于是我将%d改为%.0f。
再次调试,发现执行1/2时输出为0,猜测与a、b、sum的变量定义类型有关,因为a,b为整数型,于是a/b=0。
将a,b改为双精度类型,发现输入1和2时失败,a,b并未成功赋值。试图将scanf("%d%d",&a,&b);改为scanf("%f%f",&a,&b);也没有作用。最后决定用强制类型转换,程序改为:
#include <stdio.h>
#include <math.h>
int T=0;
int main()
{
int a,b;
double sum=0.0;
char c;
scanf("%d",&T);
while (T>0)
{
scanf("%s",&c);
scanf("%d%d",&a,&b);
if(c=='+') {sum=a+b;printf("%.0f\n",sum);}
if(c=='-') {sum=a-b;printf("%.0f\n",sum);}
if(c=='*') {sum=a*b;printf("%.0f\n",sum);}
if(c=='/') {sum=(double)a/(double)b;if(floor(sum)==sum) {printf("%.0f\n",sum);} else {printf("%.02f\n",sum);}}
T--;
}
return 0;
}
最后完成。
(总感觉可以再简单点)