牛客小白月赛61 B-柜台结账

该博客介绍了一个C语言程序,用于处理两个字符串类型的账单。根据输入的字符串小数部分首字符进行特定判断,如:大于5打印'Happy birthday to MFGG',小于5且大于0打印'Happy birthday to YXGG'。如果小数部分首字符为5,还会检查后续数字及整数部分的奇偶性。当小数部分全为0时,输出'PLMM'。
摘要由CSDN通过智能技术生成

 

 首先创建两个字符串数组存放账单

    char a1[100000];
    char a2[100000];
    scanf("%s",a1);
    scanf("%s",a2);

字符串输入用%s,不加&直接输入

求出字符串长度,方便遍历字符串长度时使用

    int len1=strlen(a1);
    int len2=strlen(a2);

检索小数部分的字符串首元素,大于5符合第一条,将结果加一,大于0小于5符合第二条,结果减一

if(a2[0]>'5')
    {
        printf("Happy birthday to MFGG");
    }
    if(a2[0]<'5'&&a2[0]>'0')
    {
        printf("Happy birthday to YXGG");
    }

判断小数部分首元素等于5时,若5后面还有元素,则符合第一条,结果加一

若5后面全是0,则判断整数部分最后一位的奇偶,奇数则在原来的数加一,偶数减一

if(a2[0]=='5')
    {
        int s=0;
        for(int i=1;i<len2;i++)
        {
            if(a2[i]!='0')
            {
                s=1;
                break;
            }
        }
        if(s==0)
        {
            if(a1[len1-1]%2==0)
            {
                printf("Happy birthday to YXGG");
            }
            else
            {
                printf("Happy birthday to MFGG");
            }
        }
        else
        {
            printf("Happy birthday to MFGG");
        }
    }

当a2==0时,由于没有前导0,a2就一定等于0,不用判断a2首元素之后还有没有非0数,此时a2==0,是整数,符合第三条。

if(a2[0]=='0')
    {
         printf("PLMM");
    }

全部代码如下

#include<stdio.h>
#include<string.h>
int main()
{
    char a1[100005];
    char a2[100005];
    scanf("%s",a1);
    scanf("%s",a2);
    int len1=strlen(a1);
    int len2=strlen(a2);
    if(a2[0]>'5')
    {
        printf("Happy birthday to MFGG");
    }
    if(a2[0]<'5'&&a2[0]>'0')
    {
        printf("Happy birthday to YXGG");
    }
    if(a2[0]=='5')
    {
        int s=0;
        for(int i=1;i<len2;i++)
        {
            if(a2[i]!='0')
            {
                s=1;
                break;
            }
        }
        if(s==0)
        {
            if(a1[len1-1]%2==0)
            {
                printf("Happy birthday to YXGG");
            }
            else
            {
                printf("Happy birthday to MFGG");
            }
        }
        else
        {
            printf("Happy birthday to MFGG");
        }
    }
    if(a2[0]=='0')
    {
         printf("PLMM");
    }
    return 0;
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值