0

我对 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 ???

谢谢你的帮助!

4

2 回答 2

4

因此,如果 a 在循环中的每次迭代都大于它,则您想更新 max ,如下所示:

#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 循环在这里是更好的选择,因为它需要至少运行一次。

于 2013-05-23T17:08:08.740 回答
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;
}
于 2017-05-30T04:57:48.843 回答