发布网友 发布时间: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
这加减乘除优先级,括号问题等等都解决不了啊!你用栈的思想解决就行了!