习题6-7 简单计算器
程序员文章站
2022-06-07 14:35:23
...
前言
这个题目有个报错,不知道为什么,记录下来等回头再看或希望有人能解答。附上其他人的正确代码
正文
模拟简单运算器的工作。假设计算器只能进行加减乘除运算,运算数和结果都是整数,四种运算符的优先级相同,按从左到右的顺序计算。
输入格式: 输入在一行中给出一个四则运算算式,没有空格,且至少有一个操作数。遇等号”=”说明输入结束。
输出格式: 在一行中输出算式的运算结果,或者如果除法分母为0或有非法运算符,则输出错误信息“ERROR”。
输入样例: 1+2*10-10/2=
输出样例: 10
代码一:(有报错)
#include <stdio.h>
#define MAX 1000
#include <math.h>
#include <ctype.h>
int main(){
int c,i=0,count=0;
int num,next=1;//num为第一个操作数,next获取下一个操作数。
int flag=1;
while((c=getchar())!='='){
if(isdigit(c)){
num=c-'0';//字符转数字
}
else{
switch(c){
case '+': next=getchar()-'0'; num=num+next;break ;
case '-': next=getchar()-'0'; num=num-next; break ;
case '*': next=getchar()-'0'; num=num*next;break ;
case '/' :next=getchar();
if(!isdigit(next)||next=='0'){flag=0;break;}//判断分母是否为零
next=next-'0';
num=num/next;break ;
default:flag=0;break;//非法字符情况
}
}
}
if(flag==1)
printf("%d",num);
else
printf("ERROR");
}
报错:最小表达式,,,不懂什么意思
代码二(正确)
这是别人写的正确代码
#include<stdio.h>
int main()
{
int i, sum, isnan=0;
char op='0';
scanf("%d", &sum);
while(op!='='){
scanf("%c", &op);
if(op=='=')
break;
scanf("%d", &i);
if(op=='+')
sum=sum+i;
else if(op=='-')
sum=sum-i;
else if(op=='*')
sum=sum*i;
else if(op=='/'){
if(i!=0)
sum=sum/i;
else
isnan=1;
}
else
isnan=1;
}
if(isnan==1)
printf("ERROR");
else
printf("%d\n", sum);
return 0;
}
上一篇: JS中的循环结构