code1 14分
14分,中间三个测试点没过
#include<iostream>
#include<string>
#include<cctype>
using namespace std;
int main()
{
int flag = 0;
string s1, s2, s3, s4;
cin >> s1>>s2>>s3>>s4;
string harsh[7] = { "MON","TUE" ,"WED","THU","FRI","SAT","SUN"};
int yingshe[14] = { 10,11,12,13,14,15,16,17,18,19,20,21,22,23 };
for (int i = 0; i < s1.length(); i++) {
if (s1[i] == s2[i]) {
if (isupper(s1[i])&&flag==0){
cout << harsh[s1[i] - 'A'] << " ";
flag++;
continue;
}
if (isupper(s1[i]) && flag!=0) {
cout << yingshe[s1[i] - 'A'] << ":";
break;
}
if (isdigit(s1[i]) && flag != 0){
printf("%02d:", s1[i] - '0');
break;
}
}
}
for (int i = 0; i < s3[i]; i++) {
if (s3[i] == s4[i]&&(isalpha(s3[i]))) {
printf("%02d", i);
break;
}
}
return 0;
}
bug在于对字符的范围没有判断
code2 18分
18分,第四个测试点没过
#include<iostream>
#include<string>
#include<cctype>
using namespace std;
int main()
{
int flag = 0;
string s1, s2, s3, s4;
cin >> s1>>s2>>s3>>s4;
string harsh[7] = { "MON","TUE" ,"WED","THU","FRI","SAT","SUN"};
int yingshe[14] = { 10,11,12,13,14,15,16,17,18,19,20,21,22,23 };
for (int i = 0; i < s1.length(); i++) {
if (s1[i] == s2[i]) {
if (isupper(s1[i])&&flag==0&&s1[i]-'0'>='A'-'0'&&s1[i]-'0'<='G'-'0'){
cout << harsh[s1[i] - 'A'] << " ";
flag++;
continue;
}
if (isupper(s1[i]) && flag!=0&& s1[i] - '0' >= 'A'-'0'&&s1[i]-'0' <= 'N'-'0') {
cout << yingshe[s1[i] - 'A'] << ":";
break;
}
if (isdigit(s1[i]) && flag != 0){
printf("%02d:", s1[i] - '0');
break;
}
}
}
for (int i = 0; i < s3[i]; i++) {
if (s3[i] == s4[i]&&(isalpha(s3[i]))) {
printf("%02d", i);
break;
}
}
return 0;
}
bug在于:最后的bug竟然在,控制s3的长度,我想拍死我自己,吐血
code3 20分
#include<iostream>
#include<string>
#include<cctype>
using namespace std;
int main()
{
int flag = 0;
string s1, s2, s3, s4;
cin >> s1>>s2>>s3>>s4;
string harsh[7] = { "MON","TUE" ,"WED","THU","FRI","SAT","SUN"};
int yingshe[14] = { 10,11,12,13,14,15,16,17,18,19,20,21,22,23 };
for (int i = 0; i < s1.length()&&i<s2.length(); i++) {
if (s1[i] == s2[i]) {
if (isupper(s1[i])&&flag==0&&s1[i]-'0'>='A'-'0'&&s1[i]-'0'<='G'-'0'){
cout << harsh[s1[i] - 'A'] << " ";
flag++;
continue;
}
if (isupper(s1[i]) && flag!=0&& s1[i] - '0' >= 'A'-'0'&&s1[i]-'0' <= 'N'-'0') {
cout << yingshe[s1[i] - 'A'] << ":";
break;
}
if (isdigit(s1[i]) && flag != 0){
printf("%02d:", s1[i] - '0');
break;
}
}
}
for (int i = 0; i < s3.length(); i++) {
if (s3[i] == s4[i]&&(isalpha(s3[i]))) {
printf("%02d", i);
break;
}
}
return 0;
}
优化
判断字符的范围,这也说明了自己对字符串的不熟悉
if (isupper(s1[i])&&flag==0&&s1[i]-'0'>='A'-'0'&&s1[i]-'0'<='G'-'0'){
改为
if (isupper(s1[i])&&flag==0&&s1[i]>='A'&&s1[i]<='G'){