题目
答案
#include<stdio.h>
#include<string.h>
int main()
{
char s[100];
gets(s);
int n=strlen(s),i,j,k=0;
char t;
int sum=0,sum1=0,flag=0,temp[10];
for(i=0;i<n;i++)
{
if(s[i]>='0'&&s[i]<='9')
{
if(flag==0&&s[i+1]>='0'&&s[i+1]<='9')
{
temp[k++]=s[i]-'0';
}
else if(flag==0&&(s[i+1]<'0'||s[i+1]>'9'))
{
temp[k++]=s[i]-'0';
for(j=0;j<k;j++)
sum1=sum1*10+temp[j];
sum+=sum1;
// printf("%d\n",sum1);
sum1=0;
k=0;
flag=1;
}
else if(flag==1&&s[i+1]>='0'&&s[i+1]<='9')
{
temp[k++]=s[i]-'0';
}
else if(flag==1&&(s[i+1]<'0'||s[i+1]>'9'))
{
temp[k++]=s[i]-'0';
for(j=0;j<k;j++)
sum1=sum1*10+temp[j];
if(t=='+') sum+=sum1;
else if(t=='-') sum-=sum1;
else if(t=='*') sum*=sum1;
else if(t=='/')
{
if(sum1==0)
{
printf("ERROR");
return 0;
}
else sum/=sum1;
}
sum1=0;
k=0;
}
}
else if(s[i]=='+'||s[i]=='-'||s[i]=='*'||s[i]=='/')
t=s[i];
else if(s[i]=='=')
{
printf("%d",sum);
return 0;
}
else
{
printf("ERROR");
return 0;
}
}
}
思路讲解
这道题要注意符号之间的数字超过1个的情况,我们的核心思路也是据此建立 的
首先运用标记变量flag将第一组数字与后面的数字分开,同时将每组数字放入临时数组temp中(要注意每组数字过后的变量还原)
从第二组数字开始,每当这组数字后面为字符时,就开始运算,通过循环将temp中的k个数字组合为一个整数sum1,然后进行计算即可