编程计算一个字符串型的四则运算表达式的值,有什么思路呢如1+2*3-4/2
来源:学生作业帮助网 编辑:作业帮 时间:2024/11/01 08:04:54
编程计算一个字符串型的四则运算表达式的值,有什么思路呢如1+2*3-4/2
编程计算一个字符串型的四则运算表达式的值,有什么思路呢
如1+2*3-4/2
编程计算一个字符串型的四则运算表达式的值,有什么思路呢如1+2*3-4/2
#include<stdio.h>
#include<stdlib.h>
void main(){
char c1,c2;
int n=0,k=0,t=0;
double sum;
double d[100];
printf("请输入公式:");
c1=getchar();
while(c1!='\n'){
d[n]=c1;
c2=getchar();
if(c1>47&&c1<58){
d[n]=c1-48;
while(c2>47&&c2<58){
d[n]=d[n]*10+(c2-48);
c2=getchar();
}
}
if(c2=='.'){
double k=0.1;
while((c2=getchar())>47&&c2<58){
d[n]=d[n]+(c2-48)*k;
k*=0.1;
}
}
c1=c2;
n++;
}
d[n]='\n';
for(int i1=1;i1<n-1;i1++)
if(d[i1]=='/'){
d[i1]='*';
if(d[i1+1]==0){
printf("零不能为除数.");
exit(0);
}
d[i1+1]=1/d[i1+1];
}
for(int i=1;d[i]!='\n';i++)
if(d[i]=='*'){
d[i-1]=d[i-1]*d[i+1];
k=i-1;
while(i+2<n-1&&d[i+2]=='*'){
i+=2;
d[k]=d[k]*d[i+1];
}
for(int j=0;j<n-i-1;j++)
d[k+1+j]=d[i+2+j];
}
sum=d[0];
for(int j1=2;d[j1]!='\n';j1++){
\x09if(d[j1-1]=='+')
sum=sum+d[j1];
if(d[j1-1]=='-')
sum=sum-d[j1];
}
printf("=%.3f\n",sum);
}