【发布时间】:2013-05-23 17:06:00
【问题描述】:
我对 C 非常陌生。我正在使用 King 第 2 版的现代 C 编程方法。
我被困在第 6 章。问题 1:编写一个程序,在用户输入的一系列数字中找到最大的数字。程序必须提示用户一一输入数字。当用户输入 0 或负数时,程序必须显示输入的最大非负数。
到目前为止我有:
#include <stdio.h>
int main(void)
{
float a, max, b;
for (a == max; a != 0; a++) {
printf("Enter number:");
scanf("%f", &a);
}
printf("Largest non negative number: %f", max);
return 0;
}
我不明白问题的最后一部分,即如何在循环的用户输入结束时查看哪个非负数最大。
max = a > a ???
感谢您的帮助!
【问题讨论】:
-
你希望
for (a == max; a != 0; a++)做什么? -
问题希望您在用户输入负数(或零)后立即停止并打印迄今为止输入的最大数字。顺便说一句,你的程序有问题,因为 max 没有初始化,并且在 for 循环中没有比较/重新分配 max。
-
Luchian,我在结尾部分标记为最大。
-
然后测试 a 不等于 0。然后我想我可以尝试在最后的最大测试阶段将 a 增加到下一个字母?
-
@caelan:您的
for循环毫无意义。a == max部分将a与max(两者都未初始化)进行比较,并且在您拥有它的地方什么也不做 -for的那部分用于执行初始化;你没有初始化任何东西。下一部分a != 0将导致未定义的行为,因为a未初始化 - 谁知道它拥有什么值?如果a恰好是0,您的循环可能永远不会运行。