每一张彩票有7个数字,每个数字的取值范围为1-33。群众在购买彩票后(自己输入7个数字),彩票中心会随机生成一组7个数字的中奖号码。通过比较彩票输出中了几等奖。
特等奖:要求彩票上 7 个号码都出现在中奖号码中。
一等奖:要求彩票上有 6 个号码出现在中奖号码中
二等奖:要求彩票上有 5 个号码出现在中奖号码中
三等奖:要求彩票上有 4 个号码出现在中奖号码中
四等奖:要求彩票上有 3 个号码出现在中奖号码中。
五等奖:要求彩票上有 2 个号码出现在中奖号码中
六等奖:要求彩票上有 1 个号码出现在中奖号码中。
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
//处理数字超出范围
void beyondRange(int i, int user_num[])
{
while (user_num[i] < 1 || user_num[i] > 33)
{
cout << "提示:输入数字超出范围,请重新输入!" << endl;
cin >> user_num[i];
}
}
//处理数字重复(用户)
void duplicateNumber(int i, int user_num[])
{
for (int j = 0; j < i; j++)
{
if (user_num[i] == user_num[j])
{
cout << "提示:输入数字重复,请重新输入!" << endl;
cin >> user_num[i];
beyondRange(i, user_num);
duplicateNumber(i, user_num);
break;
}
}
}
//输入用户号码(注意:不能输入超出范围和重复数字)
void inputUserNumbers(int user_num[7])
{
cout << "请输入购买彩票的7个数字(1~33):" << endl;
for (int i = 0; i < 7; i++)
{
cin >> user_num[i];
beyondRange(i, user_num);
duplicateNumber(i, user_num);
}
}
//生成不重复中奖号码
void generateWinningNumbers(int winning_num[7])
{
srand(time(NULL));
for (int i = 0; i < 7; i++)
{
bool has_duplicate_num = true;
while (has_duplicate_num)
{
winning_num[i] = rand() % 33 + 1;
has_duplicate_num = false;
for (int j = 0; j < i; j++)
{
if (winning_num[i] == winning_num[j])
{
has_duplicate_num = true;
break;
}
}
}
}
}
//比较,统计相同号码数
int compareWinningNumbers(int user_num[7], int winning_num[7])
{
int same_num = 0;
for (int m = 0; m < 7; m++)
{
for (int k = 0; k < 7; k++)
{
if (winning_num[m] == user_num[k])
{
same_num += 1;
break;
}
}
}
return same_num;
}
//判定中奖情况
void outputWinningResult(int same_num)
{
switch (same_num)
{
case 7:
cout << "恭喜你!中了特等奖!" << endl;
break;
case 6:
cout << "恭喜你!中了一等奖!" << endl;
break;
case 5:
cout << "恭喜你!中了二等奖!" << endl;
break;
case 4:
cout << "恭喜你!中了三等奖!" << endl;
break;
case 3:
cout << "恭喜你!中了四等奖!" << endl;
break;
case 2:
cout << "恭喜你!中了五等奖!" << endl;
break;
case 1:
cout << "恭喜你!中了六等奖!" << endl;
break;
default:
cout << "很遗憾!你没中奖。" << endl;
break;
}
}
int main()
{
int winning_num[7], user_num[7], same_num = 0;
inputUserNumbers(user_num);
generateWinningNumbers(winning_num);
same_num = compareWinningNumbers(user_num, winning_num);
cout << same_num << endl;
//输出用户号码与中奖号码
cout << "用户购买号码为:";
for (int i = 0; i < 7; i++)
{
cout << user_num[i] << " ";
}
cout << endl;
cout << "中奖号码为:";
for (int i = 0; i < 7; i++)
{
cout << winning_num[i] << " ";
}
cout << endl;
outputWinningResult(same_num);
return 0;
}