如何在C中找到无数个整数中的最大整数

时间:2016-01-08 12:05:23

标签: c

#include <stdio.h>

int main()
{
    int res;
    int max;
    int i;
    int Maximum; 

    for (i = 0 ; i < res; i++)
    {
      res = scanf("%d",&max);
      if( res != 1 ) return 0;
      if(max > Maximum)
      {
        Maximum = max;
      }
    }
    printf("%d",&Maximum  );
    return 0;
    }

大家好,我不明白为什么Maximum打印出一个淫秽的高数字。 只是想要一个理由,而不是牵着我的手,因为我真的想学习这门语言,我知道Java主要是在这里发生了什么?

4 个答案:

答案 0 :(得分:1)

1。无需传递整数变量的地址。现在您将错误的参数传递给%d导致未定义的行为

 printf("%d",&Maximum  );
             ^ remove &

打印Maximum -

的值
 printf("%d", Maximum);

2。 Maximum 在您的程序中被整合,因此,在没有初始化的情况下进行比较是不正确的。

int Maximum;                 // unintialized variable

在使用之前初始化它 -

int Maximum=INT_MIN;         // header <limits.h>

3。你的这个循环不是无限的。它只会迭代1时间 -

for (i = 0 ; i < res; i++)
{
    //your code
}

而是使用无限循环 -

for(; ;){                              // or while(1)
 //your code 
}

答案 1 :(得分:0)

  1. Maximum初始化为某个值,该值对于所有可能的输入值都是最低的。

    e.g。如果保证输入只包含正整数,那么

    Maximum = -1;

    或者更好地使用评论中指出的Maximum = INT_MIN;。为此,您需要在程序中包含<limits.h>头文件。

  2. printf("%d",&Maximum );

    这是错误的。这将打印Maximum的地址。

    使用printf("%d", Maximum);

  3. for (i = 0 ; i < res; i++)

    res未初始化!对于无限数字,您希望将此循环设为无限while(1)for( ; ; )

答案 2 :(得分:0)

初始化变量Maximum的一些值。

Maximum=0; // you can assign any value. 

然后你必须改变这一行,

printf("%d",&Maximum  );

进入

printf("%d",Maximum  );

&Maximum将给出整数变量的地址。在从scanf获取输入时,我们必须这样做。

答案 3 :(得分:0)

因为程序无法知道用户是否只输入负数,只输入正数或两者,将“max”(或min)初始化为随机数(例如零),希望它“绝对”执行过程中的最大/最小值可能会在某些时候产生错误的结果。

以下是一种简单的方法,它完全依赖于用户输入,而不试图包含绝对最小/最大值的任何其他头文件。它假定第一个提供的输入为“max”,如果任何后续条目超过该值,则重置max。

    #include <stdio.h>

    int main(void) {
        int num, max;
        int first_input = 1;

        while(scanf("%d", &num) != EOF){
            if(first_input){
                max = num;
                first_input = 0;
            }
            else{
                if(max < num){
                    max = num;
                }
            }
        }

        printf("\n Maximum of the scanned numbers is: %d", max);
        return 0;
    }

程序将继续运行,直到用户按Ctrl + D / Ctrl + Z终止输入。