| 网站首页 | 业界新闻 | 小组 | 交易 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
买学问 - 大牛一对一辅导,有问必答买学问 - 专业的付费知识问答平台
共有 360 人关注过本帖
标题:输出10个不重复数
只看楼主 加入收藏
bug娃娃
Rank: 2
等 级:论坛游民
帖 子:89
专家分:20
注 册:2019-3-15
结帖率:94.12%
  已结贴   问题点数:20  回复次数:11   
输出10个不重复数
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
    int i,j,temp,max;
    int a[100];
    printf("随意产生10个随机数\n");
    i = 10;
    j = 0;
    srand(time(NULL));
    while(i != 0)
    {            
        temp = rand()%40;
        a[j] = temp;        
        i--;
    //    printf("%d ",temp);
    }
     srand(1);
    max = a[0];
    for(i = 0;i < 10;i++)
    {
        if(max < a[i])
        {
            max = a[i];
        }
        if(a[i] == a[i + 1])
        {
            a[i] = rand()%(40 - max) + max; //在这个范围内再生成一个,消除重复的数
        }
    }     
    for(i = 0;i < 10;i++)
    {
        printf("%d ",a[i]);
    }
    printf("\n");
    return 0;
}
我想要输出10个不重复的数,但是就是消除不了重复的那些,求指点
2019-04-14 17:06
不懂才问
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:大草原
等 级:贵宾
威 望:29
帖 子:1464
专家分:6573
注 册:2010-7-5
  得分:5 
程序代码:
//实例来源:
//实例功能:
//运行结果描述:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main(void){
    int intArr[10];
    int i=1,j;
    srand( (unsigned)time(NULL) );
    intArr[0]=rand();
    while (i<10){
        int tmp=rand();
        for (j=0;j<10;j++){
            if (intArr[j]!=tmp){
                intArr[i]=tmp;
                i+=1;
                break;
            }
        }
    }
    for (i=0;i<10;i++){
        printf("%d\t",intArr[i]);
    }
    return 0;
}


现学现卖,热乎的……
https://bbs.bccn.net/thread-494086-1-1.html

报告老师,我低头不是因为我在装低调,是你问的问题,我真的不会答,,,
2019-04-14 17:40
bug娃娃
Rank: 2
等 级:论坛游民
帖 子:89
专家分:20
注 册:2019-3-15
  得分:0 
回复 2楼 不懂才问
请问如果我想在某个范围取值的话,是不是直接加上去呢?
2019-04-14 17:44
不懂才问
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:大草原
等 级:贵宾
威 望:29
帖 子:1464
专家分:6573
注 册:2010-7-5
  得分:0 
参见我上面回复的链接中,关于最后我谢谢提醒的部分

报告老师,我低头不是因为我在装低调,是你问的问题,我真的不会答,,,
2019-04-14 19:47
word123
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:13
帖 子:333
专家分:1622
注 册:2014-4-5
  得分:5 
2楼那个程序应该是有问题的,比如对于1 2 2也会存储在数组中,会有重复

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
//#define NUM 10
#define NUM 40
int main()
{
    int i,j,temp;
    int a[100];
    int map[NUM];
    for(i=0;i<NUM;i++){
        map[i] = -1;
    }
    printf("随意产生10个随机数\n");
    j = 0;
    srand(time(NULL));
    //srand(1);
    while(j<10){
        temp = rand()%40;
        if(map[temp]!=-1)continue;
        map[temp] = temp;
        a[j] = temp;
        j = j + 1;
    }
    for(i = 0;i < 10;i++)
    {
        printf("%d ",a[i]);
    }
    printf("\n");
    return 0;
}
2019-04-14 20:30
不懂才问
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:大草原
等 级:贵宾
威 望:29
帖 子:1464
专家分:6573
注 册:2010-7-5
  得分:0 
回复 5楼 word123
程序代码:
//实例来源:
//实例功能:
//运行结果描述:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(void){
    int intArr[10];
    int i=1,j;
    srand( (unsigned)time(NULL) );
    intArr[0]=(int)(rand()/(1.0+RAND_MAX)*15);
    while (i<10){
        int tmp=(int)(rand()/(1.0+RAND_MAX)*15);
        for (j=0;j<10;j++){
            if (intArr[j]!=tmp){
                intArr[i]=tmp;
                i+=1;
                break;
            }
        }
    }
    for (i=0;i<10;i++){
        printf("%d\t",intArr[i]);
    }
    return 0;
}


缩小了生成范围,果然出现问题。再次受教了。谢谢。

附件: 您没有浏览附件的权限,请 登录注册

报告老师,我低头不是因为我在装低调,是你问的问题,我真的不会答,,,
2019-04-15 05:14
lxk1732942
Rank: 6Rank: 6
等 级:侠之大者
威 望:5
帖 子:426
专家分:422
注 册:2018-9-4
  得分:5 
程序代码:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define NUM 10          //要生成的随机数的数量
#define U_LIMIT 39      //随机数上限
#define L_LIMIT 0       //随机数下限

int main(void)
{
    int intArr[NUM];

    srand((unsigned)time(NULL));

    for (size_t i = 0; i < NUM; i++)
    {
        intArr[i] = rand() % (U_LIMIT - L_LIMIT + 1) + L_LIMIT;

        if (!i)
            continue;

        for (size_t j = 0; j < i; j++)
            if (intArr[i] == intArr[j])
            {
                i--;
                break;
            }
    }

    for (size_t i = 0; i < NUM; i++)
        printf("%5d ", intArr[i]);

    return 0;
}
2019-04-15 12:02
bug娃娃
Rank: 2
等 级:论坛游民
帖 子:89
专家分:20
注 册:2019-3-15
  得分:0 
谢谢,大家了
2019-04-15 16:18
bug娃娃
Rank: 2
等 级:论坛游民
帖 子:89
专家分:20
注 册:2019-3-15
  得分:0 
int v = (int)(rand()/(1.0+RAND_MAX)*101);
我不是很明白这个的用法给
2019-04-15 16:30
bug娃娃
Rank: 2
等 级:论坛游民
帖 子:89
专家分:20
注 册:2019-3-15
  得分:0 
跟(int)(101.0*rand()/(RAND_MAX+1.0));的意思是一样的吗?
2019-04-15 16:41







关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.102381 second(s), 8 queries.
Copyright©2004-2019, BCCN.NET, All Rights Reserved