試撰寫一支程式並畫出流程圖:使用者輸入任意十個正整數,根據由小到大的整數的值排列整數的位置。例如:
使用者輸入十個正整數
12, 78, 22, 45, 69, 97, 21, 3, 56, 77
將這10個正整數存放到一個陣列中
A[1] A[2] A[3] A[4] A[5] A[6] A[7] A[8] A[9] A[10]
12 78 22 45 69 97 21 3 56 77
程式應該輸出
8, 1, 7, 3, 4, 9, 5, 10, 2, 6
因為
A[8]=3最小
A[1]=12次小
A[7]=21第三小
…以此類推
2006-07-12 19:53:29 · 6 個解答 · 發問者 Chucky 3 in 電腦與網際網路 ➔ 程式設計
#include
void main(void)
{
int array[10];
int arrayCopy[10];
int tmp;
cout<<"Please input 10 integer"<
{
cout<
cin>>array[i];
arrayCopy[i]=array[i];
}
for(int j=0;j<9;j++)
{
for(int k=j+1;k<10;k++)
{
if(array[j]>array[k])
{
tmp=array[j];
array[j]=array[k];
array[k]=tmp;
}
}
}
cout<<"Output:"<
{
for(int m=0;m<10;m++)
{
if(array[n]==arrayCopy[m])
{
cout<
}
}
cout<
{
cout<
cout<
}
/*
Please input 10 integer
1:12
2:78
3:22
4:45
5:69
6:97
7:21
8:3
9:56
10:77
Output:
8 1 7 3 4 9 5 10 2 6
3 12 21 22 45 56 69 77 78 97
Press any key to continue
*/
2006-07-13 11:07:00 · answer #1 · answered by ? 5 · 0⤊ 0⤋
阿... 這個不是用 bubble sort 就可以顯示出來了嗎?? ^^
2006-07-13 16:25:00 · answer #2 · answered by anniewen0926 2 · 0⤊ 0⤋
#include
#include
#include
2006-07-13 10:47:52 · answer #3 · answered by av 2 · 0⤊ 0⤋
#include
#include
#define max 9
int data[9]={100,20,3,40,5,60,7,80,10};
void Selectionsort(int data1[],int n);
void swap(int *x,int *y);
int main()
{
Selectionsort(data,max);
//system("PAUSE");
return 0;
}
void Selectionsort(int data1[],int n)
{
int i,j;
int min;
for(i=0;i
min=i;
for(j=i+1;j
}
for(int b=0;b
void swap(int *x,int *y)
{
int temp;
temp=*x;
*x=*y;
*y=temp;
}
2006-07-13 04:33:50 · answer #4 · answered by A_D_K 1 · 0⤊ 0⤋
可是會有錯誤耶?
error C2664: 'qsort' : cannot convert parameter 4 from 'int (int2 *,int2 *)' to 'int (__cdecl *)(const void *,const void *)'
None of the functions with this name in scope match the target type
Error executing cl.exe.
還有我並不是為了教作業,純粹要學習。
2006-07-13 14:04:16 補充:
A_D_K,我的程式要求是要輸入十個數字在由小到大排他陣列的位子,不是初始給一推值再去排。
2006-07-13 14:18:55 補充:
請問一下Jacob Lee先生(小姐),可以解釋一下程式嗎?我看不太懂耶!為什麼typedef後面可以使用結構資料型態struct?還有為甚麼程式改了後還是一樣有error呢?謝謝!
2006-07-13 22:53:06 補充:
error C2664: 'qsort' : cannot convert parameter 4 from 'int (void *,void *)' to 'int (__cdecl *)(const void *,const void *)'
None of the functions with this name in scope match the target type
Error executing cl.exe.
可以問一下我哪裡有用錯嗎?你可以跑,為甚麼我的不行?謝謝你囉!
2006-07-13 22:55:27 補充:
TO:恩恩的媽
題目要求的不是數字大小排列,是數字對應的陣列排列出來。
2006-07-14 09:15:24 補充:
Jacob Lee,編譯成功了,感謝你!過跟我題目要求不一樣耶!我是希望使用者隨意輸入十個數字,然後在依據他陣列位子排大小,而不是在程式碼Key數字。
2006-07-14 13:03:02 補充:
Jacob Lee,非常感謝你囉!目前還正在學習當中,可能會蠻常上知識家問問題吧,在時在貴請大大指導囉!
2006-07-13 03:52:26 · answer #5 · answered by Chucky 3 · 0⤊ 0⤋
有一點點小難,所以,就送你程式啦!
希望這個做法沒有違反題目的〝一個陣列〞和從 A[1] ~ A[10]。
其它應該都符合啦!
#include
#include
#define N 10
typedef struct {int A; int B; } int2;
int cmp(int2 *a, int2 *b)
{ return a->A - b->A;}
int main()
{ int i;
int2 T[N];
T[0].A = 12, T[1].A = 78, T[2].A = 22, T[3].A = 45, T[4].A = 69,
T[5].A = 97, T[6].A = 21, T[7].A = 3, T[8].A = 56, T[9].A = 77;
for (i=0; i
qsort(T, N, sizeof(int2), cmp);
for (i=0; i
return 0;
}
加油囉! 你若不懂,就拿去交作業,很可能會死喔!
因為裡面用了5個通常初學者不會用的東東:
typedef
struct
qsort
T[].A
a -> A
把它們都學起來,它們就是你的!!
加油! ^_^
2006-07-13 12:18:39 補充:
那是要看 compiler 的宣告和檢查方式。改成這樣應該沒有 compiler 會 complain 了! ^_^int cmp(void *a, void *b){ return ((int2*)a)->A - ((int2*)b)->A;}不是作業的話,那您真的是有心學啊!後生可畏!加油!加油!
2006-07-13 22:48:31 補充:
typedef 後本來就可以這樣用啊!
去看一下書上 typedef 的用法。
程式我都跑過才 post 上去的。
你至少要告訴我錯誤信息吧!?
2006-07-14 00:28:28 補充:
把
int cmp(void *a, void *b)
改成
int cmp(const void *a, const void *b)
2006-07-14 02:40:32 補充:
有的 compiler 會自動轉型,有的不會。
各有優缺點。
有的認定 const void 和 void 的不同叫沒關係,有的是警告,有的是錯誤。
2006-07-14 12:43:50 補充:
我真的被你列了2次同樣的東東給搞忘了你寫了這句在前面:〝使用者輸入十個正整數〞。
不然,我是不 hard code 值的!
我當時以為你是要交作業,是你要老師要求要 hard copy 的,所以才寫成那樣子給你。
我最習慣的是亂數,再來是寫在命令後面,如:
test 12 35 42 53 3 5 9 12 34
再次是由檔案輸入。
我的確不常寫執行時由鍵盤輸入的方法。
沒關係,題目看錯就是我的錯。
2006-07-12 21:45:48 · answer #6 · answered by ? 7 · 0⤊ 0⤋