課程
/后端開發(fā)
/C
/C語言入門
數(shù)學(xué)太差了,完全看不懂
2018-07-15
源自:C語言入門 6-5
正在回答
#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("%1.2f, ", arr[i]); ?//%1.2f表示小數(shù)點(diǎn)前一位,小數(shù)點(diǎn)后精確到兩位
? ? ? ? else
? ? ? ? ? ? printf("%1.2f", arr[i]); ? ?//%1.2f表示小數(shù)點(diǎn)前一位,小數(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");
? ? ? ? ? ? printf("%1.2f, ", arr[i]); ?//%1.2f表示小數(shù)點(diǎn)前一位,小數(shù)點(diǎn)后精確到兩位 ? ??
? ? return 0; ? ?
}
斑爺K 提問者
前后兩個(gè)for循環(huán)是可以不用if的,直接可以循環(huán)printf。 ? ? 關(guān)鍵的是中間嵌套式2層for循環(huán),開始j=0,里面if條件arr[0]>arr[0+1]大于小于號(hào)相當(dāng)于從小還是從大開始排序。if里面的賦值自然就是數(shù)組元素的前后調(diào)換,從小到大排序 ?2(元素0)>1(元素1) ?就把元素0賦元素1的值,temp在第一列優(yōu)先賦值,在第一列的緣故temp賦的是 ?元素0賦元素1的值之前。 ? 為什么用兩層for呢。 一層for循環(huán)的話只能夠?qū)Ρ惹耙粋€(gè)元素的大小。4,3,2,1就只能排序成3,2,1,4。只能吧元素0推到最后。 兩層for就能夠反復(fù)對(duì)比,還有把 for(j=0;j<=i;j++)里面換成j<=8結(jié)果都一樣。為什么不是i=9。 ? 因?yàn)榈谝惠唽?duì)比就能把最大的值推到最后面。
固化劑
舉報(bào)
C語言入門視頻教程,帶你進(jìn)入編程世界的必修課-C語言
3 回答完全看不懂。。
3 回答完全看不懂啊
2 回答這個(gè)題完全看不懂
3 回答完全不懂啊
2 回答代碼完全不懂
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號(hào)-11 京公網(wǎng)安備11010802030151號(hào)
購課補(bǔ)貼聯(lián)系客服咨詢優(yōu)惠詳情
慕課網(wǎng)APP您的移動(dòng)學(xué)習(xí)伙伴
掃描二維碼關(guān)注慕課網(wǎng)微信公眾號(hào)
2018-07-19
#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("%1.2f, ", arr[i]); ?//%1.2f表示小數(shù)點(diǎn)前一位,小數(shù)點(diǎn)后精確到兩位
? ? ? ? else
? ? ? ? ? ? printf("%1.2f", arr[i]); ? ?//%1.2f表示小數(shù)點(diǎn)前一位,小數(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("%1.2f, ", arr[i]); ?//%1.2f表示小數(shù)點(diǎn)前一位,小數(shù)點(diǎn)后精確到兩位 ? ??
? ? ? ? else
? ? ? ? ? ? printf("%1.2f", arr[i]); ? ?//%1.2f表示小數(shù)點(diǎn)前一位,小數(shù)點(diǎn)后精確到兩位
? ? }
? ? return 0; ? ?
}
2018-07-26
前后兩個(gè)for循環(huán)是可以不用if的,直接可以循環(huán)printf。 ? ? 關(guān)鍵的是中間嵌套式2層for循環(huán),開始j=0,里面if條件arr[0]>arr[0+1]大于小于號(hào)相當(dāng)于從小還是從大開始排序。if里面的賦值自然就是數(shù)組元素的前后調(diào)換,從小到大排序 ?2(元素0)>1(元素1) ?就把元素0賦元素1的值,temp在第一列優(yōu)先賦值,在第一列的緣故temp賦的是 ?元素0賦元素1的值之前。 ? 為什么用兩層for呢。 一層for循環(huán)的話只能夠?qū)Ρ惹耙粋€(gè)元素的大小。4,3,2,1就只能排序成3,2,1,4。只能吧元素0推到最后。 兩層for就能夠反復(fù)對(duì)比,還有把 for(j=0;j<=i;j++)里面換成j<=8結(jié)果都一樣。為什么不是i=9。 ? 因?yàn)榈谝惠唽?duì)比就能把最大的值推到最后面。