这是一道比较繁琐的题,题目是这样的:
首先的难点就在于,一对相同的字母(数字)是指在一对字符串上相同位置的相同字母,
这其实让题目更简单,只要三个循环就可以完成题目。然后是相同字母的位置代表星期几,小时数。值得是字母在字母表中的位置:比如D是第四个。最后一点是输出时间的小时和分钟时,若时间小于10应该在个位前面加'0'补足两位数、分析完毕,展示代码:
#include <cstdio>
#include <iostream>
#include <cstring>
#include <cmath>
using namespace std;
string day[7] = { "MON","TUE","WED","THU","FRI","SAT","SUN"};
string a,b,c,d;//两对字符串
int pos;//记录第一个相同大写字母的位置
//输出星期几
void week_Day(){
for(int i = 0; i < a.length() && i < b.length(); i++){
if(a[i] == b[i] && a[i] - 'A'>= 0 && a[i] - 'G'<= 0){
cout << day[a[i] - 'A'] << " ";
pos = i;//记录第一对大写字母的位置
break;//找到就推出
}
}
}
//输出小时
void time_Hour(){
for(int i = pos + 1; i < a.length() && i < b.length(); i++){
if(a[i] == b[i])
if(a[i] - '0' >= 0 && a[i] - '9' <= 0){//找到的属于0~9
cout << "0" << a[i] - '0' << ":";
break;//找到退出
}
else if(a[i] - 'A'>= 0 && a[i] - 'N' <= 0){//找到的属于A~G
cout << a[i] - 'A' + 10 << ":";
break;
}
}
}
//输出分钟
void time_Mi(){
for(int i = 0; i < c.length() && i < d.length() && i < 60; i++){
if(c[i] == d[i]){
if ((c[i] - 'a' >= 0 && c[i] - 'z' <= 0) || (c[i] - 'A' >= 0 && c[i] - 'Z' <= 0))//满足是英文字母
if(i < 10)
cout << "0" << i << endl;//小于十时,前面加上0补足两位
else
cout << i << endl;//直接输出分钟
}
}
}
int main(){
cin >> a >> b >> c >> d;//输入
week_Day();
time_Hour();
time_Mi();
return 0;
}
[题目链接]:(pintia.cn/problem-set…)