#include
int main()
{
double a,b,c,d;
char e;
do{
scanf("%c",&e);
scanf("%lf % % %",&a,&b,&c,&d);
switch(e){
case '+':printf("%f ",(a1.0/b)+(c1.0/d)),printf("%f\n",a+b+c+d);break;
case '-':printf("%f ",(a1.0/b)-(c1.0/d)),printf("%f\n",a-b-c-d);break;
case '':printf("%f ",(a1.0/b)(c1.0/d)),printf("%f\n",abcd);break;
case '/':printf("%f ",(a1.0/b)/(c*1.0/d)),printf("%f\n",a/b/c/d);break;
case '0':break;
default:break;
}
}while(e!=0);
return 0;
}
我不理解,为什么在+-先输入任何一个字符,第二次再次输入就变成了执行default语句
(不让写重复字符,所以%lf省略)
残留字符保留在缓冲区里,下次当作字符读入了,修改如下,供参考:
#include <stdio.h>
int main()
{
double a,b,c,d;
char e;
do{
scanf("%c",&e);
getchar(); //修改
scanf("%lf %lf %lf %lf",&a,&b,&c,&d);
getchar(); //修改
switch(e){
case '+':
printf("%f ",(a*1.0/b)+(c*1.0/d));
printf("%f\n",a+b+c+d);
break;
case '-':
printf("%f ",(a*1.0/b)-(c*1.0/d));
printf("%f\n",a-b-c-d);
break;
case '*':
printf("%f ",(a*1.0/b)*(c*1.0/d));
printf("%f\n",a*b*c*d);
break;
case '/':
printf("%f ",(a*1.0/b)/(c*1.0/d));
printf("%f\n",a/b/c/d);
break;
case '0':break;
default:break;
}
}while(e != '0'); //(e != 0) 修改
return 0;
}