簡體   English   中英

將給定數字升序排列

[英]Arrange given numbers in ascending order

我剛剛開始學習C,今天遇到了一個問題,其中一部分是接受用戶的數字數組並按升序排列。 數組大小也應由用戶指定。 我為此使用了以下代碼->

   for (i = 0; i <= y - 1; ++i) {
        for (ii = i + 1; ii <= y - 1; ++ii) {
            if (x[i] > x[ii]) {
                temp = x[i];
                x[i] = x[ii];
                x[ii] = temp;
            }
        }
    }
    int k;
    printf("\nNumbers arranged in ascending order:\n");
    for (k = 0; k < y; ++k) {
        printf("%d\n", x[i]);
    }

在這里,變量y是數組的大小,x是數組變量的名稱(因此定義的變量類似於這樣-> int x[y];但是問題是,它只是打印出數組的最終值。 :假設我輸入3作為數組大小,然后程序要求我輸入3個數字,我選擇了34、45、22。現在執行完整個代碼后,它顯示x [3](現在x [3]甚至不存在!因為x [2]是數組中的最終值,所以它給了我變量的存儲位置。

你需要改變

 printf("%d\n", x[i]);

printf("%d\n", x[k]);

在打印循環中,因為您使用k作為循環計數器變量。

在您的最后一個for循環中,您正在做

 printf("\nNumbers arranged in ascending order:\n");
for (k = 0; k < y; ++k) {
    printf("%d\n", x[i]);
}

但是您打印x[i] ,但不要增加i 請記住, ik只是數組變量,而不是數組中的實際值。 只需將printf更改為printf("%d\\n", x[k]); 它應該可以正常工作。

暫無
暫無

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

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