水题第三记 一个小错误引起的崩溃

        在开始做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;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值