| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3834 人关注过本帖
标题:求助一道关于抽签的程序
只看楼主 加入收藏
caojin777
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2008-1-25
收藏
 问题点数:0 回复次数:8 
求助一道关于抽签的程序
最近论坛搞比赛,64个人的淘汰赛,想做个抽签程序把64个人随机分位,思路就是做一个存入1到64数字的数组,然后对其进行随机排序,但是做了几次都错成鬼了,这里向各位高手求教正确的程序代码,谢谢
搜索更多相关主题的帖子: 抽签 数字 随机 
2008-01-25 11:42
devil_v6
Rank: 1
等 级:新手上路
帖 子:86
专家分:0
注 册:2007-10-29
收藏
得分:0 
#include<stdio.h>
#include<stdlib.h>
int main()
{
 int a[64],b[64];
 int i,m,k;
 int count=0;
 for(m=0;m<=63;m++)
     b[m]=0;
 srand((int)time(0));
 for(i=0;i<=63;i++)
         { while(1){   k=(rand()%64);
                       if(b[k]==0)
                         { a[i]=k;
                           b[k]=1;
                           goto gg; /*有什么好的办法解决这个语句没?求助!!*/
                         }
                    }
gg: printf("%d",a[i]);
    printf("   ");
    count=count+1;
    if(count%3==0)printf("\n");/*x为分组数*/
         }
    system("pause");
   }
方法有点笨,就是产生一个0-63的不重复的随机数,然后输出,没想到别的方法,高手们指教一下啊,这个方法速度上肯定是不行的,呵呵,判断重复的那块无用工作的很多,
有更好的办法希望能写出来,学习学习

[[italic] 本帖最后由 devil_v6 于 2008-1-26 10:31 编辑 [/italic]]

2008-01-25 13:08
xianshizhe111
Rank: 1
等 级:新手上路
帖 子:1451
专家分:0
注 册:2007-12-8
收藏
得分:0 
支持一下做出来就是好的(其次才是优化)
如果做不出来(根本也谈不上优化了).
2008-01-25 13:14
happyhuaping
Rank: 1
来 自:粤C
等 级:新手上路
帖 子:4
专家分:0
注 册:2008-1-25
收藏
得分:0 
hao  ~~~wo  ye lai ding yi xia~~~~~~~

。“年轻人,就是冲动啊。冲动可是魔鬼呵!”。
2008-01-25 15:07
静夜思
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:济南的冬天
等 级:管理员
威 望:11
帖 子:8917
专家分:2567
注 册:2004-3-25
收藏
得分:0 
原帖由 [bold][underline]devil_v6[/underline][/bold] 于 2008-1-25 13:08 发表 [url=http://bbs.bccn.net/redirect.php?goto=findpost&pid=1187667&ptid=198677][/url]
#include<stdio.h>
#include<stdlib.h>
int main()
{
int a[64],b[64];
int i,m,k;
int count=0;
   for(m=0;m<=63;m++)
      b[m]=0;



  srand((int)time(0));
  for(i=0;i<=63;i++)


   { while(1){   k=(rand()%64);
                if(b[k]==0)
                  {   a[i]=k;
                      b[k]=1;
                      goto gg;
                  }

             }

  gg: printf("%d",a[i]);
   printf("   ");
   count=count+1;
   if(count%3==0)printf("\n");/*x为分组数*/
    }
   system("pause");
   }

发现很多程序的格式混乱了,粘贴的时候是不是标准的格式?记得用tab缩进的话会自动变成4个空格的
2008-01-25 15:12
老鼠头头
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2007-12-11
收藏
得分:0 
goto ~~~~
2008-01-26 01:42
雨中飞燕
Rank: 3Rank: 3
等 级:禁止访问
威 望:8
帖 子:2200
专家分:0
注 册:2007-8-9
收藏
得分:0 
原帖由 [bold][underline]静夜思[/underline][/bold] 于 2008-1-25 15:12 发表 [url=http://bbs.bccn.net/redirect.php?goto=findpost&pid=1187783&ptid=198677][/url]

发现很多程序的格式混乱了,粘贴的时候是不是标准的格式?记得用tab缩进的话会自动变成4个空格的

How can you do that?
2008-01-26 01:48
devil_v6
Rank: 1
等 级:新手上路
帖 子:86
专家分:0
注 册:2007-10-29
收藏
得分:0 
呵呵,格式是很混乱,不好意思,刚开始学,格式还不是太熟悉,另外确实用到了goto语句,我想请教一下,在那个地方有什么别的办法来绕过goto吗,貌似所有的书上都在说慎用goto,所以想换一下,

2008-01-26 10:28
梁小雨
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2016-9-12
收藏
得分:0 
30抽签排序
#include<iostream>
#include<stdlib.h>
#include<time.h>
using namespace std;
int DrawList(int b[],int max_n)//max_n是数组长度
{
    if(max_n==0)
        return 0;        
    int screen_a;
    srand(time(0));
    screen_a=rand()%max_n;
    printf(" %d\t",b[screen_a]);
    for(int i=screen_a;i<max_n;i++)
    {
        b[i]=b[i+1];
    }
    max_n=max_n-1;
    DrawList(b,max_n);
}
int main()
{   
    int a[30]={0};
    int max=30;
    for(int i=0;i<30;i++)
    {
        a[i]=i+1;
        printf("原数组%d\n",a[i]);
    }
    DrawList(a,max);
    return 0;
}
2016-09-12 18:37
快速回复:求助一道关于抽签的程序
数据加载中...
 
   



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

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