发布时间:2019-08-04 19:53:33
这是我写了一半的,不知道哪里错了
#include <stdio.h>
int zm(char q,int w,int e,int r,int t)
{
printf("输入式子\n",w);
scanf("%d%c%d",&w,&q,&e);
do
{
switch (q)
{
case '+':
{
r=w+e;
printf("%d\n",r);
}
break;
case'-':
{
r=w-e;
printf("%d\n",r);
}
break;
case'*':
{
r=w*e;
printf("%d\n",r);
}
break;
case'/':
{
if(w=0)
{
printf("除数不能为零!!\n");
break;
}
else
{
r=w/e;
printf("%d\n",r);
}
}
default:
{
printf("错误!!\n");
break;
}
}
printf("继续请扣1\n退出请扣2\n");
scanf("%d",t);
}while(t=2);
int zm=r;
return zm;
}
int main()
{
char q='+';
int w=0,e=0,r=0,t=1;
q=zm(q,w,e,r,t);
printf("结果为%d",q);
return 0;
}
* Note:Your choice is C IDE */#include "stdio.h"#include "stdlib.h"#include "ctype.h"int n=0;char record[20];float product();float change();float muli(){float summ;summ=product();while(record[n]=='-'||record[n]=='+'){switch(record[n]){case '+':n++;summ+=product();break;case '-':n++;summ-=product();break;}}return summ;}float product(){float sump;sump=change();while(record[n]=='*'||record[n]=='/'){switch(record[n]){case '*':n++;sump*=change();break;case '/':n++;sump/=change();break;}}return sump;}float change(){float sumc;char rec[20],i=0;if(record[n]=='('){n++;sumc=muli();}if(record[n]==')')n++;while(isdigit(record[n])||record[n]=='.'){while(isdigit(record[n])||record[n]=='.')rec[i++]=record[n++];rec[i]='\0';sumc=atof(rec);}return sumc;}void main(){while(1){n=0;scanf("%s",record);printf("%s=%g\n",record,muli());}}这个是比较简单的。。。但是有点难理解。。。不过运行绝对正确。。还支持括号。。。但是在这个程序里面我加没有出错处理。。。另一种方法是用栈写。。。这个好理解。。但是麻烦。。。