想要用机器快速判断该彩票是几等奖

每张彩票上有六个数字,数字大小范围是1~33。

现在电视上已经公布了中奖号码。对于每张彩票,想要用机器快速判断该彩票是几等奖。

中奖规则:

中了一个数字,是六等奖,中了两个数字是五等奖。

其他依次类推,中了六个数字就是一等奖。

如果一个数字都没中,则输出“Sorry”(首字母大写)。

特别注意:彩票数字是允许重复选的。比如某张彩票数字为“1 2 3 1 2 3”,这是可以的,那如果中奖数字为“1 2 3 4 5 6”,那么这张彩票就中了六个数字。

输入格式
你的程序会先输入一行整数,包含六个数字,表示中奖号码。

接下来会输入一行,一个整数n,表示彩票数量。

再接下来n行,每行六个数字,表示彩票上的数字。

n≤1,000

输出格式
你的程序需要输入n行,对每张彩票,输出对应的奖项等第

重复数字也算中奖!那就逐个遍历彩票数字,跟中奖号码对比,数字在中奖号码中,就把猜对的数量+1,最后根据数量判断中奖等级

实现思路和具体代码如下,望采纳

  • 首先输入中奖号码,存入 win 数组中。
  • 然后输入彩票数量 n。
  • 接下来循环 n 次,输入每张彩票的号码,存入 ticket 数组中。
  • 对于每张彩票,使用双重循环判断 ticket 数组中的数字是否在 win 数组中出现,如果出现就将 cnt 加 1。
  • 最后,如果 cnt 为 0,则输出“Sorry”,否则输出 7 - cnt。
#include <iostream>
#include <cstring>
#include <algorithm>

using namespace std;

const int N = 35;
int win[N], ticket[N];  // win 数组存中奖号码,ticket 数组存彩票号码

int main()
{
    for (int i = 0; i < 6; i ++ ) scanf("%d", &win[i]);
    int n;
    scanf("%d", &n);
    while (n -- )
    {
        int cnt = 0;  // cnt 用来计算当前彩票中奖数量
        for (int i = 0; i < 6; i ++ ) scanf("%d", &ticket[i]);
        for (int i = 0; i < 6; i ++ )
            for (int j = 0; j < 6; j ++ )
                if (ticket[i] == win[j]) cnt ++ ;
        if (cnt == 0) puts("Sorry");
        else printf("%d\n", 7 - cnt);
    }

    return 0;
}
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632