簡體   English   中英

如何在C中無窮多個整數中找到最大的整數

[英]How to find the largest integer among an infinite number of integers in 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,所以這里發生了什么?

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. Maximum初始化為某個值,該值對於所有可能的輸入值都是最低的。

    例如,如果保證輸入僅包含正整數,則

    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( ; ; )

為變量Maximum初始化一些值。

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

然后,您必須更改此行,

printf("%d",&Maximum  );

進入

printf("%d",Maximum  );

&Maximum將給出整數變量的地址。 當從scanf獲取輸入時,我們只需要給出類似的信息。

因為該程序無法知道用戶是僅輸入負數還是僅輸入正數,還是同時輸入這兩者,所以將“ 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終止輸入。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM