大侦探福尔摩斯接到一张奇怪的字条:“我们约会吧! 3485djDkxh4hhGE 2984akDfkkkkggEdsb s&hgsfdk d&Hyscvnm”。大侦探很快就明白了,字条上奇怪的乱码实际上就是约会的时间“星期四 14:04”,因为前面两字符串中第1对相同的大写英文字母(大小写有区分)是第4个字母'D',代表星期四;第2对相同的字符是'E',那是第5个英文字母,代表一天里的第14个钟头(于是一天的0点到23点由数字0到9、以及大写字母A到N表示);后面两字符串第1对相同的英文字母's'出现在第4个位置(从0开始计数)上,代表第4分钟。现给定两对字符串,请帮助福尔摩斯解码得到约会的时间。
输入格式:
输入在4行中分别给出4个非空、不包含空格、且长度不超过60的字符串。
输出格式:
在一行中输出约会的时间,格式为“DAY HH:MM”,其中“DAY”是某星期的3字符缩写,即MON表示星期一,TUE表示星期二,WED表示星期三,THU表示星期四,FRI表示星期五,SAT表示星期六,SUN表示星期日。题目输入保证每个测试存在唯一解。
输入样例:
3485djDkxh4hhGE
2984akDfkkkkggEdsb
s&hgsfdk
d&Hyscvnm
输出样例:
THU 14:04
[html] view plain copy
#include<stdio.h>
#include<string.h>
int main(){
char a[4][20];
char week[7][5]={"MON","TUE","WED","THU","FRI","SAT","SUN"};
int i,j;
int temp=0;
for(i=0;i<4;i++) gets(a[i]);
for(i=0;i<strlen(a[0])&&i<strlen(a[1]);i++) {
if(a[0][i]==a[1][i]&&temp==0){
if(a[0][i]>='A'&&a[0][i]<='G') {
printf("%s ",week[a[0][i]-'A']);
temp=1;
}
}
if(a[0][i]==a[1][i]&&temp==1){ //如果该处写 if( if(a[0][i]==a[1][i]&&temp==1){};则出错
if(a[0][i]>='0'&&a[0][i]<='9') {
printf("%02d:",a[0][i]-'0');
break;
}
if(a[0][i]>='A'&&a[0][i]<='N') {
printf("%02d:",a[0][i]-'A'+10);
break;
}
}
}
for(i=0;i<strlen(a[2])&&i<strlen(a[3]);i++){
if(a[2][i]==a[3][i]){
if((a[2][i]>='A'&&a[2][i]<='Z')||(a[2][i]>='a'&&a[2][i]<='z')){
printf("%02d",i);
break;
}
}
}
return 0;
}
如果 不加else,直接用if的话
输入:
3485djDkxh4hhGE
2984akDfkkkkggEdsb
s&hgsfdk
d&Hyscvnm
输出:
THU 13:04
如果加了else if的话
输入:
3485djDkxh4hhGE
2984akDfkkkkggEdsb
s&hgsfdk
d&Hyscvnm
输出:
THU 14:04
求助:直接写两个if语句与写if;else if;有什么区别吗?
你代码的第13行有将temp=1;如果下面不加else,则下面的判断语句会成立;然而原程序的意思是两个判断语句只能有一个
温馨提示:答案为网友推荐,仅供参考