作者east101010 (小B)
看板Inference
标题Re: [问题] 找规律
时间Wed Nov 12 21:43:31 2008
推 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
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 123.204.123.177
※ 编辑: east101010 来自: 123.204.123.177 (11/12 21:46)
1F:推 bluehaerts:我也是想到 泡沫排序 可是没想到可以这样应用 11/13 11:37