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;
}
參考資料: 自己