c 语言彩票选号
2024-09-05 01:14:07
最近刚学了c语言,就做了个彩票选号程序练手玩玩,做的不好请见谅
1.分为前区(1-35)和后区(1-12)号码
2.先循环随机前区号在循环后区号
3.生成随机时数判断是否有重复值,和之前5期是否出现过
4.有重复值或出现过都重新随机
5.排序输出
文件:daletou.c
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<string.h>
#include<windows.h>
#include "5.h" // 大乐透选号
// 前区01—35共三十五个号码组成,后区号码由01—12
int getRand(int *,int,int);
int * sort(int *,int);
void printNum();
int main()
{
int i,num;
time_t t;
srand((unsigned int)time(&t)); printf("请输入要打印的个数:");
scanf("%d",&num);
for(i=0;i<num;i++){
printNum();
}
system("pause");
return 0;
}
// 打印号码
void printNum(){
int i,frontArea[5],backArea[2]; //获取前区数字
for(i=0;i<5;i++)
{
frontArea[i] = getRand(frontArea,35,5);
// printf("%d ",frontArea[i]);
}
// 获取后区数字
for(i=0;i<2;i++)
{
backArea[i] = getRand(backArea,12,2);
// printf("%d ",backArea[i]);
}
// 前区数字排序
int *arrf = sort(frontArea,5);
//将文字设置为红色
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 0xe);
for(i=0;i<2;i++)
{
printf("%d ",arrf[i]);
}
//将文字设置为白色
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 0x7);
printf("\n");
}
// 获取随机数
int getRand(int *n,int max,int len)
{
int ret = 0;
int j;
int k = 0;
int *history = len == 5?previousPeriod5:previousPeriod2;
// printf("index:%d ",i);
ret = rand()%(max+1);
ret = ret == 0 ? 1:ret;
for(j=0;j<len;j++)
{
// 判断当前数是否在往期5期存在
if(exist(ret,len) == 1){
k = 1;
break;
}
// 是否有相同的数
if(ret !=0 && ret == n[j])
{
k = 1;
break;
}
}
if(k == 1){
getRand(n,max,len);
}else{
return ret;
}
}
// 排序
int * sort(int *a,int len)
{
// static int a[] = {2,1,3,69,7,2,74};
int i,j;
// int arrlen = sizeof(a)/sizeof(a[0]);//获取数组长度 只能用于static或全局数组 因为传入的数组是个指针
for(i=0;i<len;i++)
{
for(j=i;j<len;j++){
if(a[i] > a[j]){
a[i] = a[i]^a[j];
a[j] = a[i]^a[j];
a[i] = a[i]^a[j];
}
}
}
return a;
}
文件:5.h
// 往期号码
int previousPeriod5[] = {
1,2,12,15,23,
5,16,21,23,34,
9,17,19,20,25,
1,13,18,29,35,
1,16,17,19,33,
};
int previousPeriod2[] = {
4,6,
7,10,
1,9,
4,9,
5,6,
};
int exist(int,int);
// 判断当前数是否在往期5期存在 k=1存在
int exist(int ret,int len)
{ int i,p_len,k=0;
int *arr;
if(len == 5){
p_len = sizeof(previousPeriod5)/sizeof(previousPeriod5[0]);
arr = previousPeriod5;
}else{
p_len = sizeof(previousPeriod2)/sizeof(previousPeriod2[0]);
arr = previousPeriod2;
}
for(i=0;i<p_len;i++)
{
if(ret == arr[i]){
k = 1;
}
}
return k;
}
运行:
最新文章
- ajax优点与缺点
- sublime text3下BracketHighlighter的配置方法
- PMP考试
- 判断App运行是否在前台
- Request三种获取数据的方式
- 推荐一篇 OAuth 2.0 必读文章
- 怎样把windows中安装的程序列出来?
- 使用本函式处理后的字串会沿续到PHP程式而转入eval函数
- 使用photoshop,把图片背景变成透明
- Java获取某月天数
- 自定义一个compass可编译的目录结构
- vmware9.0 安装ios10.8应该注意的地方
- Python:urllib和urllib2的区别(转)
- mysql常用的命令大全
- Java注释模板设置详解
- 【js编程艺术】小制作六
- 201521123077 《Java程序设计》第5周学习总结
- SSM Spring+SpringMVC+mybatis+maven+mysql环境搭建
- 201621123040《Java程序设计》第十四周学习总结
- 使用PHP脚本远程部署git项目
热门文章
- uniapp-npm install 进入版本后 优先运行全局安装,在HBuilder X终端输入 npm install 点击回车
- 让你熟知jquery见鬼去吧
- CCS基础样式表
- 解决vue-cli项目在运行时控制台出现 [WDS] Disconnected! 错误
- Spring Boot-切换嵌入式Servlet容器
- zabbix使用自带模板监控MySQL
- metasploit基本命令
- JS/JQ动态创建(添加)optgroup和option属性
- 微信授权 - wx.openSetting
- 发布nuget包的正确姿势---cicd自动打包发布nuget包