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

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

關于c語言中冒泡排序的一個小問題。

關于c語言中冒泡排序的一個小問題。

C C++
慕粉1600176492 2016-11-14 21:10:33
#include"stdio.h"#define N 10?int main()?{? float a[N]={1.78,1.77,1.82,1.79,1.85,1.75,1.86,1.77,1.81,1.80};? int i,j;? for(i=N-1;i>=0;i--)? {? for(j=0;j<i;j++) //如果在該行for語句中的j<i改為j<=i,則輸出的數全變成0.0了。 請問為什么呢 ?? { ? ? ? ? ? ? ? ? ? ? ? ?//和自身比較的話不就連if的條件都沒滿足嗎,那就相當于沒有執行if里面的語句,為什么? if(a[j]>a[j+1]) //會出現這樣的情況呢?? {? a[i]+=a[j];? a[j]=a[i]-a[j];? a[i]-=a[j];? ? ?} }? }? for(i=0;i<N;i++)? {? printf("%6.2f",a[i]);? }? putchar('\n');? return 0;}?
查看完整描述

3 回答

已采納
?
望遠

TA貢獻1017條經驗 獲得超1032個贊

a[i]+=a[j];
??a[j]=a[i]-a[j];
??a[i]-=a[j];

這是你交換兩個數據的代碼塊,就是因為這種加減運算的方法所以當j==i時數組元素全是0,你可以自己推一推。

?temp=a[j];
??a[j]=a[i];
??a[i]=temp;

改成這樣就行了。

查看完整回答
反對 回復 2016-11-14
  • 慕粉1600176492
    慕粉1600176492
    #include"stdio.h" #define N 10 int main() { float a[N]={1.78,1.77,1.82,1.79,1.85,1.75,1.86,1.77,1.81,1.80}; int i,j,temp; for(i=N-1;i>=0;i--) { for(j=0;j<i;j++) //如果在該行for語句中的j<i改為j<=i,則輸出的數全變成0.0了。 請問為什么呢 ? { //和自身比較的話不就連if的條件都沒滿足嗎,那就相當于沒有執行if里面的語句,為什么 if(a[j]>a[j+1]) //會出現這樣的情況呢? { temp=a[j]; a[j]=a[i]; a[i]=temp; } } } for(i=0;i<N;i++) { printf("%6.2f",a[i]); } putchar('\n'); return 0; } 改完了以后,結果全變成了1.00。
  • 慕粉1600176492
    慕粉1600176492
    結果只是從0.0全變成了1.0
  • 慕粉1600176492
    慕粉1600176492
    請無視我的第一個回復。
點擊展開后面11
  • 3 回答
  • 0 關注
  • 1647 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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