程序员测试题:PAT 乙级 1014 福尔摩斯的约会 (C语言版本)
PTA题目
思路:
完全根据题意写代码,注意关键词眼,有的是第一个字符,有的是第一个大写字母,测试点有不过的地方,还请大家讨论。
#include <stdio.h>
#include <string.h>
#include <math.h>
enum{
MON=1,
TUE,
WED,
THU,
FRI,
SAT,
SUN
}day;
int main()
{
char arr[4][60]= {0};
int i;
for(i=0;i<4;i++)
{
scanf("%s",arr[i]);
}
char dayc;
char hour;
char min;
char letter;//记录几点
//求星期几,几点
int flag=1;//比较第几个相等的标志位
int flag1=1;
int num=0;//记录第几个相同
for(i=0;i<60;i++)
{
if((arr[0][i]==arr[1][i])&&(flag==1))
{
if(arr[0][i]>'9')
{
flag++;
dayc=arr[0][i];
day = dayc-'A'+1;
}
}
else if((arr[0][i]==arr[1][i])&&(flag==2))//第二个相等的字符
{
flag++;
hour=arr[0][i];
if(hour>='A')
letter = hour-'A'+10;
else
letter = hour-'0';
}
if((arr[2][i]==arr[3][i])&&(flag1==1))//第1个相等的字符
{
if((arr[2][i]<'z')&&(arr[2][i]>'A'))
{
flag1++;
num=i;
}
}
}
switch (day){
case MON:
printf("MON ");
break;
case TUE :
printf("TUE ");
break;
case WED:
printf("WED ");
break;
case THU:
printf("THU ");
break;
case FRI:
printf("FRI ");
break;
case SAT:
printf("SAT ");
break;
case SUN:
printf("SUN ");
break;
}
printf("%d:",letter);
printf("%02d",num);
return 0;
}