最近班级里需要人员抽签参加活动,闲来无事用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. Chapter 12 IP Weighting and Marginal Structural Model

    目录 12.1 The causal question 12.2 Estimating IP weights via modeling 12.3 Stabilized IP weights 12.4 ...

  2. 【jvm】06-new一个对象到底占了多少内存?

    [jvm]06-new一个对象到底占了多少内存? 欢迎关注b站账号/公众号[六边形战士夏宁],一个要把各项指标拉满的男人.该文章已在github目录收录. 屏幕前的大帅比和大漂亮如果有帮助到你的话请顺 ...

  3. 【算法】01-数据结构概述(注意区分jvm堆与堆/jvm栈与栈)

    [算法]01-数据结构概述(注意区分jvm堆与堆/jvm栈与栈) 欢迎关注b站账号/公众号[六边形战士夏宁],一个要把各项指标拉满的男人.该文章已在github目录收录. 屏幕前的大帅比和大漂亮如果有 ...

  4. django中使用支付宝

    一.注册 https://auth.alipay.com/login/ant_sso_index.htm?goto=https%3A%2F%2Fopenhome.alipay.com%2Fplatfo ...

  5. springboot 配置 swagger2

    1.pom.xml 添加依赖 <!--swagger2 依赖--> <dependency> <groupId>io.springfox</groupId&g ...

  6. [ vue ] xxxProject项目杂记

    2020.4.9 加入eCharts 2020.4.8 完成article的显示,其间碰到全局路由守卫写的有错误,导致跳转报错.已修复. 加入keep-alive功能,缓存视图数据 疑问:如果在全局组 ...

  7. 基本的sql语法

    1. SELECT: 用于从数据库中选取数据 SELECT name,value FROM table_name 2.SELECT DISTINCT 语句用于返回唯一不同的值(去重) 3.WHERE ...

  8. 【Java】反射

    文章目录 反射 概述 动态语言与非动态语言 动态语言 非动态语言 Java反射机制提供的功能 反射相关的主要API 关于java.lang.Class类的理解 类的加载过程 获取Class的实例的方式 ...

  9. Web开发之Cookie and Session

    会话 什么是会话? 简单说:用户开一个浏览器,点击多个超链接,访问服务器的多个web资源,然后关闭浏览器,整个过程就称之为一个会话. 会话过程要解决什么问题 每个用户在使用浏览器与服务器进行会话的过程 ...

  10. Google Java 风格指南(Google Java Style Guide)

    官方地址 google.github.io 本文档作为 Google 的 Java 编程语言源代码编码标准的完整定义.当且仅当它遵守此处的规则时,Java 源文件才被描述为 Google 风格. 前言 ...