iT邦幫忙

0

泡沫排列問題

  • 分享至 

  • xImage

1.問題:為何程式跑不出來?(有//表示沒有問題)

2.目的:輸入一系列數字,最終由小到大(左而右排列)

3.程式碼

#include <stdio.h>
main()
{
	int i;//
	int k;//
	printf("請輸入取值範圍\n");//
	scanf("%d", &k);//
	int a[k];//
	int b;//
	
	printf("請輸入%d個數\n", k);//
	for(i = 0; i <= k - 1; i++)//
		scanf("%d", &a[i]);//
		
	for(i = k - 1; i >= 0; i--)
		for(i = 0; i <= k - 1; i++)
		{
			
		
			if(a[i] > a[i + 1])
			{
				b = a[i];	
				a[i] = a[i + 1];
				a[i + 1] = b;	
			
			}
				
		}
	
	for(i = 0; i <= k - 1; i++)
		printf("%d\n", a[i]);		
}

4.顯示
https://ithelp.ithome.com.tw/upload/images/20200709/20128427g5CbaZFOPi.png

看更多先前的討論...收起先前的討論...
你寫 for loop 的習慣不好,最好是 {} 包起來, 別用 沒有 {} , 的一行特性,這是C以前的歷史殘留問題. 你修改看看.
話說python也沒短 { } 做區段,硬是要用 : 跟縮排來分段.......

題外話了別見笑
一下 i-- 一下 i++ 已經無窮迴圈了吧
我覺得還是去買本書來學吧,不要東找西找一些奇怪的題庫,這些題目不是很好,省了點錢,浪費掉一堆時間,也把銳氣給磨掉了.
https://www.programmingsimplified.com/c/source-code/c-program-bubble-sort
憤怒鳥 iT邦新手 5 級 ‧ 2020-07-09 17:12:41 檢舉
for(i = k - 1; i >= 0; i--)
for(i = 0; i <= k - 1; i++){
if(a[i] > a[i + 1]){
b = a[i];
a[i] = a[i + 1];
a[i + 1] = b;

}

}
是這樣嗎?
但是仍然跑不出來.
你外層迴圈 i-- 內層迴圈 i++
你認為跑得出來嗎
多定義一個變數不會多多少記憶體
屠豬士大只是提醒你的 coding style 習慣很差而已
這是用 內外兩層 loop 啊, 你應該先把 loop 基本怎樣用, 然後用會 兩層 loop,
就是九九乘法表 寫出來, 再來學 bubble sort.
另外,樓上的 listennn08 , 我不是 豬大 啦.
寶寶心裡苦,但寶寶要說.
抱歉抱歉 已經修改了XD
https://www.itread01.com/content/1545292448.html

https://ithelp.ithome.com.tw/articles/10192232
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

0
海綿寶寶
iT邦大神 1 級 ‧ 2020-07-09 17:58:31
for(i = k - 1; i >= 0; i--)
		for(i = 0; i <= k - 1; i++)
		{
			
		
			if(a[i] > a[i + 1])
			{
				b = a[i];	
				a[i] = a[i + 1];
				a[i + 1] = b;	
			
			}
				
		}
        
        for(i = 0; i <= k - 1; i++)
		printf("%d\n", a[i]);	

改成

    //前面要加宣告 int j;
    for (i = 0; i < k-1 ; i++) {
		for(j = 0 ; j < k - i - 1; j++) {
			if (a[j] > a[j + 1]) {
				b = a[j];	
				a[j] = a[j + 1];
				a[j + 1] = b;	
			}
		}
	}
    
    for(i = 0; i <= k - 1; i++)
		printf("%d ", a[i]);	

我要發表回答

立即登入回答