亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

一到循環的“--”就沒思路

for (i = 8; i >= 0; i--)

{

????for (j = 0; j <= i; j++)

???????? if (arr[j]>arr[j + 1]

}?? 這段怎么理解?一共10個數。需要做9組循環比較 所以 i 取8 。每組循環里arr[j] 和arr[j+1] 做比較和交換。

我自己寫的是這個:

#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************排隊前*************\n");
??? for(i=0;i<10;i++)
??? {
??????? if(i != 9)? ?
??????????? printf("%.2f, ", arr[i]);? //%.2f表示小數點后精確到兩位
??????? else
??????????? printf("%.2f", arr[i]);??? //%.2f表示小數點后精確到兩位
??? }
??? for(i=0; i<9; i++)
??? {
??????? for(j=i+1;j<10;j++)
??????? {
??????????? if(????? arr[i] > arr[j]????? )????? //當前面的數比后面的數大時
??????????? {
??????????????? double temp;??? //定義臨時變量temp
??????????????? temp = arr[i];???? //將前面的數賦值給temp
??????????????? arr[i] = arr[j];????????????? //前后之數顛倒位置
??????????????? arr[j] = temp;????????????? //將較大的數放在后面?? ?
??????????? }??????????????? ?
??????? }?????????????? ?
??? }
??? printf("\n************排隊后*************\n");
??? for(i=0;i<10;i++)
??? {
??????? if(i != 9)? ?
??????????? printf("%.2f, ", arr[i]);? //%.2f表示小數點后精確到兩位??? ?
??????? else
??????????? printf("%.2f", arr[i]);??? //%.2f表示小數點后精確到兩位
??? }
??? return 0;?? ?
}

正在回答

1 回答

你的方法也是正確的,只是角度不一樣。

for (i = 8; i >= 0; i--)

{

????for (j = 0; j <= i; j++)

???????? if (arr[j]>arr[j + 1]

}?

外循環每走一次排最大的到右邊,隨著外循環次數的遞增,內循環次數減少(j <= i)


3 回復 有任何疑惑可以回復我~
#1

菜菜狠厲害 提問者

明白了
2019-08-05 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

一到循環的“--”就沒思路

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號