Balloon Comes,一道简单的四则运算。

img

img
如图。
暂时写的代码。要求多组输入。

img

结果是,乘除有结果,加减没有结果。

img
为什么会出现这种情况?应该怎么改呢?

供参考:

#include<stdio.h>

int main()
{
    int  n,a,b;
    char c;
    scanf("%d",&n);
    while(n){
            fflush(stdout);rewind(stdin);
            scanf("%c%d%d",&c,&a,&b);
            switch(c){
                     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;
                     default  :break;
            }
            n--;
    }
    return 0;
}

可能是没有对回车符处理,导致数据接收错误。代码如下:如有帮助,请帮忙采纳一下,谢谢。

#include <stdio.h>
#include <stdlib.h>
int main()
{
    int n,i;
    int *a,*b;
    char *ch;
    scanf("%d",&n);
    getchar(); //吸收一下回车符
    a = (int*)malloc(sizeof(int)*n);
    b = (int*)malloc(sizeof(int)*n);
    ch = (char*)malloc(n);
    for (i=0;i<n;i++)
    {
        scanf("%c %d %d",&ch[i],&a[i],&b[i]);
        getchar();
    }
    //输出
    for (i=0;i<n;i++)
    {
        switch(ch[i])
        {
        case '+':
            printf("%d\n",a[i]+b[i]);
            break;
        case '-':
            printf("%d\n",a[i]-b[i]);
            break;
        case '*':
            printf("%d\n",a[i]*b[i]);
            break;
        case '/':
            if(a[i]%b[i] == 0)
                printf("%d\n",a[i]/b[i]);
            else
                printf("%.2f\n",1.0*a[i]/b[i]);
            break;
        }
    }

    free(a);
    free(b);
    free(ch);
    return 0;
}
不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^