中奖

 

输入格式:

第1行,输入一个整数n,表示彩民买了n组彩票.0<=n<=100。
第2行是开奖公布的号码,第1个到第6个是已按升序排列的红色中奖号码,第7个是蓝色中奖号码;
第3行到n+2行是彩民买的n组单式彩票,每行第1个到第6个是已按升序排列的红色中奖号码,第7个是蓝色号码。

输出格式:

按输入顺序输出已中奖的彩票号码及中奖等级,每组中奖号码占1行,中奖号码与中奖等级间有1个空格;若所有的彩票均未中奖,最后输出 “Not winning”。

输入样例1:

6
02  06  10  24  25  33  09
03  09  10  19  20  21  06
01  06  09  15  24  30  02
02  03  06  24  25  33  05
20  21  24  27  28  30  02
10  11  12  16  17  20  16
02  06  10  24  25  33  09

输出样例1:

02 03 06 24 25 33 05 四等奖
02 06 10 24 25 33 09 一等奖

输入样例2:

4
02  06  10  24  25  33  09
03  09  10  19  20  21  06
01  06  09  15  24  30  02
20  21  24  27  28  30  02
10  11  12  16  17  20  16
 

输出样例2:

Not winning

 

 

 

 

#include <stdio.h>

// 定义中奖等级
const char* prize[] = {"一等奖", "二等奖", "三等奖", "四等奖", "五等奖", "六等奖"};

// 比较两个数组的前6个元素和第7个元素
int compare(const int* a, const int* b) {
int red_match = 0, blue_match = (a[6] == b[6]) ? 1 : 0;
for (int i = 0; i < 6; i++) {
for (int j = 0; j < 6; j++) {
if (a[i] == b[j]) {
red_match++;
break;
}
}
}

// 根据红色号码和蓝色号码的匹配情况,返回对应的中奖等级索引
if (red_match == 6 && blue_match) return 0; // 一等奖
if (red_match == 6) return 1; // 二等奖
if (red_match == 5 && blue_match) return 2; // 三等奖
if (red_match == 5 || (red_match == 4 && blue_match)) return 3; // 四等奖
if ((red_match == 4 && !blue_match) || (red_match == 3 && blue_match)) return 4; // 五等奖
if (blue_match && red_match <= 1) return 5; // 六等奖
if (red_match == 2 && blue_match) return 5; // 六等奖
return -1; // 未中奖
}

int main() {
int n;
scanf("%d", &n);

int winning_numbers[7];
// 读取中奖号码
for (int i = 0; i < 7; i++) {
scanf("%d", &winning_numbers[i]);
}

int tickets[n][7]; // 存储所有彩票号码
// 读取所有彩票号码
for (int i = 0; i < n; i++) {
for (int j = 0; j < 7; j++) {
scanf("%d", &tickets[i][j]);
}
}

int has_winning_ticket = 0; // 标记是否有中奖的彩票
// 遍历所有彩票号码,判断是否中奖
for (int i = 0; i < n; i++) {
int result = compare(winning_numbers, tickets[i]); // 比较中奖号码和彩票号码
if (result != -1) { // 如果中奖
has_winning_ticket = 1; // 标记有中奖的彩票
// 输出中奖号码
for (int j = 0; j < 7; j++) {
printf("%02d ", tickets[i][j]);
}
printf("%s\n", prize[result]); // 输出中奖等级
}
}

// 如果没有中奖的彩票,输出"Not winning"
if (!has_winning_ticket) {
printf("Not winning\n");
}

return 0; // 程序结束
}

posted on   qh2028  阅读(22)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示