先定义一个数组,然后用rand()函数生成随机数给数组的每个元素赋值,然后排序。。。这样就完成了。。。希望楼主能够坚持,自己做出来的才是最有成就感的,可能实现的时候逻辑还是不清晰,代码也不是很漂亮,这都是一个必须经历的过程。我当初学语言的时候,也有过花几天写一个很简单的程序。。。由此喜欢编程。。。。不罗嗦了,楼主整理思路,继续调试吧。
#include <stdio.h>#include <stdlib.h>
#include <string.h>
#include <time.h>
void selectsort(int *x, int n) {
int i, j, min,t
for (i = 0i <n - 1i++) {
min = i
for (j = i + 1j <nj++) {
if (*(x + j) <*(x + min)) min = j
}
if (min != i) {
t = *(x + i)
*(x + i) = *(x + min)
*(x + min) = t
}
}
}
void select(int m,int n,int k) {
int num[36],tmp[36],t
char filename[] = "C:\\2011\\随机号码.txt"// 选择你需要的路径
FILE *fp
srand((unsigned)time(NULL))
fp = fopen(filename,"wt")
if(fp == NULL) {
printf("打开文件%s错。\n",filename)
exit(1)
}
for(int i = 0i <k++i) {
for(int j = 1j <= m++j) tmp[j] = j
for(j = 0j <n++j) {
t = (unsigned)rand()%m + 1
if(tmp[t] != 0) {
num[j] = t
tmp[t] = 0
}
else --j
}
selectsort(num,n)
for(j = 0j <n++j) {
fprintf(fp,"%02d ",num[j])
printf("%02d ",num[j])
}
fprintf(fp,"\n")
printf("\n")
}
fclose(fp)
}
int main() {
int m,n,k
printf("被选号码数 : ")
scanf("%d",&m)
printf("可选号码数 : ")
scanf("%d",&n)
printf("所选组数 : ")
scanf("%d",&k)
select(m,n,k)
return 0
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)