話不多說,代碼如下:
1 #include<stdio.h> 2 3 int main() 4 { 5 int a[100], i, j, t, n; 6 printf("請輸入要排序的數的個數:"); 7 scanf_s("%d", &n); //輸入一個數n,表示接下來有n個數 8 for (i = 1; i <= n; i++) 9 { 10 //循環讀入n個數到數組a中 11 printf("請輸入要排序的數:\n"); 12 scanf_s("%d", &a[i]); 13 } 14 //冒泡排序的核心部分 15 for (i = 1; i <= n; i++) //n個數排序,只進行n-1趟 16 { 17 for (j = 1; j <= n - i; j++) //從第一位開始比較直到最后一個尚未歸位的數 18 { 19 if (a[j] < a[j + 1]) //比較大小並交換 20 { 21 t = a[j]; 22 a[j] = a[j + 1]; 23 a[j + 1] = t; 24 } 25 } 26 } 27 for (i = 1; i <= n; i++) 28 { 29 printf(" %d", a[i]); 30 } 31 getchar(); 32 getchar(); 33 return 0; 34 }
運行結果如下:
根據分數高低來給姓名排序,使用了一個結構體,代碼如下:
#define _CRT_SECURE_NO_DEPRECATE #include<stdio.h> //創建一個結構體用來存儲姓名和分數 struct MyStruct { char name[21]; char score; }; int main() { struct MyStruct a[100], t; int i, j, n; scanf("%d", &n);//輸入一個數n,表示要排序的個數 //循環讀入n個人名和分數 for (i = 1; i <= n; i++) { scanf("%s %d",&a[i].name,&a[i].score); } //冒泡排序,按分數從高到低進行排序 for (i = 1; i <= n; i++) { for (j = 1; j < n; j++) //對分數進行比較 { if (a[j].score < a[j + 1].score) { t = a[j]; a[j] = a[j + 1]; a[j + 1] = t; } } } //輸出人名 for (i = 1; i <= n; i++) { printf("%s\n", a[i].name); } getchar(); getchar(); return 0; }
運行結果如下