| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 418 人关注过本帖
标题:关于随机选题的程序
只看楼主 加入收藏
zhaodashi
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2011-6-14
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:6 
关于随机选题的程序
下面这个哪有错啊,怎么有错误,请各位高手帮忙,假如有更好的源代码,那就更好了。谢谢!!!!!!!!!!!
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#define  MaxN 1001 //最大课程数
#define  M    3    //题目数

bool Hash[MaxN];

int cmp(const void *a,const void *b)
{
    return *(int *)a-*(int *)b;
}

int main()
{
    int  N,i;
    int  Pro_No[M];
    char Stu_No[21];
    FILE *f;

    scanf("%d",&N);//题目个数n
    for(i=1; i<=N; ++i)
    {
        Hash[i]=true;
    }
    scanf("%s",Stu_No);//学号

    i=0;
    while(i<M)
    {
        if(Hash[(rand()%N)+1])
        {
            Hash[(rand()%N)+1]=false;
            Pro_No[i]=(rand()%N)+1;
            ++i;
        }
    }//生成M个不重复的题号

    qsort(Pro_No,M,sizeof(int),cmp);//排序

    /*写入*/
    if((f=fopen("d:\\ProblemNo.txt","w"))==NULL)
    {
        printf("File open error!\n");
        return 0;
    }
    else
    {
        for(i=0; i<M; ++i)
        {
            fprintf(f,"%d\n",Pro_No[i]);
        }
    }
    fclose(f);

    return 0;
}

[ 本帖最后由 zhaodashi 于 2011-6-15 15:59 编辑 ]
搜索更多相关主题的帖子: include 源代码 return 课程 
2011-06-14 14:46
laoyang103
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:内蒙古包头
等 级:贵宾
威 望:19
帖 子:3082
专家分:11056
注 册:2010-5-22
收藏
得分:10 
程序代码:
#include <stdio.h>
#include <stdlib.h>
#define  MaxN 1001 //最大课程数
#define  M    3    //题目数

bool Hash[MaxN];

int cmp(const void *a,const void *b)
{
    return *(int *)a-*(int *)b;
}

int main()
{
    int  N,i;
    int  Pro_No[M];
    char Stu_No[21];
    FILE *f;

    scanf("%d",&N);//题目个数n
    for(i=1; i<=N; ++i)
    {
        Hash[i]=true;
    }
    getchar();
    scanf("%s",Stu_No);//学号

    i=0;
    int count = 0;
    while(i<M)
    {
        int temp = rand()%N;
        if(false == Hash[temp])
            continue;
        else
        {
            Hash[temp] = false;
            Pro_No[count++] = temp;
            i++;
        }
    }//生成M个不重复的题号

    qsort(Pro_No,M,sizeof(int),cmp);//排序

    /*写入*/
    if((f=fopen("d:\\ProblemNo.txt","w"))==NULL)
    {
        printf("File open error!\n");
        return 0;
    }
    else
    {
        fprintf(f,"%s\n",Stu_No);
        for(i=0; i<M; ++i)
        {
            fprintf(f,"%d ",Pro_No[i]);
        }
    }
    fclose(f);

    return 0;
} 
图片附件: 游客没有浏览图片的权限,请 登录注册


                                         
===========深入<----------------->浅出============
2011-06-14 15:05
bccn_2012
Rank: 6Rank: 6
等 级:侠之大者
帖 子:158
专家分:447
注 册:2011-5-14
收藏
得分:10 
程序代码:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define  MaxN 1001 //最大课程数
#define  M    3    //题目数

typedef struct student
{
    int  Pro_No[M];
    char Stu_No[21];
};

 
int main()

 {
     int  N,i,j,k,n,m;
     FILE *f;
    struct student stu[MaxN];
     printf("请输入题目个数:");
     scanf("%d",&N);//题目个数n
     printf("请输入学生人数:");
     scanf("%d",&n);
     for(i=0;i<n;i++)
     {
         printf("请输入第 %d 个学生学号:",i+1);
        scanf("%s",&stu[i].Stu_No);//学号
     }
     

 
    srand((int)time(0));
    for(k=0;k<n;k++)
     for(i=0;i<M;i++)
     {
         stu[k].Pro_No[i]=rand()%N+1;
         for(j=0;j<i;j++)
             if(stu[k].Pro_No[j]==stu[k].Pro_No[i])
             {
                 i=i-1;
                 break;
             }
     }//生成M个不重复的题号
   for(j=0;j<n;j++)
   for(k=0;k<M;k++)             //排序
   {
       for(i=k+1;i<M;i++)
           if(stu[j].Pro_No[k]>stu[j].Pro_No[i])
           {
               m=stu[j].Pro_No[k];
               stu[j].Pro_No[k]=stu[j].Pro_No[i];
               stu[j].Pro_No[i]=m;
           }
   }

 
    /*写入*/
     if((f=fopen("d:\\ProblemNo.txt","w"))==NULL)
     {
         printf("File open error!\n");
         return 0;
     }
     else
     {
         for(j=0;j<n;j++)
         for(i=0; i<M; ++i)
         {
             fprintf(f,"%d\n",stu[j].Pro_No[i]);
         }
         printf("保存成功!\n");
     }
     fclose(f);

 
    return 0;

 } 
2011-06-14 15:45
zhaodashi
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2011-6-14
收藏
得分:0 
回复 3楼 bccn_2012
谢谢,这个很好用。但能不能加一个菜单,比如按1进入选题,按2退出。谢谢!
还有在文本输出的时候能不能再美观一点。

[ 本帖最后由 zhaodashi 于 2011-6-14 20:24 编辑 ]
2011-06-14 19:37
bccn_2012
Rank: 6Rank: 6
等 级:侠之大者
帖 子:158
专家分:447
注 册:2011-5-14
收藏
得分:0 
回复 4楼 zhaodashi
这个就要你自己动手写写了吧!
2011-06-14 21:41
zhaodashi
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2011-6-14
收藏
得分:0 
回复 5楼 bccn_2012
不会啊,大哥,帮帮忙吧。
2011-06-14 22:29
虾B写
Rank: 8Rank: 8
来 自:湖北
等 级:蝙蝠侠
威 望:3
帖 子:395
专家分:922
注 册:2009-10-1
收藏
得分:0 
生成不同的随机数,可以用分页式随机,都不用排序了。
100个数据N,选11个
s=n/11=9.0909=9;
for(i=0;i<11;i++){


    号=i*s+(随机数(0~0.9999)*s+1); //取随机1到9加上i*9;
    if(i==10){号 += (随机数(0~0.9999) * (n-11 * s);} //这里加上余数的随机(0~1),怎么调整好,你们去想。
}






白娘故意下雨骗许仙的伞。祝英台十八里相送时装疯卖傻调戏梁山伯。七仙女挡住了董永的去路。牛郎趁织女洗澡时拿走了她的衣服。。。这些故事告诉我们;伟大爱情的开始,总归的有一个要先耍流氓!
2011-06-14 23:31
快速回复:关于随机选题的程序
数据加载中...
 
   



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

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