

首先创建两个字符串数组存放账单
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;
}
该博客介绍了一个C语言程序,用于处理两个字符串类型的账单。根据输入的字符串小数部分首字符进行特定判断,如:大于5打印'Happy birthday to MFGG',小于5且大于0打印'Happy birthday to YXGG'。如果小数部分首字符为5,还会检查后续数字及整数部分的奇偶性。当小数部分全为0时,输出'PLMM'。
1058

被折叠的 条评论
为什么被折叠?



