PAT乙级-1014 福尔摩斯的约会-C语言实现(29行AC)

坑点归纳:

1.要注意星期几对应的字母是A~G,24小时字母对应的是A~N

2.要注意题目中要求字母是大写还是小写或者都可以

3.要注意两字符串的判断顺序(第一对字符串必须先判断出第一个大写且范围在A~G的字母)

知识点归纳:

1.对字符串分析

2.对题目要求的审查

#include<stdio.h>
int main(void){
    int i,t;
    char a[61],b[61],wxx[7][4]={"MON","TUE","WED","THU","FRI","SAT","SUN"};//由于星期几恰好对应数组的下标,故可用二维的字符数组储存
    scanf("%s %s",a,b);
    for(i=0,t=0;a[i]!='\0'&&b[i]!='\0';i++){//两字符串长度可能不等,所以是以某一个字符数组结尾标志'\0'作终止条件
        if(a[i]==b[i]){//分层次判断防止同个条件重复判断
            if(t==1){//必须先判断完星期几再对24小时进行判断(此时t=1)
                if(a[i]>='A'&&a[i]<='N'){//注意字母的取值范围
                printf("%d:",a[i]-'A'+10);//将字符转换为整型进行输出
                break;//判断完直接退出循环防止再次输出
                }
                if(a[i]>='0'&&a[i]<='9'){
                printf("0%c:",a[i]);//按要求输出
                break;
                }
            }
            if(a[i]>='A'&&a[i]<='G'&&t++==0)
            printf("%s ",wxx[(int)(a[i]-'A')]);//将字母转换成整型下标输出星期几
        }
    }
    scanf(" %s %s",a,b);
    for(i=0;a[i]!='\0'&&b[i]!='\0';i++){
        if(a[i]==b[i]&&((a[i]>='A'&&a[i]<='Z')||(a[i]>='a'&&a[i]<='z')))//判断第一个字母
        printf("%02d",i);//%02d非常方便不用判断i是否小于10可以直接控制输出位数不足补零
    }
    return 0;
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

西西努力变强

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值