怎么用C语言的输入一个数学式子可以得到结果,如input:3+4 output:7,输入的式子可以的加减乘除这些简单的运

2025-06-23 06:04:02
推荐回答(4个)
回答1:

这个设计到优先级 要栈处理
下面这个程序 输入0结束
输入其它的+-*/运算式 输出结果
但是字符与字符间有空格 不然要出错
比如输入1 + 2
或者 + 2 * 5 - 7 / 11
注意有空格
#include
#include
#include
#include
using namespace std;

int main(){
char ch[210];
int len,i,j;
double n,m,k;

while (cin.getline(ch,210))
{
len = strlen(ch);
if(len==1&&'0' == ch[0])break;

stacks1;
stacks2;
i=0,k=0;
while (i {
if (' '== ch[i]){
i++;
continue;
}
else if ('0'<=ch[i] && '9'>=ch[i])
{
k = 0;
k = k*10 + ch[i]-'0';
i++;
while ('0'<=ch[i] &&'9'>=ch[i]&&i {
k = k*10 + ch[i]-'0';
i++;
}
s1.push(k);
k =0;
}
else
{
if ('*'==ch[i] || '/'==ch[i])
{
j =i;
n = s1.top(),s1.pop();
i++;
i++;
k = 0;
while ('0'<=ch[i] && '9'>=ch[i]&&i {
k = k*10 + ch[i]-'0';
i++;
}
if ('*'==ch[j])
{
k = k*n;
}else{
k = n/k;
}
s1.push(k);
}
else if('+'==ch[i] || '-'==ch[i])
{
s2.push(ch[i]);
i++;
}
}
}

char str, str2;
while (!s2.empty())
{
str = s2.top();
s2.pop();
k = s1.top(),s1.pop();
if ('+' == str)
{
n = s1.top();s1.pop();
if (!s2.empty())
{
str2 = s2.top();

if ('-' == str2)
{
k = n - k;
}else{
k = k + n;
}
}else
k = k + n;
// cout< s1.push(k);
}else{
n = s1.top();s1.pop();
if (!s2.empty())
{
str2 = s2.top();
if ('-' == str2)
{
k = k + n;
}else{
k = n - k;
}
}else
k = n - k;
s1.push(k);
}
}
printf("%0.2lf\n",s1.top());s1.pop();
}
return 0;
}

回答2:

#include
main()
{ int a,c,d=0;
float e;
char b;
printf("please input\n");
scanf("%d%c%d",&a,&b,&c);
switch(b)
{case '+':d=a+c;break;
case '-':d=a-c;break;
case '*':d=a*c;break;
case '/':e=a*1.0/c;break;
}
if (d!=0) printf("%d%c%d=%d",a,b,c,d);
else printf("%d%c%d=%f",a,b,c,e);
}

回答3:

这个写起来有难度

回答4:

这个扯到算符优先级算符的实现,很麻烦的。楼主放高分请人吧。