当我输入一个以“sum”开头的字符串,然后计算接下来的数字时,问题就出现了。
输入:
sum 10 20
输出:
30
但是我的代码有问题,输出结果是33(计算过程是11+22=33)。 我认为第二个 while 循环有问题,但是我不知道该如何修改。
我需要一位高手的帮助。
#include<stdio.h>
int main(){
char a[100];
while (gets(a))
{
if (a[0] == 's'&&a[1] == 'u'&&a[2] == 'm')
{
int i;
int sum = 0;
for (i = 2; a[i]; i++){
if (a[i] == ' '){
i++;
int num = 0;
while (1){
num += num * 10 + (a[i] - '0');
i++;
if (a[i] == ' ' || a[i]=='\0') break;
}
sum += num;
i--;
}
}
printf("%d", sum);
}
}
return 0;
}
scanf
呢? - NobodyNadascanf
是一种不安全且糟糕的解析文本的方法,但是它比你这里使用的方法要好。换句话说,你的方法固有的不可扩展性,在即使最微不足道的情况下也会失控。 - Bartek Banachewicz