PTA 1014

Explanation

本题使用了#include <ctype.h>库下的两个函数:

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 <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>

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;
}
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值