...设计一个四则运算的程序,从键盘输入计算式如:5*6-7+8/2= 按从...

发布网友 发布时间:2024-10-24 02:16

我来回答

4个回答

热心网友 时间:2024-11-16 09:48

#include <stdio.h>
void main ()
{
int i=0,c,sum,a[1000];
char b[1000];
while(1)
{
scanf("%d%c",&a[i],&b[i]);
i++;
if(b[i-1]=='=') {c=i-1;break;}
}
sum = a[0];//sum赋值应该在这里,这样就是从第一个数开始运算
for(i=0;i<c;i++)
{
printf("%d%c",a[i],b[i]);
//sum=a[i];//此处的sum赋值出现了错误,因为是在循环内部,那每次循环的时候都会进行一次赋值而替代了原先的值,这就导致了最后是最后两个数进行运算
switch (b[i])
{
case '+':sum+=a[i+1];break;
case '-':sum-=a[i+1];break;
case '*':sum*=a[i+1];break;
case '/':sum/=a[i+1];break;
deafult :break;
}
} printf("%d%c",a[c],b[c]);
printf("%d",sum);
}

热心网友 时间:2024-11-16 09:51

#include <stdio.h>
void main ()
{
int i=0,c,sum,a[1000];
char b[1000];
while(1)
{
scanf("%d%c",&a[i],&b[i]);
i++;
if(b[i-1]=='=')
{
c=i-1;
break;
}
}
i=0; //sum初始化应该放在外面
sum=a[i];
for(;i<c;i++)
{
printf("%d%c",a[i],b[i]);
switch (b[i])
{
case '+':sum+=a[i+1];break;
case '-':sum-=a[i+1];break;
case '*':sum*=a[i+1];break;
case '/':sum/=a[i+1];break;
default :break;
}
}
printf("%d%c\n",a[c],b[c]);
printf("%d",sum);
}

//如果要求对符号运算顺序有要求,需要用到栈
//还有以后要对每个变量,对变量的操作都要注释,否则别人会很麻烦的,虽然你这个程序比较简单

热心网友 时间:2024-11-16 09:51

sum = a[i];
应该放到for循环外 sum = a[0];
不然你最后的值是最后一次计算出来的值

热心网友 时间:2024-11-16 09:45

这加减乘除优先级,括号问题等等都解决不了啊!你用栈的思想解决就行了!

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com