求助:直接写两个if语句与写if;else if;有什么区别吗?

大侦探福尔摩斯接到一张奇怪的字条:“我们约会吧! 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

你代码的第13行有将temp=1;如果下面不加else,则下面的判断语句会成立;然而原程序的意思是两个判断语句只能有一个
温馨提示:答案为网友推荐,仅供参考

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网