c语言编程 求解简单表达式,输入一个形式如“操作数 运算符 操作数”的四则运算表达式,输出运算结果。

如题所述

有没有括号的,有的话很烦喔,要用栈来写,没的话一个switch函数和一个循环函数就可以搞定了。用getchar()函数一个个读入所有字符,然后操作数的话用ASCII换成十进制的,switch里面分别就是+-*/四个运算,然后循环两次4个数读完就printf()出来,思路够清晰了吧,代码自己实践。。。无法实现我再附代码。。。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-12-06
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
int main(void)
{
float a,b,f;
int ctl=0,p;
char Cflag='Y';
char c;
char sa[10],sb,sc[10];
while((Cflag == 'Y') || (Cflag == 'y') )
{
for(p=0;p<10;p++) sa[p]='\0';
sb='\0';
for(p=0;p<10;p++) sc[p]='\0';
p=0;
ctl=1;
printf("加、减、乘、除四则运算算式:\n");
scanf("%c", &c);
while(c!='\n')
{
if (c>='0' && c<='9' || c=='.')
{
if ( ctl==1 ) sa[p]=c;
if ( ctl==2 ) sc[p]=c;
p++;

}else if ( c=='+'||c=='-'||c=='*'||c=='/')
{
ctl=2;
sa[p]='\0';
sb=c;
p=0;
}

scanf("%c", &c);
}
sc[p]='\0';
//printf("[%s%c%s]",sa,sb,sc);
a=atof(sa);
b=atof(sc);
switch(sb)
{
case '+':
f=a+b;
break;
case '-':
f=a-b;
break;
case '*':
f=a*b;
break;
case '/':
f=a/b;
break;
defalt:
;
}
printf("[%.2f%c%.2f]=%.2f",a,sb,b,f);

printf("\n是否继续计算(Y/N)?");
scanf("%c", &Cflag);
getchar();

}
}本回答被网友采纳
第2个回答  推荐于2018-02-27
#include"stdio.h"
#include"math.h"
main()
{
int x,y;
char flag;
printf("请输入操作数1,运算符,操作数2\n")
scanf("%d%c%d",&x,&flag,&y);
switch(flag)
case +:printf("=%d\n",x+y); break;
case -:printf("=%d\n",x-y); break;
case *:printf("=%d\n",x*y); break;
case /:printf("=%d\n",x/y); break;
default: error;
}本回答被网友采纳