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

C语言的随机数获取:

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

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

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

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

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

具体程序代码

  1. #include<stdio.h>
  2. #include<time.h>
  3. #include<stdlib.h>
  4. #include<windows.h>
  5. #include<string.h>
  6. #define COUNT 48 //总人数
  7. //#define STU 20 //抽取学生人数 -为用户自定义人数,所以不启用
  8. //#define INITCOUNT 100 顺序表初始化量
  9. //#define INCREMENT 10 顺序表增量
  10. typedef struct
  11. {
  12. char no[15];//学号
  13. char name[10];//姓名
  14. }student;
  15. //-----------------------------------
  16. FILE *stu,*lu;//定义学生信息源文件指针,幸运儿文件指针
  17. char *pno="学号",*pname="姓名",*pflag="编号";//字符串指针
  18. int n;//抽取幸运儿数量
  19. //-----------------------------------
  20. /*typedef struct
  21. {
  22. student *data;//基地址
  23. int length;//长度
  24. }StuList; 顺序表-暂不启用
  25. */
  26. //----函数声明---
  27. void MENU();//菜单
  28. unsigned int RandomNum();//随机数,Seed为time,单位为秒
  29. void DivCount(int *n);//用户自定义抽取人数
  30. void TestInput(student *p);//测试输入
  31. int WriteLuckyVisible(student *p,int *Lucky);//写入幸运儿txt文件,用户可视化的
  32. int ReadStu(student *p); //读取信息源文件
  33. int WriteStuInvisible(student *p);//制作信息源文件时使用
  34. int ReadStuVisible(student *p);//制作读取数据源信息时使用
  35. //--------------
  36. void main()
  37. {
  38. //-----变量定义----------
  39. int choose,i,j;
  40. int Lucky[COUNT];//幸运儿
  41. student data[COUNT];
  42. //----------------------
  43. DivCount(&n);
  44. //ReadStuVisible(data);制作完毕-暂不启用
  45. ReadStu(data);
  46. for(;;)
  47. {
  48. MENU();
  49. scanf("%d",&choose);
  50. switch(choose)
  51. {
  52. case 1:
  53. do
  54. {
  55. printf("--抽取中--\n");
  56. printf("计数 丨%s丨%s\t %s\n",pflag,pno,pname);
  57. for(i=0;i<n;i++)
  58. {
  59. Lucky[i]=RandomNum();
  60. for(j=0;j<i;j++)//---寻找重复项
  61. {
  62. if(Lucky[j]==Lucky[i])
  63. while(Lucky[i]==Lucky[j])
  64. {
  65. Lucky[i]=RandomNum();
  66. }
  67. else
  68. continue;
  69. }
  70. //printf("%d\n",Lucky[i]);随机数重复测试
  71. printf("第%-3d. %-4d% -13s %-5s\n",i+1,Lucky[i],data[Lucky[i]-1].no,data[Lucky[i]-1].name);//下标从0开始
  72. }
  73. //------------------------------
  74. printf("【1.重新抽取丨2.输出至TXT文件丨】:");
  75. scanf("%d",&choose);
  76. switch(choose)
  77. {
  78. case 1:;break;
  79. case 2:
  80. if((WriteLuckyVisible(data,Lucky)==1))
  81. printf("输出成功!\n");
  82. else
  83. printf("错误!\n");
  84. ;break;
  85. default:printf("输入错误!\n");
  86. }
  87. }while(choose==1);
  88. ;break;
  89. case 2:exit(0);break;
  90. case 8:printf("%s\t%s",data[0].no,data[0].name);break;
  91. case 9:
  92. //TestInput(data);
  93. WriteStuInvisible(data);break;
  94. default:printf("\t\t\t\t\t输入错误!");break;
  95. }
  96. system("pause");
  97. }
  98. }
  99. int ReadStuVisible(student *p)
  100. {
  101. int i;
  102. if((stu=fopen("002.txt","r"))==NULL)
  103. return 0;
  104. for(i=0;i<COUNT;i++)
  105. fscanf(stu,"%s %s",(p+i)->name,(p+i)->no);
  106. fclose(stu);
  107. return 1;
  108. }
  109. int ReadStu(student *p)
  110. {
  111. if((stu=fopen("Source.data","r"))==NULL)
  112. return 0;
  113. fread(p,sizeof(student),COUNT,stu);
  114. fclose(stu);
  115. return 1;
  116. }
  117. int WriteStuInvisible(student *p)
  118. {
  119. if((stu=fopen("Source.data","wt+"))==NULL)
  120. return 0;
  121. fwrite(p,sizeof(student),COUNT,stu);
  122. fclose(stu);
  123. return 1;
  124. }
  125. int WriteLuckyVisible(student *p,int *Lucky)
  126. {
  127. int i;
  128. if((lu=fopen("LuckyDog.txt","wt+"))==NULL)
  129. return 0;
  130. fprintf(lu,"计数 丨%s丨%s\t %s\n",pflag,pno,pname);
  131. for(i=0;i<n;i++)
  132. {
  133. fprintf(lu,"第%-4d. %-4d% -13s %-5s\n",i+1,Lucky[i],p[Lucky[i]-1].no,p[Lucky[i]-1].name);
  134. }
  135. fclose(lu);
  136. return 1;
  137. }
  138. void TestInput(student *p)
  139. {
  140. int i;
  141. for(i=0;i<COUNT;i++)
  142. {
  143. system("cls");
  144. printf("----No.%d----\n",i+1);
  145. printf("学号:");
  146. scanf("%s",(p+i)->no);
  147. printf("姓名;");
  148. scanf("%s",(p+i)->name);
  149. }
  150. }
  151. void DivCount(int *n)
  152. {
  153. for(;;)
  154. {
  155. system("cls");
  156. printf("\t\t\t\t请输入本次准备抽取人数:");
  157. scanf("%d",n);
  158. if(*n<1||*n>COUNT)
  159. {
  160. printf("\t\t\t\t抽取人数不合法!");
  161. system("pause");
  162. continue;
  163. }
  164. else
  165. break;
  166. }
  167. }
  168. unsigned int RandomNum()
  169. {
  170. unsigned int x;
  171. srand(time(NULL));
  172. for(;;)
  173. {
  174. Sleep(1000);
  175. x=rand()%COUNT+1;
  176. if(x!=46)
  177. break;
  178. else
  179. continue;
  180. }
  181. return x;
  182. }
  183. void MENU()
  184. {
  185. system("cls");
  186. printf("\t\t\t\t --------------------\n");
  187. printf("\t\t\t\t丨 1.抽取 2.结束 丨\n");
  188. printf("\t\t\t\t --------------------\n");
  189. printf("\t\t\t\t 请输入:");
  190. }

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

抽签小程序(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. MacOS使用IDEA+Maven+Scala+Spark进行本地调试

    参考:spark开发环境搭建(基于idea 和maven) 安装JDK 从这里下载Java 8的JDK 设置JAVA_HOME环境变量,在Mac上它大概会是/Library/Java/JavaVirt ...

  2. HTML网页设计基础笔记 • 【第3章 表单】

    全部章节   >>>> 本章目录 3.1 表单 3.1.1 表单概述 3.1.1 表单概述(续) 3.1.2 表单标签 3.1.3 表单数据的提交方式 3.2 输入框和按钮 3 ...

  3. Hadoop HA(高可用) 详细安装步骤

    什么是HA? HA是High Availability的简写,即高可用,指当当前工作中的机器宕机后,会自动处理这个异常,并将工作无缝地转移到其他备用机器上去,以来保证服务的高可用.(简言之,有两台机器 ...

  4. CentOS 7 连接不到网络解决方法(设置静态ip)

    使用VM12创建虚拟机并安装CentOS 7,但是安装完成后发现连接不到网络. ping jd.com发现不通 因为在创建虚拟机的时候 我们选择的是NAT模式 这里给出NAT模式下对应的的解决方法: ...

  5. spring boot + redis --- 心得

    1.前言 习惯使用springMVC 配置 redis ,现在使用spring boot ,得好好总结怎么在spring boot 配置和使用 ,区别真的挺大的. 2.环境 spring boot  ...

  6. websocket 使用 spring 的service层 ,进而调用里面的 dao层 来操作数据库 ,包括redis、mysql等通用

    1.前言 描述一下今天用websocket踩得坑  --->空指针异常! 我想在websocket里面使用service 层的接口,从中获取数据库的一些信息  , 使用 @Autowired 注 ...

  7. Linux基础之终端、控制台、tty、pty简介说明

    最近在搞Linux提权的时候,有时候su 用户名 登录的时候发现登录不了,因为tty终端,交互不了,所以我也来总结一下 一. 基本概念 1. ttytty(终端设备的统称):tty一词源于telety ...

  8. CODING 携手 Thoughtworks 助力老百姓大药房打造”自治、自决、自动”的敏捷文化

    老百姓大药房是中国具有影响力的药品零售连锁企业,中国药品零售企业综合竞争力百强冠军.中国服务业 500 强企业.湖南省百强企业. 自 2001 年创立以来,现已成功开发了湖南. 陕西.浙江.江苏等 * ...

  9. Spring系列1:Spring基本概念

    本文内容 什么是Spring? 为什么学Spring? 本系列包含哪些技术? 本系列适合哪些人? 什么是Spring? 基本概念 Spring 框架为现代基于 Java 的企业应用程序提供了一个全面的 ...

  10. python控制另一台电脑虚拟nao机器人

    nao机器人ip地址 http://doc.aldebaran.com/1-14/software/choregraphe/howto_connect_to_simulated.html 结果 访问另 ...