最近刚学了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;
}

运行:

最新文章

  1. ajax优点与缺点
  2. sublime text3下BracketHighlighter的配置方法
  3. PMP考试
  4. 判断App运行是否在前台
  5. Request三种获取数据的方式
  6. 推荐一篇 OAuth 2.0 必读文章
  7. 怎样把windows中安装的程序列出来?
  8. 使用本函式处理后的字串会沿续到PHP程式而转入eval函数
  9. 使用photoshop,把图片背景变成透明
  10. Java获取某月天数
  11. 自定义一个compass可编译的目录结构
  12. vmware9.0 安装ios10.8应该注意的地方
  13. Python:urllib和urllib2的区别(转)
  14. mysql常用的命令大全
  15. Java注释模板设置详解
  16. 【js编程艺术】小制作六
  17. 201521123077 《Java程序设计》第5周学习总结
  18. SSM Spring+SpringMVC+mybatis+maven+mysql环境搭建
  19. 201621123040《Java程序设计》第十四周学习总结
  20. 使用PHP脚本远程部署git项目

热门文章

  1. uniapp-npm install 进入版本后 优先运行全局安装,在HBuilder X终端输入 npm install 点击回车
  2. 让你熟知jquery见鬼去吧
  3. CCS基础样式表
  4. 解决vue-cli项目在运行时控制台出现 [WDS] Disconnected! 错误
  5. Spring Boot-切换嵌入式Servlet容器
  6. zabbix使用自带模板监控MySQL
  7. metasploit基本命令
  8. JS/JQ动态创建(添加)optgroup和option属性
  9. 微信授权 - wx.openSetting
  10. 发布nuget包的正确姿势---cicd自动打包发布nuget包