输入 : 四个字符串
输出:DAY:HH:MM 这样的格式
思路:
1. 求DAY 扫描前两串字符串,记录第一对相同位置的大写字母,求其与A的距离 来判断星期几
星期一到星期天的话 从A-G扫描就够啦。扫出A-G以外的就对应错啦
2. 求HH 继续往后找 相同位置的若是数字0-9则对应0-9,若是字母A-N,则对应10-23
A-N同理
3. 求MM 扫描后两个字符串,寻找相同位置的大小写字母 获取其位置。
注意:
1. 二维数组的初始化列数设为5 (设3报错 不知道为啥)
2. 注意这种时间的格式控制 %02d:
3.注意转换小时的时候 满足是数字就跳出 满足是字母就跳出
#include <cstdio>
#include <cstring>
int main(){
char week [7][5]= {
"MON","TUE","WED","THU","FRI","SAT","SUN"
};
char str1[70],str2[70],str3[70],str4[70];
gets(str1);
gets(str2);
gets(str3);
gets(str4);
int len1=strlen(str1);
int len2=strlen(str2);
int len3=strlen(str3);
int len4=strlen(str4);
//别忘了声明i
int i;
//还是得记长度 不然超过其中一个的长度 另一个没超过可能会报错
for(i=0;i<len1&&i<len2;i++){
//如果相等的话,验证是否大写字母验证一个字符串就够了
if(str1[i]==str2[i]&&str1[i]>='A'&&str1[i]<='G'){
//直接输出就好不用再存变量里啦
printf("%s ",week[str1[i]-'A']);
//注意这里输出的week对应的不是i
break;
}
}
//在上面基础之后往后找,直接后自加,注意这种写法
for(i++;i<len1&&i<len2;i++){
if(str1[i]==str2[i]){
//!!!!!!!!!!!!!!!!!注意这里 满足一个就要break
if(str1[i]>='0'&&str1[i]<='9'){
printf("%02d:",str1[i]-'0');
break;
}
if(str1[i]>='A'&&str1[i]<='N'){
printf("%02d:",10+str1[i]-'A');
break;
}
}
}
for(int i=0;i<len3&&i<len4;i++){
if(str3[i]==str4[i]){
if((str3[i]>='A'&&str3[i]<='Z')||str3[i]>='a'&&str3[i]<='z'){
printf("%02d",i);
//注意这里是输出当前位置,格式控制
break;
}
}
}
return 0;
}