早教吧 育儿知识 作业答案 考试题库 百科 知识分享

编程计算一个字符串型的四则运算表达式的值,有什么思路呢如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);

}