請(qǐng)問,這個(gè)外層的for循環(huán),把i--改成i++就運(yùn)行失敗了,為什么呢?我覺得只要j<=i這個(gè)滿足了,i自加還是自減沒什么意義啊。求大佬解答,指出我的錯(cuò)誤
#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;???
}
2019-10-03
你for(i=8;i>=0;i++),i永遠(yuǎn)大于等于0,無線循環(huán)了,你先去理解一下冒泡排序法再來看這段代碼。
2019-10-23
如果想用自增的話可以這樣寫:
for(i=0; i<9; i++)
? ? {
? ? ? ? for(j=0;j<9-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ù)放在后面? ??
? ? ? ? ? ? }? ? ? ? ? ? ? ? ?
? ? ? ? }? ? ? ? ? ? ? ??
? ? }