PTA L1-062 幸运彩票(详解)

news/2024/7/6 1:10:58

前言:内容包括:题目,代码实现,大致思路,代码解读

题目:

彩票的号码有 6 位数字,若一张彩票的前 3 位上的数之和等于后 3 位上的数之和,则称这张彩票是幸运的。本题就请你判断给定的彩票是不是幸运的。

输入格式:

输入在第一行中给出一个正整数 N(≤ 100)。随后 N 行,每行给出一张彩票的 6 位数字。

输出格式:

对每张彩票,如果它是幸运的,就在一行中输出 You are lucky!;否则输出 Wish you good luck.

输入样例:

2
233008
123456

输出样例:

You are lucky!
Wish you good luck.

代码实现 

#include<stdio.h>
#include<string.h>
void Judge(char* left, char* right)
{
    int countleft = 0;
    int sumleft = 0;
    while (countleft != 3)
    {
        sumleft += *left - '0';
        countleft++;
        left++;
    }

    int countright = 0;
    int sumright = 0;
    while (countright != 3)
    {
        sumright += *right - '0';
        countright++;
        right--;
    }

    if (sumleft == sumright)
    {
        printf("You are lucky!\n");
    }
    else
    {
        printf("Wish you good luck.\n");
    }
}
int main()
{
    int n = 0;
    scanf("%d", &n);
    int i = 0;
    char arr[100] = { 0 };
    for (i = 0; i < n; i++)
    {
        scanf("%s", arr);
        int len = strlen(arr);
        Judge(arr, arr + len - 1);
    }
    return 0;
}

大致思路: 

1 将输入的每一串数字看成字符串,存入字符数组中

2 使用两个指针分别遍历字符数组的前3个字符,后3个字符

   并计算前三个字符转成数字后的和,前三个字符转成数字后的和,判断是否相等

   数字字符-'0'=数字

代码解读:

函数部分

void Judge(char* left, char* right)
{
    int countleft = 0;
    int sumleft = 0;
    while (countleft != 3)
    {
        sumleft += *left - '0';
        countleft++;
        left++;
    }

    int countright = 0;
    int sumright = 0;
    while (countright != 3)
    {
        sumright += *right - '0';
        countright++;
        right--;
    }

    if (sumleft == sumright)
    {
        printf("You are lucky!\n");
    }
    else
    {
        printf("Wish you good luck.\n");
    }
}

函数Judge实现判断并输出的功能,接收指向字符串首元素的指针left,指向末尾元素的指针right

使用countleft统计前半部分字符的个数,到了3就停止相加

使用countright统计后半部分字符的个数,到了3就停止相加

sumleft中存放的是前3个数字之和,sumright存放的是后3个数字之和

主体部分

int main()
{
    int n = 0;
    scanf("%d", &n);
    int i = 0;
    char arr[100] = { 0 };
    for (i = 0; i < n; i++)
    {
        scanf("%s", arr);
        int len = strlen(arr);
        Judge(arr, arr + len - 1);
    }
    return 0;
}

for循环控制循环次数

每次以字符串的形式读取一串数字,这是将每个数字转化成了数字字符的形式

读取后使用Judge函数判断这串数字,传给指向字符串首元素的指针arr,指向末尾元素的指针arr+len-1


http://lihuaxi.xjx100.cn/news/951820.html

相关文章

超级分时一

1.分时主图 ZRS:CONST(DYNAINFO(3)),NODRAW; A1:3.5*(EMA(CLOSE,48)-EMA(CLOSE,104))ZRS,COLORLIMAGENTA; A2:EMA(A1,36),COLORLIBLUE; MACD:(A1-A2)2ZRS; DRAWKLINE(H,O,L,C); STICKLINE(A1>A2,ZRS,MACD ,1,0),COLORRED; STICKLINE(A1>A2 AND MACD<REF(MACD,1),ZRS,M…

获取 本周、本月、本年 的开始或结束时间

获取 本周、本月、本年 的开始或结束时间 public class DateTimeUtil{// 获取 本周、本月、本年 的开始或结束时间/// <summary>/// 获取开始时间/// </summary>/// <param name"TimeType">Week、Month、Year</param>/// <param name&quo…

条款10:优先考虑限域enum而非未限域enum

通常来说&#xff0c;在花括号中声明一个名字会限制它的作用域在花括号之内。但这对于C98风格的enum中声明的枚举名&#xff08;译注&#xff1a;enumerator&#xff0c;连同下文“枚举名”都指enumerator&#xff09;是不成立的。这些枚举名的名字&#xff08;译注&#xff1a…

3.ffmpeg命令行环境搭建、ffmpeg命令行初步了解

在上章,我们讲过: ffmpeg.exe: 主要用于转码或者剪切的应用程序, 也可以从url/现场音频/视频源抓取输入源ffplay.exe: 主要用于播放视频的应用程序,该应用程序源码是开源的,我们后面章节会去源码分析ffprobe.exe: 主要用于分析视频码流的应用程序, 可以获取媒体文件的详细信息,…

Kubernetes11:配置管理-Secret(实际下载secret插件进行加密)-ConfigMap

Kubernetes11&#xff1a;配置管理-Secret 但是secrei在生产环境中会下载secret插件进行加密。只是老师没演示。 Secret 作用&#xff1a;加密数据存在etcd里面&#xff0c;让Pod容器以挂载Volume方式进行访问 场景&#xff1a;凭证 Base64 &#xff1a; 1、创建secret 加密…

【Leedcode】栈和队列必备的面试题(第二期)

【Leedcode】栈和队列必备的面试题&#xff08;第二期&#xff09; 文章目录【Leedcode】栈和队列必备的面试题&#xff08;第二期&#xff09;一、题目&#xff08;用两个队列实现栈&#xff09;二、思路图解1.定义两个队列2.初始化两个队列3.往两个队列中放入数据4.两个队列出…

论文阅读-DISTILLING KNOWLEDGE FROM READER TORETRIEVER FOR QUESTION ANSWERING

论文链接&#xff1a;https://arxiv.org/pdf/2012.04584.pdf 目录 方法 交叉注意机制 交叉注意力得分作为段落检索的相关性度量 用于段落检索的密集双编码器 将交叉注意力分数提取到双编码器 数据集 方法 我们的系统由两个模块组成&#xff0c;即检索器和阅读器&#xf…

HUN工训中心:电路暂态响应测量实验报告

工训中心的牛马实验 实验目的&#xff1a; 1.培训应用示波器测量电路暂响应过程的技能。观测RC一阶电路暂态过程的动态曲线&#xff0c;测量其时间常数及作为积分应用特性。 2.观测RLC二阶电路暂态过程的三种状态轨迹&#xff0c;测量并分析其参数。 实验仪器和器材&#xff…