English Deutsch Français Italiano Español Português 繁體中文 Bahasa Indonesia Tiếng Việt ภาษาไทย
所有分類

試撰寫一支程式並畫出流程圖:使用者輸入任意十個正整數,根據由小到大的整數的值排列整數的位置。例如:

使用者輸入十個正整數
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 電腦與網際網路 程式設計

6 個解答

#include

void main(void)
{
int array[10];
int arrayCopy[10];
int tmp;
cout<<"Please input 10 integer"< for(int i=0;i<10;i++)
{
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 n=0;n<10;n++)
{
for(int m=0;m<10;m++)
{
if(array[n]==arrayCopy[m])
{
cout< }
}
}
cout< for(int l=0;l<10;l++)
{
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
using namespace std;
int main()
{
const int NumOfInput = 10;
map MyMap;
istream_iterator iss(cin);
int i = 1;
while(i <= NumOfInput ){
MyMap.insert( make_pair(*iss, i++) );
if ( i != NumOfInput )
++iss;
}
for(map::iterator it = MyMap.begin(); it!= MyMap.end(); ++it)
cout << it->second << ", ";
cout << endl;
return 0;
}
結果:
輸入 12 78 22 45 69 97 21 3 56 77
得到 8, 1, 7, 3, 4, 9, 5, 2, 6,

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 if(data1[j] swap(&data1[i],&data1[min]);
}

for(int b=0;b cout< }
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 printf("%d\n", T[N-1].B);

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

fedest.com, questions and answers