我想学一些C,但很痛苦。我有个任务:写一个C程序来确定输入的整数序列的最小值和最大值,以字符串"done"结束。非常简单的任务,就像输入一样:5 2 9 done然而输出是错误的,我不能弄清楚。我将非常感谢一些帮助。Thx!
代码:
#include <stdio.h>
#include <string.h>
int main() {
char line[1000];
int val, min = 10, max = -1;
while ( 1 ) {
scanf("%d", &val);
if (val < min) min = val;
if (val > max) max = val;
scanf("%4s", line);
if (strcmp("done", line) == 0) break;
}
printf("Maximum %d\n", max);
printf("Minimum %d", min);
}
我测试代码的两个环境都将输出最大值9,最小值5。有人能解释一下这是怎么回事吗?
1条答案
按热度按时间y53ybaqx1#
根据while循环
你必须在每次输入一个数字后输入一个字符串。
因此,第二个数字2被认为是字符串的输入。
整数也可以是小于-1的负数或大于10的正数。
没有任何意义。
相反,您可以读取字符数组中的所有数字,然后使用例如
atoi
函数将输入的字符串转换为数字。例如,一个简单的程序可以看起来像
您只需输入字符串
"done"
一次即可中断循环。在所有其他情况下,您只需输入整数。