作业帮 > 综合 > 作业

用C语言编写一个简单的可以进行加减乘除运算混合运算的计算器

来源:学生作业帮 编辑:拍题作业网作业帮 分类:综合作业 时间:2024/04/27 21:43:17
用C语言编写一个简单的可以进行加减乘除运算混合运算的计算器
要求:
1.可以进行 + - * / 四则运算.
2.可以进行混合运算.如 4+5*6=34
只要能先乘除再加减就行,还要完整的程序,别只给一段,而且要能运行.
/* 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()
{
\x09float summ;
\x09summ=product();
\x09while(record[n]=='-'||record[n]=='+')
\x09{
\x09\x09switch(record[n])
\x09\x09{
\x09\x09\x09case '+':n++;summ+=product();break;
\x09\x09\x09case '-':n++;summ-=product();break;
\x09\x09}
\x09}
\x09return summ;
}
float product()
{
\x09float sump;
\x09sump=change();
\x09while(record[n]=='*'||record[n]=='/')
\x09{
\x09\x09switch(record[n])
\x09\x09{
\x09\x09\x09case '*':n++;sump*=change();break;
\x09\x09\x09case '/':n++;sump/=change();break;
\x09\x09}
\x09}
\x09return sump;
}
float change()
{
\x09float sumc;
\x09char rec[20],i=0;
\x09if(record[n]=='(')
\x09{
\x09\x09n++;
\x09\x09sumc=muli();
\x09}
\x09if(record[n]==')')
\x09 n++;
\x09 while(isdigit(record[n])||record[n]=='.')
\x09 {
\x09 \x09while(isdigit(record[n])||record[n]=='.')
\x09 \x09\x09rec[i++]=record[n++];
\x09 \x09\x09rec[i]='\0';
\x09 \x09\x09sumc=atof(rec);
\x09 }
\x09 return sumc;\x09
}
void main()
{
\x09while(1)
\x09{
\x09n=0;
\x09scanf("%s",record);
\x09printf("%s=%g\n",record,muli());
\x09}
}
这个是比较简单的.但是有点难理解.不过运行绝对正确.还支持括号.但是在这个程序里面我加没有出错处理.
另一种方法是用栈写.这个好理解.但是麻烦.