例題:從終端輸入9個數字,然后將它們按照從小到大的順序輸出.
編寫程序:
#include<stdio.h>
main()
{
int a[10]; \\定義數組a[0]到a[9]為整型
int i,j,t;
printf("input 10 numbers :\n");
for(i=0;i<10;i++)scanf("%d",&a[i]); \\for循環來實現對數組a的賦值
printf("\n");
for(j=0;j<9;j++) \\開始冒泡排序
for(i=0;i<9-j;i++)
if(a[i]>a[i+1])
{t=a[i];
a[i]=a[i+1];
a[i+1]=t;} \\冒泡排序結束
printf("the sorted numbers :\n");
for(i=0;i<10;i++)printf("%d",a[i]); \\這里的for很容易理解了 按照a[0]到a[9]的順序輸出.
printf("\n");
return 0;
}
程序分析:當執行外循環第1次循環時,j=0,然后執行第1次內循環.此時i=0,在if語句中將a[i]和a[i+1]比較,就是將a[0]和a[1]比較.執行第2次內循環時,i=1,a[i]和a[i+1]比較....
執行最后一次內循環時,i=8,a[i]和a[i+1]比較,就是a[8]和a[9]比較.此時最大的數已經是a[9] 所以比較時不需要在動a[9]的位置.第一次外循環結束
當執行第2次外循環時,j=1,開始循環.內循環的繼續條件是i<9-j,由於j=1,因此相當於0<8,執行內循環,直到i=7的時候,7<8,就執行了8次內循環,比第一次少了一次,
自然每次的最后一位就不用在進行比較,以此類推.