| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 780 人关注过本帖
标题:做了老半天还是出不来,望大神指点。
只看楼主 加入收藏
a792006252
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2014-5-28
收藏
 问题点数:0 回复次数:7 
做了老半天还是出不来,望大神指点。
谢谢啦

[ 本帖最后由 a792006252 于 2014-5-28 16:31 编辑 ]
2014-05-28 09:06
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
给你一段代码  看看能否对你有所帮助  

程序代码:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <malloc.h>

//程序目的:随机排座位
int main(void)
{
    srand((unsigned)time(NULL));
    int sum=0;
    printf("请输入学生总人数:");
    scanf("%d",&sum);
    int* st=(int*)malloc(sizeof(int)*sum);
    int index=0;
    while(1)
    {
       beg:
        st[index]=rand()%(sum+1);
        if(st[index]==0) goto beg;
        for(int i=0;i<index;i++) if(st[index]==st[i] && index>0) goto beg;
        index++;
        if(index==sum) break;
        
    }
    for(index=0;index<sum;index++) printf(" %d ",st[index]);
    printf("\n");
    free(st);
    return 0;
}

DO IT YOURSELF !
2014-05-28 09:12
忘了_这一切
Rank: 3Rank: 3
来 自:星星
等 级:论坛游侠
威 望:1
帖 子:41
专家分:145
注 册:2014-4-25
收藏
得分:0 
程序代码:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define  N 4

//程序目的:随机分配抽签号
int main(void)
{
    int i,j;
    srand((unsigned)time(NULL));
    int team[N];
    int sequence[N];
    for(i=0;i<N;i++)
    {
        
        while(1)
        {
            sequence[i]=rand()%(N+1);
            team[i]=sequence[i];
            for (j=0;j<i+1;j++)
            {
                if((team[i]==team[j])&&i!=j)
                    break;
                else
                {
                    goto  beg;
                }

            }
            

        }
        beg:
            printf("队伍team[%d]对应的序号是%d\n",i,sequence[i]);
        
    }
    return 0;
}
2014-05-28 13:08
忘了_这一切
Rank: 3Rank: 3
来 自:星星
等 级:论坛游侠
威 望:1
帖 子:41
专家分:145
注 册:2014-4-25
收藏
得分:0 
程序代码:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define  N 5          //设置需要分配抽签号的组为N

//程序目的:随机分配抽签号
int main(void)
{
    int i,j;
    srand((unsigned)time(NULL));
    int team[N];
    int sequence[N];
    for(i=0;i<N;i++)
    {
        beg:
        while(1)
        {
            sequence[i]=rand()%N;    //随机分配抽签号范围在0-N-1
            team[i]=sequence[i];
            for (j=0;j<i+1;j++)     //循环遍历已得到的抽签号
            {
                if((team[i]==team[j])&&i!=j)   //如果现在分配的抽签号与之前分配的抽签号相同,则重新分配
                    goto beg;
                
            }
        
                break;                      //如果现在分配的抽签号与之前分配的抽签号都不相同,则跳出while循环,执行printf函数   
        }
        
            printf("队伍team[%d]对应的序号是%d\n",(i+1),(sequence[i]+1));
        
    }
    return 0;
}

刚才给的代码有很严重的问题,现在这个测试了下发现能实现楼主要求的方法一
2014-05-28 13:51
a792006252
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2014-5-28
收藏
得分:0 
回复 4 楼 忘了 _ 这一切
我测试了,还是有错
2014-05-28 15:01
a792006252
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2014-5-28
收藏
得分:0 
回复 4 楼 忘了 _ 这一切
改了一下,可以用了,那方法二呢?
2014-05-28 15:55
ITCD
Rank: 2
等 级:论坛游民
威 望:2
帖 子:16
专家分:18
注 册:2012-11-26
收藏
得分:0 
方法二:
程序代码:
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#define N  5
int main()
{
  int arr[N]={0},team[N];
  int i=0;
  for(i;i<100;i++)
    arr[i]=i;
  for(i=0;i<N;i++)
  { 
    strand(time(0));
    team[i]=arr[rand()%100];
    printf("%d/n",team[i]);
   }
}

不知道楼主是否能看懂
2014-05-30 20:34
ITCD
Rank: 2
等 级:论坛游民
威 望:2
帖 子:16
专家分:18
注 册:2012-11-26
收藏
得分:0 
程序代码:
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#define N  5
int main()
{
  int arr[N]={0},team[N];
  int i=0;
  for(i;i<100;i++)
    arr[i]=i;
  strand(time(0));
  for(i=0;i<N;i++)
  { 
    team[i]=arr[rand()%100];
    printf("%d/n",team[i]);
   }
}

这个更好,把strand()放到循环外,其它不变
2014-05-30 20:36
快速回复:做了老半天还是出不来,望大神指点。
数据加载中...
 
   



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

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