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

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

數學太差了,完全看不懂

數學太差了,完全看不懂

正在回答

2 回答

#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("%1.2f, ", arr[i]); ?//%1.2f表示小數點前一位,小數點后精確到兩位

? ? ? ? else

? ? ? ? ? ? printf("%1.2f", arr[i]); ? ?//%1.2f表示小數點前一位,小數點后精確到兩位

? ? }

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

? ? {

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

? ? ? ? {

? ? ? ? ? ? if( arr[j]>arr[j+1]) ? ? ?//當前面的數比后面的數大時

? ? ? ? ? ? {

? ? ? ? ? ? ? ? double temp; ? ?//定義臨時變量temp

? ? ? ? ? ? ? ? temp=arr[j];//將前面的數賦值給temp

? ? ? ? ? ? ? ? arr[j]=arr[j+1]; ? ? ? ? ? ? //前后之數顛倒位置

? ? ? ? ? ? ? ? arr[j+1]=temp;//將較大的數放在后面 ? ?

? ? ? ? ? ? } ? ? ? ? ? ? ? ??

? ? ? ? } ? ? ? ? ? ? ? ?

? ? }

? ? printf("\n************排隊后*************\n");

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

? ? {

? ? ? ? if(i != 9) ??

? ? ? ? ? ? printf("%1.2f, ", arr[i]); ?//%1.2f表示小數點前一位,小數點后精確到兩位 ? ??

? ? ? ? else

? ? ? ? ? ? printf("%1.2f", arr[i]); ? ?//%1.2f表示小數點前一位,小數點后精確到兩位

? ? }

? ? return 0; ? ?

}


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

斑爺K 提問者

非常感謝!
2018-08-11 回復 有任何疑惑可以回復我~

前后兩個for循環是可以不用if的,直接可以循環printf。 ? ? 關鍵的是中間嵌套式2層for循環,開始j=0,里面if條件arr[0]>arr[0+1]大于小于號相當于從小還是從大開始排序。if里面的賦值自然就是數組元素的前后調換,從小到大排序 ?2(元素0)>1(元素1) ?就把元素0賦元素1的值,temp在第一列優先賦值,在第一列的緣故temp賦的是 ?元素0賦元素1的值之前。 ? 為什么用兩層for呢。 一層for循環的話只能夠對比前一個元素的大小。4,3,2,1就只能排序成3,2,1,4。只能吧元素0推到最后。 兩層for就能夠反復對比,還有把 for(j=0;j<=i;j++)里面換成j<=8結果都一樣。為什么不是i=9。 ? 因為第一輪對比就能把最大的值推到最后面。

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

固化劑

回答很nice了 謝謝
2018-08-06 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消
C語言入門
  • 參與學習       926905    人
  • 解答問題       21532    個

C語言入門視頻教程,帶你進入編程世界的必修課-C語言

進入課程

數學太差了,完全看不懂

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

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

幫助反饋 APP下載

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

公眾號

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