PTA 1014

Explanation

本题使用了#include 库下的两个函数:

int isdigit(int c); //检查所传的字符是否是十进制数字字符。
int isalpha((int c);//检查所传的字符是否是字母

此外,请注意在申明字符串数组的时候,要考虑\0需要占用一个字符位置,如下:

//第二维长度声明为5,表示每行最多可存储有5个字符(含'\0')的字符串,
//当初始化列表中提供的字符串长度小于5时,系统将其后剩余的单元自动初始化为'\0' 
char day[][5]={"MON ","TUE ","WED ","THU ","FRI ","SAT ","SUN "};

突然好想去学C++了,用个string就可以把上面的字符串数组给盖过去了,还不需要考虑长度问题!

Code

#include 
#include 
#include 
#include 

int main(int argc, char *argv[]) {
	char day[][5]={"MON ","TUE ","WED ","THU ","FRI ","SAT ","SUN "};
	char text[4][60]; //存储外设输入的四个字符串;
	char t[2]; //存储从前两个字符串的对比得到的星期和时钟信息;
	int pos; //存储后两个字符对比的位置信息;
	int m;	
	int i,j=0,k=0;//用于计数
	for(i=0;i<4; i++)
		scanf("%s", &text[i]);
	while( j<strlen(text[0]) && j<strlen(text[1])){ //找出星期数
		if(text[0][j]==text[1][j] && text[0][j]>='A' && text[0][j]<='G') 
		{
			t[0]=text[0][j];
			break;
		}		
		j++;	
	}
	j=j+1;
	while( j<strlen(text[0]) && j<strlen(text[1])){ //找出时钟数
		if(text[0][j]==text[1][j] && ((text[0][j]>='A' && text[0][j]<='G') || isdigit(text[0][j]))) 
		{
			t[1]=text[0][j];
			break;
		}		
		j++;	
	}
	while( k<strlen(text[2]) && k<strlen(text[3])) {//找出分钟数
        if (text[2][k]==text[3][k] && isalpha(text[2][k])) {
            pos = k;
            break;
        }
        k++;
    }
    m = isdigit(t[1]) ? t[1] - '0' : t[1] - 'A' + 10;
	printf("%s%02d:%02d", day[t[0]-'A'], m, pos);		
	return 0;
}

你可能感兴趣的:(PTA)