本篇文章中,我們將講述在C語言中,輸入一個數組,如何用for循環實現將輸入的n個數字按照從大到小輸出。
一.定義數組并初始化
首先,我們定義一個整形的數組并將其初始化。輸入n,來決定數組中整數的個數。
然后用for循環來輸入這個數組中的各個數字。
int n = 0;scanf("%d", &n);int* arr = (int*)malloc(sizeof(int) * n);//動態開辟//輸入n個整數int i = 0;for (i = 0; i < n; i++){scanf("%d", &arr[i]);}
二.排序
接下來,就是對這個數組中的數字進行比較排序了。
我們先來看代碼。
//將這n個數按從大到小排序for (i = 0; i < n; i++){int temp = 0; //創建temp變量用于存儲臨時值temp = arr[i]; /*把arr[i]也就是arr[0]的值賦給temp,避免數組中有負數而產生不必要的錯誤*/int j = 0; //j表示每次循環開始時arr的下標/* 下面的for循環中,將i賦值給j,
就避免了前面已經排序好的數字再參與到后面的循環(排序)中去。*/for (j = i; j < n; j++) {if (temp < arr[j]){
//如果數組里還有比temp更大的值,那么將它的值和temp互換temp = arr[j];arr[j] = arr[i];arr[i] = temp;}}}
第一次循環時,原數組中arr[0]的值賦給了temp,因此,我們可以沒有后顧之憂地在第二個for循環里,將我們找到的數組里的最大值賦給arr[0],再將temp的值賦給原數組中最大的數的位置。
第一次循環結束后,進入第二次循環時,arr[0]這個地址中存放的就是原先數組的最大值,它就不會再參與接下來的循環了。第二次循環結束后,arr[1]的位置存放第二大的數字,以此類推,就實現了我們將數組中的數從大到小排序的目的。
三.輸出
最后,我們利用一個簡單的for循環,就能將排序之后的數組輸出了
//輸出for (i = 0; i < n; i++){printf("%d ", arr[i]);}return 0;}
四.運行結果
我們來看程序運行的結果。5是我們輸入的n。接下來的五個數字就是我們輸入的數字。
最后一行就是經過從大到小排序之后的數字。
可以看出,輸入負數時,程序運行結果仍然正確。
五.完整代碼
#include<stdio.h>
#include<stdlib.h>int main()
{int n = 0;scanf("%d", &n);int* arr = (int*)malloc(sizeof(int) * n);//輸入n個整數int i = 0;for (i = 0; i < n; i++){scanf("%d", &arr[i]);}//將這n個數按從大到小排序for (i = 0; i < n; i++){int temp = 0;temp = arr[i];int j = 0;for (j = i; j < n; j++){if (temp < arr[j]){temp = arr[j];arr[j] = arr[i];arr[i] = temp;}}}for (i = 0; i < n; i++){printf("%d ", arr[i]);}free(arr);arr = NULL;return 0;
}
最后,希望以上內容能對你有所幫助。