在1~10的整数范围随机5个不重复的整数
思路就是先随机5个数,写入一个数组。然后要做的就是检查这个数组是否满足5个数都不重复。如果重复就再随机出5个数写入数组。于是问题转换为判断一个数组里的元素是否重复的问题了。我的办法就是轮流比较。需要小注意一下的是第一个数字要和第二个比较,和自己比较就没有意义了。
代码如下。我知道这不是最优解,但至少这是我的原创解。
#include<stdio.h> #include<stdlib.h> #include<time.h> int main() { int i; int j = 0; int n = 0; int k = 0; int flag = 0; srand(time(NULL)); int b[5]={0}; while(1) { i = rand()%10+1; b[j] = i; j++; if(j>5) { flag = 1; for(n =0; n < 5; ++n) for(k = n+1; k < 5; ++k) if(b[k] == b [n]) { flag = 0; j = 0; } } if(flag ==1) { j = 0; break; } } for(j=0; j < 5; j++) printf("%d ",b[j]); }