坑点归纳:
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;
}