最近班级里需要人员抽签参加活动,闲来无事用java的(Math.random()方法||java.util.Random())写了一个随机抽签的,所以我又了解了一下C语言的随机数获取。

C语言的随机数获取:

参考:http://c.biancheng.net/view/2043.html

程序的抽签信息源文件可以自己通过程序去做出来。。。咳咳,虽然方法很笨…

程序中有些函数注释掉了,还有的隐藏了,就是制作源信息文件的。

你们可以改进改进,我这个写的比较乱。。。

还有就是因为我不太喜欢参加活动,所以在随机数函数里是输出不出来46号的。。

具体程序代码

#include<stdio.h>
#include<time.h>
#include<stdlib.h>
#include<windows.h>
#include<string.h>
#define COUNT 48 //总人数
//#define STU 20 //抽取学生人数 -为用户自定义人数,所以不启用
//#define INITCOUNT 100 顺序表初始化量
//#define INCREMENT 10 顺序表增量
typedef struct
{
char no[15];//学号
char name[10];//姓名
}student;
//-----------------------------------
FILE *stu,*lu;//定义学生信息源文件指针,幸运儿文件指针
char *pno="学号",*pname="姓名",*pflag="编号";//字符串指针
int n;//抽取幸运儿数量
//-----------------------------------
/*typedef struct
{
student *data;//基地址
int length;//长度
}StuList; 顺序表-暂不启用
*/
//----函数声明---
void MENU();//菜单
unsigned int RandomNum();//随机数,Seed为time,单位为秒
void DivCount(int *n);//用户自定义抽取人数
void TestInput(student *p);//测试输入
int WriteLuckyVisible(student *p,int *Lucky);//写入幸运儿txt文件,用户可视化的
int ReadStu(student *p); //读取信息源文件
int WriteStuInvisible(student *p);//制作信息源文件时使用
int ReadStuVisible(student *p);//制作读取数据源信息时使用
//--------------
void main()
{
//-----变量定义---------- int choose,i,j;
int Lucky[COUNT];//幸运儿
student data[COUNT];
//----------------------
DivCount(&n);
//ReadStuVisible(data);制作完毕-暂不启用
ReadStu(data);
for(;;)
{
MENU();
scanf("%d",&choose);
switch(choose)
{
case 1:
do
{
printf("--抽取中--\n");
printf("计数 丨%s丨%s\t %s\n",pflag,pno,pname);
for(i=0;i<n;i++)
{ Lucky[i]=RandomNum();
for(j=0;j<i;j++)//---寻找重复项
{ if(Lucky[j]==Lucky[i])
while(Lucky[i]==Lucky[j])
{
Lucky[i]=RandomNum();
} else
continue;
} //printf("%d\n",Lucky[i]);随机数重复测试
printf("第%-3d. %-4d% -13s %-5s\n",i+1,Lucky[i],data[Lucky[i]-1].no,data[Lucky[i]-1].name);//下标从0开始
} //------------------------------
printf("【1.重新抽取丨2.输出至TXT文件丨】:");
scanf("%d",&choose);
switch(choose)
{
case 1:;break;
case 2:
if((WriteLuckyVisible(data,Lucky)==1))
printf("输出成功!\n");
else
printf("错误!\n");
;break; default:printf("输入错误!\n");
} }while(choose==1);
;break;
case 2:exit(0);break;
case 8:printf("%s\t%s",data[0].no,data[0].name);break;
case 9:
//TestInput(data);
WriteStuInvisible(data);break;
default:printf("\t\t\t\t\t输入错误!");break;
}
system("pause");
} }
int ReadStuVisible(student *p)
{
int i;
if((stu=fopen("002.txt","r"))==NULL)
return 0;
for(i=0;i<COUNT;i++)
fscanf(stu,"%s %s",(p+i)->name,(p+i)->no);
fclose(stu);
return 1;
}
int ReadStu(student *p)
{
if((stu=fopen("Source.data","r"))==NULL)
return 0;
fread(p,sizeof(student),COUNT,stu);
fclose(stu);
return 1;
}
int WriteStuInvisible(student *p)
{
if((stu=fopen("Source.data","wt+"))==NULL)
return 0;
fwrite(p,sizeof(student),COUNT,stu);
fclose(stu);
return 1;
}
int WriteLuckyVisible(student *p,int *Lucky)
{
int i;
if((lu=fopen("LuckyDog.txt","wt+"))==NULL)
return 0; fprintf(lu,"计数 丨%s丨%s\t %s\n",pflag,pno,pname);
for(i=0;i<n;i++)
{
fprintf(lu,"第%-4d. %-4d% -13s %-5s\n",i+1,Lucky[i],p[Lucky[i]-1].no,p[Lucky[i]-1].name);
}
fclose(lu);
return 1;
}
void TestInput(student *p)
{
int i;
for(i=0;i<COUNT;i++)
{
system("cls");
printf("----No.%d----\n",i+1);
printf("学号:");
scanf("%s",(p+i)->no);
printf("姓名;");
scanf("%s",(p+i)->name); }
}
void DivCount(int *n)
{
for(;;)
{
system("cls");
printf("\t\t\t\t请输入本次准备抽取人数:");
scanf("%d",n);
if(*n<1||*n>COUNT)
{
printf("\t\t\t\t抽取人数不合法!");
system("pause");
continue;
}
else
break; } }
unsigned int RandomNum()
{
unsigned int x;
srand(time(NULL));
for(;;)
{
Sleep(1000);
x=rand()%COUNT+1;
if(x!=46)
break;
else
continue;
} return x;
}
void MENU()
{
system("cls");
printf("\t\t\t\t --------------------\n");
printf("\t\t\t\t丨 1.抽取 2.结束 丨\n");
printf("\t\t\t\t --------------------\n");
printf("\t\t\t\t 请输入:");
}

呃呃,自己预想的好多功能还没有实现,而且抽签的实现方法还有点复杂。。。

抽签小程序(C语言随机数)的更多相关文章

  1. 微信小程序开发语言的选择

    微信使用的开发语言和文件很「特殊」. 小程序所使用的程序文件类型大致分为以下几种: ①WXML(WeiXin Mark Language,微信标记语言) ②WXSS(WeiXin Style Shee ...

  2. 抽签小程序,妈妈再也不用担心谁洗碗(分配任务)了,so easy

    背景 今天谁炒菜,谁洗碗,谁买菜...啊,Boss说用抽签吧,于是有了下图 这样存在作弊的问题(记住棍子特征,谁先,谁后抽等等)于是有了这个抽签小程序(当然小程序我一个人控制,我想不想作弊看心情了) ...

  3. 小程序脚本语言WXS,你想要的都在这里了

    WXS脚本语言是 Weixin Script脚本的简称,是JS.JSON.WXML.WXSS之后又一大小程序内部文件类型.截至到目前小程序已经提供了5种文件类型. 解构小程序的几种方式,其中一种方式就 ...

  4. 小程序脚本语言WXS详解

    WXS脚本语言是 Weixin Script脚本的简称,是JS.JSON.WXML.WXSS之后又一大小程序内部文件类型.截至到目前小程序已经提供了5种文件类型. 解构小程序的几种方式,其中一种方式就 ...

  5. 微信小程序のwxs语言

    一.wxs介绍 wxs是微信小程序自身的脚本语言,用来过滤和计算.wxs可以通过文件可模块标签来定义 文件需要.wxs后缀文件 二.实例 <wxs module="test1" ...

  6. C# 抽签小程序

    设计背景 设置一个Excel名单表,对名单进行随机抽取. 设计思路 使用Timer定时器,运行定时器进行名单随机滚动,停止定时器获得抽签结果 相关技术 随机数 Excel读取/导出 XML文档读写 相 ...

  7. 微信小程序之 语言特点

    主页面的CSS样式默认为index.wxss,无需引入

  8. 微信小程序的应用及信息整合,都放到这里了

    微信小程序终于开始公测了,这篇文章也终于可以发布了. 这篇文章可以说是微信小程序系列三部曲最后一篇.8 月份,小程序推出前,我写了<别开发 app 了>详细阐述了为什么创业应该放弃原生 a ...

  9. 微信小程序教程(第三篇)

    小程序的架构及实现机制,信道服务及会话管理 小程序架构及实现机制 小程序并不是 H5 应用,而是更偏向于传统的 CS 架构,它是基于数据驱动的模式,一切皆组件(视图组件).所以建议在开发小程序时不要以 ...

随机推荐

  1. vmware虚拟IOS系统

    安装虚拟机     --以管理员的身份运行

  2. jQuery 中使用 DOM 操作节点,对页面中的表格实现增、删、查、改操作

    查看本章节 查看作业目录 需求说明: 在 jQuery 中使用 DOM 操作节点,对页面中的表格实现增.删.查.改操作 点击"增加"超链接时,将表格中的第一条数据添加到表格的末尾 ...

  3. 中文字体css编码转换

    各大网站的字体选择 网站 字体 腾讯 font: 12px "宋体","Arial Narrow",HELVETICA; 淘宝 font: 12px/1.5 t ...

  4. Git_同一个本地仓库上传到不同的远端仓库(github、gitee)

    一.背景 github访问.推拉代码都太慢了,于是想把github上面的项目全部迁移到gitee(码云)上,但又不想放弃在github上维护项目,于是想同时维护两个远端仓库 二.准备工作 1.创建相同 ...

  5. Selenium_环境安装(1)

    Selenium是一个用于Web应用程序自动化测试工具.Selenium测试直接运行在浏览器中,就像真正的用户在操作一样. Selenium基本上支持主流的浏览器,包括IE,Mozilla Firef ...

  6. Django_通用视图(五)

    参考官网的投票系统,按照综合案例的流程创建应用polls,主要模块代码如下: test1/polls/models.py import datetime from django.db import m ...

  7. Nginx 添加防爬虫

    include agent_deny.conf; conf下添加 #禁止Scrapy|curl等工具的抓取 if ($http_user_agent ~* (Scrapy|Curl|HttpClien ...

  8. Python爬虫脚本 ,Uni-APP复选框做出双向绑定 ,Net5工作流建模 。的一点经验

    从业C#开发多年,现在也经常用到Python 做网络爬虫 ,用Uni-app做手机前端.攒了一点经验.供其他多语言开发程序员借鉴吧. Python做爬虫和其他的方式做爬虫最大的区别应该在于. Pyth ...

  9. POJ 1664 放苹果 (递推思想)

    原题链接:http://poj.org/problem?id=1664 思路:苹果m个,盘子n个.假设 f ( m , n ) 代表 m 个苹果,n个盘子有 f ( m , n ) 种放法. 根据 n ...

  10. 【Java】代码块

    代码块 代码块的作用:用来初始化类.对象 代码块如果有修饰的话,只能使用static 分类:静态代码块.非静态代码块 静态代码块 static{ } 内部可以有输出语句 随着类的加载而执行,而且只执行 ...