编程计算一个字符串型的四则运算表达式的值,有什么思路呢如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);
}
怎么理解休止符?如果说仅仅是为了停止音符,为何还要区分二四分休止符?何不统一一致? 2020-05-13 …
将一个四位数的各位顺序颠倒过来,得到一个新的四位数.如果新数比原数大7902,那么在所有符合这样条 2020-06-05 …
小潘将一个四个数字各不相同的四位数的各位顺序颠倒过来,得到一个新的四位数,如果新数比原数大4725 2020-07-02 …
某地四个乡镇A,B,C,D之间建有公路如图,已知AB=14千米,AD=28千米,BD=21千米,B 2020-07-07 …
13131313=36中间填符号如题,四个13,随便填运算符,让他等于36.绝对可以算出来的,因为 2020-07-17 …
路由汇聚网络基础的这道题怎么做?设有下面四条路由10.1.193.0/2410.1.194.0/2 2020-07-18 …
在VC++6.0中,如何将一个数转化为由数字和小数点组成的字符串?如何将两个字符串合并成一个字符串 2020-07-20 …
C#,在一个字符串中判断有没有如下几种符号如题,我想用C#做一个计算器.然后比如s="123456X 2020-11-07 …
如图是《国家地理》编辑社策划的“三纵一横”四条路线寻访最美的秋天.据图完成16~18题.四条寻秋路线 2021-01-05 …
如图是《国家地理》编辑社策划的“三纵一横”四条路线寻访最美的秋天.据图完成16~18题.16.四条寻 2021-01-05 …