在此程序中,我想输入一个包含一些整数的字符串。如果未给出任何值,则程序将显示总金额。
但是在这里,在第一种情况下,如果我使用带数字的字符串,那么会有2个输出。
示例输入:
4
捐赠100
报告
捐赠500
示例输出:
0
100
100
0
但是请注意,这里我有3次输入字符串的机会,但输出是4次。 那么,谁能告诉我为什么这个程序表现怪异?
#include<stdio.h>
#include<stdlib.h>
int main()
{
int T, total=0, val=0;
char input1[20];
scanf("%d",&T);
while(T--)
{
scanf(" %s",input1);
val=-1;
val=atoi(input1);
total+=val;
printf("\nInput=\"%s\" val=\"%d\"\n", input1, val);
if(val != -1)
printf("%d\n",total);
}
}
答案 0 :(得分:1)
只需添加日志记录,答案将显而易见:
#include<stdio.h>
#include<stdlib.h>
int main()
{
int T, total=0, val=-1;
char input1[20];
scanf("%d",&T);
while(T--)
{
scanf(" %s",input1);
val=-1;
val=atoi(input1);
total+=val;
printf("\nInput='%s' val='%d'\n", input1, val);
if(val != -1)
printf("%d\n",total);
}
}
然后运行它并提供您的输入:
4
donate 100
Input='donate' val='0'
0
Input='100' val='100'
100
report
Input='report' val='0'
100
donate 500
Input='donate' val='0'
100
如您所见,如果没有给-1
提供一个数字,那么您期望以某种方式在val
中得到一个atoi
值的期望是不正确的。