正在悠闲地加载

在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]);
}
posted @ 2012-11-26 18:06  仰望星空的耕田人  阅读(824)  评论(0编辑  收藏  举报