[英]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
。 請記住, i
和k
只是數組變量,而不是數組中的實際值。 只需將printf
更改為printf("%d\\n", x[k]);
它應該可以正常工作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.