1.效果图
呐,老规矩,先放代码执行后的效果图
用c++实现大乐透的选号和随机产生的号码,并进行开奖获取开奖结果
2.代码
#include <iostream>
#include <stdlib.h>
#include <time.h>
using namespace std;
//定义一个遍历的函数
int bianli(int nums[]){
// i < 4 ,j < 4 是对数组前5个数进行排序
for(int i = 0; i < 4 ; i ++){
for(int j = 0; j < 4; j++){
if(nums[j] > nums[j + 1]){
int x = nums[j];
nums[j] = nums[j + 1];
nums[j + 1] = x;
}
}
}
//遍历
for(int i = 0; i < 7; i++){
cout << nums[i] << '\t';
if(i == 4){
cout << "后区: " ;
}
}
cout << endl;
}
//对用户所选的前五个数进行去重
int save(int nums[],int len,int tag){
for(int i = 0; i < len; i++){
if(nums[i] == tag){
return 1;
}
}
return 0;
}
//对用户所选的后两个数进行去重
int save2(int nums[],int len,int tag){
//i= 5 保证从第六个数开始,到7结束
for(int i = 5; i < len; i++){
//查找到数返回1,否则返回0;
if(nums[i] == tag){
return 1;
}
}
return 0;
}
//获取用户输入的号码集合,存入到数组中
int getNums(int nums[]) {
for(int i = 0; i < 7; i++){
if(i < 5){
cout << "请输入第" << i + 1 << "个号码" << endl;
int x = 0;
cin >> x;
if(x < 1 || x > 35){
cout << "输入有误,请输入1 - 35的数" << endl;
i--; //输入错误时,使本次循环再执行一次
continue;
}
//判断是否已经选择过该数字
int t = save(nums, 5 , x);
if(t){
cout << "输入的数已经存在,请重新输入" << endl;
i--;
continue;
}
nums[i] = x;
}else{
//选择后区2个号码,i- 4 保证显示为第1和2个
cout << "请输入后区第" << i - 4 << "个号码" << endl;
int x = 0;
cin >> x;
if(x < 1 || x > 12){
cout << "输入有误,请输入1 - 12的数" << endl;
i--;
continue;
}
//判断是否已经选择过该数字
int t = save2(nums, 7, x);
if(t){
cout << "输入的数已经存在,请重新输入" << endl;
i--;
continue;
}
nums[i] = x;
}
}
cout << endl << "用户选取号码为:" << endl;
bianli(nums);
}
//获取开奖(随机)的号码集合,存入到数组中
int getKjnums(int nums[]){
for(int i = 0; i < 7; i++){
//随机获取前五个数,并判断是否重复
if(i < 5){
//保证获取的数是1-35
int x = (rand() % 35) + 1;
int t = save(nums,5,x);
if(t){
i--;
continue;
}
nums[i] = x;
}else{
//保证获取的数是1-12
int x = (rand() % 12) + 1;
int t = save2(nums,7,x);
if(t){
i--;
continue;
}
nums[i] = x;
}
}
cout << endl << "本次开奖号码为:" << endl;
bianli(nums);
}
int chaJiang(int nums[],int kjnums[]){
//记录号码相同的个数;
int x = 0;
//使用顺序查找对两个数组的前5个数进行比较
for(int i = 0; i < 5; i++){
for(int j = 0; j < 5; j++){
if(nums[i] == kjnums[j]){
x++;
}
}
}
//使用顺序查找对两个数组的后2个数进行比较
for(int i = 5; i < 7; i++){
for(int j = 5; j < 5; j++){
if(nums[i] == kjnums[j]){
x++;
}
}
}
switch (x)
{
case 7 :
cout << endl << "恭喜您中2000万元" << endl;
break;
case 6 :
cout << endl << "恭喜您中1万元" << endl;
break;
case 5 :
cout << endl << "恭喜您中2000元" << endl;
break;
case 4 :
cout << endl << "恭喜您中100元" << endl;
break;
case 3 :
cout << endl << "恭喜您中5元" << endl;
break;
default:
cout << endl << "恭喜 !福利基金会老板奢华的一天有您的参与" << endl;
break;
}
}
int main(int argc, char const *argv[])
{
srand(time(NULL));
//定义两个数组用来存储用户输入的号码 和 开奖(随机)的号码
int nums[7] = {0};
int kjnums[7] = {0};
//获取用户输入号码
getNums(nums);
//获取开奖号码
getKjnums(kjnums);
//按照规则进行查奖
chaJiang(nums,kjnums);
return 0;
}