C语言编写程序求小学算术题,求大神帮改错

两个一年级小朋友在一起玩游戏,小明给出一堆一位的正整数和运算要求(+、-、*、/、%),小丽要找出这些整数中的最大值和最小值,然后按照小明的要求算出最大数与最小数进行算术运算的结果。
输入:
用逗号分隔的一位正整数序列,及其运算符和等号
输出:
最大数 op 最小数=结果

下面是我编的,总是提示switch语句里面有错,但是我也不知道怎么修改,求助大神
#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
int max,min,op=0;
max=0;min=9;
char a;
a=getchar();
while(a!='=')
{{if(a<='9'&&a>='0')
{if((a-'0')>=max) max=a-'0';
if((a-'0')<=min) min=a-'0';}
else if(a==',') continue;
else if(a=='+') op=1;
else if(a=='-') op=2;
else if(a=='*') op=3;
else if(a=='/') op=4;
else if(a=='%') op=5;}
a=getchar();
}

switch(op);
{case1:{printf("%d+%d=%d\n",max,min,max+min);break;}
case2:{printf("%d-%d=%d\n",max,min,max-min);break;}
case3:{printf("%d*%d=%d\n",max,min,max*min);break;}
case4:{if(min==0) printf("Error!\n");
else printf("%d/%d=%d\n",max,min,max/min);break;}
case5:{if(min==0) printf("Error!\n");
else printf("%d%%%d=%d\n",max,min,max%min);break;}
}

system("PAUSE");
return 0;
}

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
int max,min,op=0;
char a;
max=0;
min=9;
a=getchar();
while(a!='=')
{{if(a<='9'&&a>='0')
{if((a-'0')>=max) max=a-'0';
if((a-'0')<=min) min=a-'0';}
else if(a==',') continue;
else if(a=='+') op=1;
else if(a=='-') op=2;
else if(a=='*') op=3;
else if(a=='/') op=4;
else if(a=='%') op=5;}
a=getchar();
}

switch (op)
{case 1:printf("%d+%d=%d\n",max,min,max+min);break;
case 2:printf("%d-%d=%d\n",max,min,max-min);break;
case 3:printf("%d*%d=%d\n",max,min,max*min);break;
case 4:if(min==0) printf("Error!\n");
else printf("%d/%d=%d\n",max,min,max/min);break;
case 5:if(min==0) printf("Error!\n");
else printf("%d%%%d=%d\n",max,min,max%min);break;
}

system("PAUSE");
return 0;
}

这样就行了。

swich 语句后面不用加;
case和后面的表达式用而个空格 隔开要 。
char a 要在最前面定义。

引用 switch(表达式)
{
case 常量表达式1:
语句1;
break;

case 常量表达式2:
语句2;
break;

……
case 常量表达式n:
语句n;
break;
default:
语句n+1;
break;
}追问

改了之后还是不能出结果啊

追答

+上  else if(a==',') {a=getchar();continue;}


表示我 运行出来没问题哦 ,


你告诉我你的为什么不能出结果。  是不是 输入错误了?


测试数据 :


把你的程序 赋值给我看看 。。

温馨提示:内容为网友见解,仅供参考
第1个回答  2014-04-05
else if(a==',') continue; 这段代码会让程序陷入死循环
把楼上的代码再改一下,把else if(a==',') continue; 换成else if(a==',') {a=getchar();continue;}追问

按你和楼上的改了之后,可以编译了,但是还是不能出结果啊,怎么办?

追答

我这里运行没问题,
测试用例:1,3,5,+,=
运行结果:5+1=6
你把你的测试用例贴出来看看

追问

我用你的测试用例也没有结果啊,麻烦再帮我看看,多谢了

C语言编写程序求小学算术题,求大神帮改错
int main(int argc, char *argv[]){ int max,min,op=0;char a;max=0;min=9;a=getchar();while(a!='='){{if(a<='9'&&a>='0'){if((a-'0')>=max) max=a-'0';if((a-'0')<=min) min=a-'0';} else if(a==',') continue;else if(a=='+') op=1;else if...

C语言编一个小学生算术题程序,求大神!!
do { printf("请输入密码(Ctrl + C 退出) : ");gets(s);}while(strcmp(s,password));menu();

【在线等急】C语言,求大神帮改忙改错,改来改去都不对T.T?
input1 里面你要输入一个学号,姓名,6门成绩,却写了 scanf("%d %s %f %f %f"),怎么只有3个%f?

大神求c语言代码改错TAT
c[i]=c1[i]+48;c[lc]=0;strrev(c);}

一道c语言编程题求大神解答,找一下我错在哪了,谢谢了?
另外,程序的不妥之处:1、利润不一定是整数,因此将P定义为int型不妥 2、if-else语句不是这样用的。既然可以确定全部范围,那么这样写:if(P<1000) number=1;else if(P<2000) number=2;else if(P<5000) number=3;else if(P<10000) number=4;对应的switch语句这样写:switch(number){ ca...

求C语言大神挑错
main(){ int a,b,i,k,t;printf("Please input a,b;\\n");scanf("%d %d",&a,&b);if(a>b){ t=a,a=b,b=t;} for(i=1;i<=a*b;i++) \/\/最大a和b积 if(a*i%b==0) \/\/1)是0不是o;2)条件有误 { k=a*i;break; \/\/找到第一个就是最小公倍数,要退出循环 } ...

c语言程序,求大神解,感谢!
2012-05-24 求大神帮我解决一个C语言程序,谢谢啦!!! 3 2017-03-09 C语言程序填空题,求大神指点,给出具体解析,非常感谢,在线等... 2018-12-24 C语言程序设计题,求大佬解答 2014-06-03 C语言问题,求大神解答,万分感谢! 2014-04-02 C语言,程序问题,求大神解释。谢谢 10 2014-05-28 求大神解答C...

C语言程序设计课程作业,求大神帮帮忙
include<stdio.h> int main(void){ float a,b,c,d;printf("请输入四个数:");while(!scanf("%f%f%f",&a,&b,&c,&d))printf("非法输入,请重新输入:",fflush(stdin));if(a==b&&a+b==c+d) printf("1");else printf("0");return 0;} ...

求c语言大神帮忙解决。
include <stdio.h>#include <stdlib.h>#include "string.h"void process(char* s,char* ref){int p,i,j=0,f=0;char a[10]={"\\0"};char b[10]={"\\0"};int len=strlen(s);for(i=0;i<len;i++){if(s[i]>'0' && s[i]<'9'){if(f==0){a[j++]=s[i];}else if...

C语言:给小学生编写练习20以内加、减法计算的程序。
很显眼的一个错误 int grade(int daan,int answer)int edd(int counter,int fenshu,int y)你声明这两函数的候是没有形参的。,但你后来怎么又有形参了。既然有形参,而你调用的时候,也没有放入对应的实参。

相似回答