我是C的新手。我正在使用King 2nd Edition的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 ???
感谢您的帮助!
答案 0 :(得分:4)
所以你想要更新max,如果a大于每次迭代通过循环,就像这样:
#include <stdio.h>
int main(void)
{
float max = 0, a;
do{
printf("Enter number:");
/* the space in front of the %f causes scanf to skip
* any whitespace. We check the return value to see
* whether something was *actually* read before we
* continue.
*/
if(scanf(" %f", &a) == 1) {
if(a > max){
max = a;
}
}
/* We could have combined the two if's above like this */
/* if((scanf(" %f", &a) == 1) && (a > max)) {
* max = a;
* }
*/
}
while(a > 0);
printf("Largest non negative number: %f", max);
return 0;
}
然后你只需在最后打印max。 do while循环是一个更好的选择,因为它需要至少运行一次。
答案 1 :(得分:0)
#include<stdio.h>
int main()
{
float enter_num,proc=0;
for(;;)
{
printf("Enter the number:");
scanf("%f",&enter_num);
if(enter_num == 0)
{
break;
}
if(enter_num < 0)
{
proc>enter_num;
proc=enter_num;
}
if(proc < enter_num)
{
proc = enter_num;
}
}
printf("Largest number from the above is:%.1f",proc);
return 0;
}