找規律 - 推理遊戲

Table of Contents


推 east101010:我寫個c語言程式跑出來的結果也是712是第三位仁兄 11/12 16:28
推 bluehaerts:樓上這位大大 我想看看C的程式 請問可以寄給我嗎 11/12 17:56
→ bluehaerts:C的新手 不知道 要從哪下手 11/12 17:58

#include <stdio.h>
#include <stdlib.h>
#define SWAP(x,y) {int temp; temp = x; x = y; y = temp;}

int main()
{
int i , j[1001] , a , b ;
for (i = 1 ; i <= 1000 ; i++)
j[i] = i ;

do
{
for (i = 1 ; i <= 1000 ; i++)
if (i % 3 == 0)
j[i] = 9999 ;
for (a = 1 ; a <= 1000 ; a++)
for (b = 1 ; b <= 1000 ; b++)
if (j[a] < j[b])
SWAP (j[a] , j[b]) ;
} while (j[4] != 9999) ;

for (i = 1 ; i <= 1000 ; i++)
printf ("%d " , j[i]) ;

system ("pause") ;
return 0;
}
我寫的很草率
大概解釋一下流程就是一開始先讓j陣列內第1項到第1000項的值分別設為1~1000
然後每當陣列是3的倍數的項,就設值為9999
接著用泡沫排序由小排到大,
也就是執行第一次的話,從陣列第667項之後的數字都會變成9999
執行第二次的話,從陣列第445項之後的數字都會變成9999
...
...
這步驟就不斷重複
直到第4項的數字也是9999的時候
那就代表前3項是最後沒被我更改為9999的數字
最後再從陣列第1項印到第1000項
印出來會顯示 1 2 712 9999 9999 9999 9999 ... ... 9999

這樣我就知道是哪三個囉
第二題也可以靠寫程式去算出答案
不過我等等要去夜唱了
所以懶得思考哩= = 你可以嘗試寫看看XD

--

All Comments

Donna avatarDonna2008-11-14
我也是想到 泡沫排序 可是沒想到可以這樣應用