| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2088 人关注过本帖
标题:在数组中存入15个由随机函数产生的0到29之间的互不重复的整数
只看楼主 加入收藏
wxz11191975
Rank: 1
等 级:新手上路
帖 子:98
专家分:0
注 册:2011-6-20
结帖率:85.29%
收藏
 问题点数:0 回复次数:12 
在数组中存入15个由随机函数产生的0到29之间的互不重复的整数
#include <stdio.h>
#include <stdlib.h>

#define N 15

void getnumber(int *s,int x)
{int i;
 s[N]=0;
   for(i=0;i<N;i++)
   {x=rand()%30;
     { if(s[i]!=x) s[i]=x;}}
}

void arrout(int *s)
{int i;
 for(i=0;i<N;i++) printf("%5d",s[i]);
  printf("\n");
}

main()
{int x, a[N];
 getnumber(a,x);
  arrout(a);
  system("PAUSE");   
  return 0;
 }
数组是产生了,可是是重复的,如何改?
搜索更多相关主题的帖子: include 
2011-07-03 23:26
oszc
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:111
专家分:154
注 册:2011-4-15
收藏
得分:0 
在编写一个函数,把一个个数值都传进去比较
也可以用二叉树去除冗余比较快速

[ 本帖最后由 oszc 于 2011-7-4 00:19 编辑 ]
2011-07-04 00:17
ligang222222
Rank: 2
等 级:论坛游民
帖 子:4
专家分:19
注 册:2011-6-24
收藏
得分:0 
void getnumber(int *s,int x)
{
 int mark =0;
 s[N]=0;
 s[0]=rand()%30;//为s[0]赋值,它是第一个数,没有重复
 for(int i=1;i<N; )
 {
     
     s[i] = rand()%30;//为后面的组员赋值
     for(int j=0; j<i;)
     {
         if(s[i] == s[j]) //如果当前组员和前面的有重复,标记mark为1
         {
             mark = 1;
             break;
         }
         else
             j= j+1;//如果当前组员没有和前面组员重复
     }
     if(mark ==1)//如果当前组员与前面的有重复,重新赋值当前组员
     {
         mark =0;
         continue;
     }
     else //如果当前组员没有与前面组员重复,为下一个组员赋值
     {
         i++;
         mark =0;
     }
 }
 
}
2011-07-04 10:20
ouyangouyang
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:273
专家分:579
注 册:2009-10-8
收藏
得分:0 
#include <stdio.h>
#include <stdlib.h>
#include"time.h"
#define N 15

void getnumber(int *s,int x)
{int i,j;
s[N]=0;
srand(time(NULL));
   for(i=0;i<N;i++)
   {
    x=rand()%30;
    if(i>0)
       {
    for(j=0;j<i;j++)
       {
        if(s[j]==x)
        {
           x=rand()%30;
           j=0;
        }
       }
       }
    s[i]=x;

     }
}

void arrout(int *s)
{int i;
for(i=0;i<N;i++) printf("%5d",s[i]);
  printf("\n");
}

main()
{int x, a[N];
getnumber(a,x);
  arrout(a);
  system("pause");
}
;哥挂科了,哎杯具

多少恨, 昨夜梦魂中。 还似旧时游上苑, 车如流水马如龙; 花月正春风!
2011-07-04 10:42
hjywyj
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:3
帖 子:1114
专家分:2611
注 册:2010-4-14
收藏
得分:0 
程序代码:
#include<stdio.h>
#include<time.h>
#include<stdlib.h>
main()
{int j,a[15],p,i=0;
srand((unsigned)time(NULL));
for(i=0;i<15;i++)
{p=rand()%30;
for(j=0;j<i;j++)
if(p==a[j])
break;
if(j>=i)
a[i]=p;
else{i--;
continue;}}
for(i=0;i<15;i++)
printf("%5d",a[i]);
system("pause");
}
仅供参考!
2011-07-04 17:55
zhanhb
Rank: 2
等 级:论坛游民
帖 子:29
专家分:70
注 册:2010-12-21
收藏
得分:0 
for(i=0;i<15;++i)a[i]=rand()%(30-i);
for(i=15;i--;)for(j=i;j--;)if(a[j]<=a[i])++a[i];
这样行不?
2011-07-05 06:49
ouyangouyang
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:273
专家分:579
注 册:2009-10-8
收藏
得分:0 
for(i=0;i<15;++i)a[i]=rand()%(30-i);
有道理

多少恨, 昨夜梦魂中。 还似旧时游上苑, 车如流水马如龙; 花月正春风!
2011-07-05 19:02
loveshuang
Rank: 9Rank: 9Rank: 9
来 自:湖北武汉
等 级:蜘蛛侠
帖 子:270
专家分:1198
注 册:2010-11-14
收藏
得分:0 
         可以边生成随机数边用插入排序,这样从平均看的话可以减少时间复杂度。
2011-07-05 19:12
wxz11191975
Rank: 1
等 级:新手上路
帖 子:98
专家分:0
注 册:2011-6-20
收藏
得分:0 
回复 6楼 zhanhb
谢谢,稍微修改一下以后就行的
第一次看到 s[i]=rand()%(20-i);这样的用法,呵呵:)
我还没有学到用“time.h"和那个什么用到NULL的命令,所以只看懂了你的办法,改了一下以后就行了。:)你看:
#include <stdio.h>
#include <stdlib.h>

#define N 15

void getnumber(int *s)
{int i,j;
 s[N]=0;
   for(i=0;i<N;i++)
  s[i]=rand()%(20-i);
  for(i=N;i--;)
  for(j=i;j--;)
  if(s[j]<=s[i])++s[i];
}

void arrout(int *s)
{int i;
 for(i=0;i<N;i++) printf("%5d",s[i]);
  printf("\n");
}

main()
{int a[N];
 getnumber(a);
  arrout(a);
  system("PAUSE");   
  return 0;
 }


[ 本帖最后由 wxz11191975 于 2011-7-5 19:23 编辑 ]
2011-07-05 19:20
依然小P孩
Rank: 1
等 级:新手上路
帖 子:8
专家分:7
注 册:2011-4-29
收藏
得分:0 
回复 7楼 ouyangouyang
有什麽道理啊,那樣隨機出的數的範圍不久變小了啊;人家題目要的是所有隨機出的範圍全是0-29
2011-07-05 20:04
快速回复:在数组中存入15个由随机函数产生的0到29之间的互不重复的整数
数据加载中...
 
   



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

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