题目如下
目前写出了两套方案,但在输入方面都有问题.
方案一:
while(scanf("%s",str),str[0] !='=')
{
if(str[0] == '+' || str[0] == '-' || str[0] == '*' || str[0] == '/')
{
a2[i]=str[0];
i++;
}
else{
a1[i]=atoi(str);
i++;
}
计算方面没有问题,但在输入过程中要求空格,与题目相违背
第二个方案
gets(str);
for(i=0;str[i]!='=';i++)
{
if(str[i] == '+' || str[i] == '-' || str[i] == '*' || str[i] == '/')
{
a2[i]=str[i];
}
else{
a1[i]=atoi(str+i);
}
虽然可以不用空格,但只能输入个位数,遇到10,100等数就没有办法.
希望能得到一种不用输入空格,也可以输入多位数的输入方法。
所有代码
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main()
{
double a1[100];
char a2[100]={0};
char str[100];
int i=0,j=0;
double sum=0;
while(scanf("%s",str),str[0] !='=')
{
if(str[0] == '+' || str[0] == '-' || str[0] == '*' || str[0] == '/')
{
a2[i]=str[0];
i++;
}
else{
a1[i]=atoi(str);
i++;
}
}
for(j=0;j<i;j++)
{
if(a2[j]=='+')
a1[j+1]=a1[j-1]+a1[j+1];
if(a2[j]=='-')
a1[j+1]=a1[j-1]-a1[j+1];
if(a2[j]=='*')
a1[j+1]=a1[j-1]*a1[j+1];
if(a2[j]=='/')
a1[j+1]=a1[j-1]/a1[j+1];
}
sum=a1[j-1];
printf("%.2lf",sum);
}
两个方案只在输入方面有差异