Ballon!
这道题是一道简单题,但是一直卡着不过,问题之一在于 符号的辨认后把结果赋值给某结果变量(输出的结果)时,除法的 结果变量和 其他三种运算符(+,-,)的结果变量要区分开*,因为除法的结果可能含小数,其他三种运算都是整数。
在OJ提交就挺诡异的。。。。。 明明结果变量不区分开,逻辑行的通、结果也是对的。但oj提交就是wrong…
接下来看 结果变量分开和结果变量不分开的代码
结果变量不分开,都是result存
OJ提交是wrong
#include<stdio.h>
int main(void){
int n;
char c;//加减乘除
int a,b;
scanf("%d",&n);
float result;
while(n--){
getchar();
scanf("%c",&c);
scanf("%d %d",&a,&b);
float result;
if(c=='+'){
result = a+b;
}
if(c=='-'){
result = a-b;
}
if(c=='*'){
result = a*b;
}
if(c=='/'){
result = a*1.0/b;
}
//输出结果
if(result-(int)result>0){
//判断是否有小数
printf("%.2f\n",result);
}else{
printf("%d\n",(int)result);
}
}
}
结果变量分开 除法结果用result存 其他三种运算用r存
oj提交AC
#include<stdio.h>
int main(void){
int n;
char c;//加减乘除
int a,b;
scanf("%d",&n);
float result;
int r;
while(n--){
getchar();
scanf("%c",&c);
scanf("%d %d",&a,&b);
if(c=='+'){
r = a+b;
printf("%d\n",r);
}
if(c=='-'){
r = a-b;
printf("%d\n",r);
}
if(c=='*'){
r = a*b;
printf("%d\n",r);
}
if(c=='/'){
result = a*1.0/b;
if(result-(int)result>0){
printf("%.2f\n",result);
}else{
printf("%d\n",(int)result);
}
}
result =0;
}
}
还有一种输出方法可以避免结果变量的分开,就是不用结果变量来存,直接输出结果,例如 printf("%d",a(+,-,*)b);除法另外