為什么這邊是這樣的呢?
#include <stdio.h>
int main()
{
? ? double arr[]={1.78, 1.77, 1.82, 1.79, 1.85, 1.75, 1.86, 1.77, 1.81, 1.80};
? ? int i,j;
? ? printf("\n************排隊(duì)前*************\n");
? ? for(i=0;i<10;i++)
? ? {
? ? ? ? if(i != 9)? ?
? ? ? ? ? ? printf("%.2f, ", arr[i]);? //%.2f表示小數(shù)點(diǎn)后精確到兩位
? ? ? ? else
? ? ? ? ? ? printf("%.2f", arr[i]);? ? //%.2f表示小數(shù)點(diǎn)后精確到兩位
? ? }
? ? for(i=8; i>=0; i--)
? ? {
? ? ? ? for(j=0;j<=i;j++)
? ? ? ? {
? ? ? ? ? ? if(? ? ? arr[j]>arr[j+1]? ? ? )? ? ? //當(dāng)前面的數(shù)比后面的數(shù)大時(shí)
? ? ? ? ? ? {
? ? ? ? ? ? ? ? double temp;? ? //定義臨時(shí)變量temp
? ? ? ? ? ? ?temp=arr[j];? ? ?//將前面的數(shù)賦值給temp
? ? ? ? ? ? ? ? arr[j]=arr[j+1];? ? ? ? ? ? ?//前后之?dāng)?shù)顛倒位置
? ? ? ? ? ? ? arr[j+1]=temp;? ? ? ? ? ? ?//將較大的數(shù)放在后面? ??
? ? ? ? ? ? }? ? ? ? ? ? ? ? ?
? ? ? ? }? ? ? ? ? ? ? ??
? ? }
? ? printf("\n************排隊(duì)后*************\n");
? ? for(i=0;i<10;i++)
? ? {
? ? ? ? if(i != 9)? ?
? ? ? ? ? ? printf("%.2f, ", arr[i]);? //%.2f表示小數(shù)點(diǎn)后精確到兩位? ? ?
? ? ? ? else
? ? ? ? ? ? printf("%.2f", arr[i]);? ? //%.2f表示小數(shù)點(diǎn)后精確到兩位
? ? }
? ? return 0;? ??
}
----------------------------------------------------------------------------------------------------------------
for(i=8; i>=0; i--)
? ? {
? ? ? ? for(j=0;j<=i;j++)
? ? ? ? {
是干嘛的
2019-10-28
最初i=8是,arr[j]最開始是從arr[0]開始循環(huán)的,由于arr[0]是第一位所以上述arr[]中的第十位是arr[9],剛好循環(huán)為arr[j]=arr[8]時(shí),arr[j+1]=arr{8+1]=arr[9]就可以是的上述的十個(gè)數(shù)都與arr[0]排序,在進(jìn)行下一次循環(huán),知道i=0時(shí)才停止,從而使得每一個(gè)書都參與排序進(jìn)而使得十個(gè)數(shù)完全排好序