如图。
暂时写的代码。要求多组输入。
结果是,乘除有结果,加减没有结果。
为什么会出现这种情况?应该怎么改呢?
供参考:
#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;
}
不知道你这个问题是否已经解决, 如果还没有解决的话: