匿名使用者
匿名使用者 發問時間: 電腦與網際網路程式設計 · 9 年前

C語言-氣泡排序法程式問題!!

有關於排序法的問題請教:

1. 要怎麼將原本的6個數,更改成為10個數 ,並且輸入2~10個數 內都能進行大小排序?? (使用scanf讓user在程式執行過程輸入數字,數字間用","分開,按下Enter後將數字從小排到大輸出).

2. 承(1),將數量更改為n個數 .

程式碼如下:

#include <stdio.h>

#include <stdlib.h>int main(void)

{

int i,j,tmp;

int data[6]={};

printf("Input Data: ");

scanf("%d %d %d %d %d %d",&data[0],&data[1],&data[2],&data[3],&data[4],&data[5]);

printf("原始資料 : \n");

for (i=0;i<6;i++)

printf("%3d",data[i]);

printf("\n");

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

{

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

{

if (data[j]>data[j+1])

{

tmp=data[j];

data[j]=data[j+1];

data[j+1]=tmp;

}

}

}

printf("排序結果 : ");

for (i=0;i<6;i++)

printf("%3d",data[i]);

printf("\n");

system("pause");

return 0;

}

1 個解答

評分
  • 9 年前
    最佳解答

    #include <stdio.h>

    #include <stdlib.h>

    int main(void){

    int i,j,k=0,tmp;

    int data[100]={};

    char x;

    printf("Input Data: ");

    do{

    scanf("%d%c",data+k++,&x);

    }while(x!='\n');

    printf("原始資料 : \n");

    for (i=0;i<k;i++)printf("%3d",data[i]);

    printf("\n");

    for (i=k-1;i>0;i--){

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

    if(data[j]>data[j+1]){

    tmp=data[j];

    data[j]=data[j+1];

    data[j+1]=tmp;

    }

    }

    }

    printf("排序結果 : ");

    for(i=0;i<k;i++)printf("%3d",data[i]);

    printf("\n");

    system("pause");

    return 0;

    }

    參考資料: 自己
還有問題?馬上發問,尋求解答。