作者talama (披着狼皮的羊)
看板TransCSI
标题Re: [问题]关於乱数的大小排列...
时间Thu May 24 11:54:37 2007
※ 引述《idea1825 (小贝壳)》之铭言:
: 有关10个乱码排列要由大排到小
: 程式是酱的!(如下)
: /*program: */
: #include<stdio.h>
: #include<stdlib.h>
: #include<conio.h>
: #define MAX(a,b)((a>=(b) ? (a) : (b))
: int main()
: {
: int i,x[10],k,a,b=9;
: int sum,sum1;
: for(i=0;i<10;i++)
: {a=rand();
: x[i]=(int)
此处改成 x[i]=(int)a; 就没问题了
遗漏了a;
: printf("x[%i]=",i,x[i]);
: printf("%i \n",a);
: }
但是此程式还可以更好一点
就是让每次执行时出现的乱数都不同
要不然可以试着将修正後执行的程式run一下
使用 srand() 来改变一开始的乱数值
srand() 需要一个参数做为种子
然後我们使用一定会改变的时间来当作种子
所以必须引入 time() 这个函式
而这个函式完整的定义在 time.h
因此必须多include time.h
以下为修正後的程式
/*program: */
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<time.h>
//for time()
int main()
{
int i,x[10],k,a,b=9;
int sum;
srand(time(NULL));
// 改变程式乱数初值,以时间为参数种子
for(i=0;i<10;i++)
{
a=rand(); //产生一个乱数
x[i]=(int)a; //将此乱数指定给 x[i]
printf("x[%i]=",i,x[i]);
printf("%i \n",a);
}
while(b!=0)
{
sum=0;
for(i=0;i<=b-1;i++)
{
if (x[i]>x[i+1])
{
sum=x[i];
x[i]=x[i+1];
x[i+1]=
sum;
sum=i;
}
}
//这段排序的程式 我有些小想法
//就是反正sum只是用来 判断的一个关键值
//就算暂时用来做暂存的空间也没关系
b=sum;
}
for(i=0;i<10;i++)
printf("%d ",x[i]);
system("pause");
return(0);
}
--
※ 编辑: talama 来自: 123.193.206.232 (05/24 12:02)
1F:推 idea1825:谢谢^^写的粉详细!!我明白了!! 05/25 18:23