C语言编程,,,,,在线等

来源:百度知道 编辑:UC知道 时间:2024/07/15 12:15:41
做一个加减乘除的计算器,只做程序部分;
我自己写了一个,也能运行,但是有错,请帮我看看,指出错误,谢谢
#include<stdio.h>
void main()
{
int a,b,c,d,e,f;
c=a+b;
d=a-b;
e=a*b;
f=a/b;
if(scanf("%d+%d",&a,&b)) printf("相加结果=%d\n",c);
else if(scanf("%d-%d",&a,&b)) printf("相减结果=%d\n",d);
else if(scanf("%d*%d",&a,&b)) printf("相乘结果=%d\n",e);
else if(scanf("%d/%d",&a,&b)) printf("相除结果=%d\n",f);
else
printf("error/n");
}

帮你修改了一下(最终版本!):
#include<stdio.h>
void main()
{
int a,b;
char c;
printf("\n输入输入格式为'3/4='或者'3+5'\n");
while(scanf("%d%c%d",&a,&c,&b)==3)
{
printf("%d%c%d=",a,c,b);
switch(c)
{
case '+':
printf("%d",a+b);break;
case '-':
printf("%d",a-b);break;
case '*':
printf("%d",a*b);break;
case '/':
printf("%.4f",(float)((float)a/b));break;
default:
break;
}
printf("\n输入不合法的算式即可退出(如字母)\n");

}
}

其实很简单,我只说说主要问题
scanf函数有一个返回值,就是你成功输入的数的个数,比如你的
scanf("%d+%d",&a,&b),如果你输入3+4,那么ab都输入了返回2,输入5-3,由于减号的原因,就只有输入了a所以返回1,但是对于你的if语句,无法检测是2还是1,因为都是非零,也就是说只要你输入不管是3+4,4-3,2*5,1/2,第一个判断语句if(scanf("%d+%d",&a,&b)) printf("相加结果=%d\n",c); 都会执行!
至于你是输入4-3,2*5,1/2这3个的情况下,如果