此题并不难,只是坑比较多。
坑1:题目中的第几对的“对”指的是两个字符串对应位置的两个字母,叫一对,并不是同一个字符串的相邻两个字符叫一对
坑2:当输出天、时后应该立刻结束第一第二个字符串的 *** 作
#include
#include
using namespace std;
unsigned int length(string& str1, string& str2)
{
if (str1.length() > str2.length())
{
return str2.length();
}
else
{
return str1.length();
}
}
int main()
{
enum
{
MON = 'A',TUE='B', WED='C', THU='D',FRI='E',SAT='F',SUN='G'
};
vector
for (int i = 0; i < 4; i++)
{
string str;
cin >> str;
v.push_back(str);
}
int loc = 0;
for (unsigned int i = 0; i < length(v[0], v[1]); i++)
{
//找出相同的位置并记录下来
if ((v[0][i] == v[1][i]) && (v[0][i] >= 'A' && v[0][i] <= 'G'))
{
if (loc==0)
{
switch (v[0][i])
{
case MON:
cout << "MON ";
break;
case TUE:
cout << "TUE ";
break;
case WED:
cout << "WED ";
break;
case THU:
cout << "THU ";
break;
case FRI:
cout << "FRI ";
break;
case SAT:
cout << "SAT ";
break;
case SUN:
cout << "SUN ";
break;
}
loc=1;
continue;
}
}
if (loc == 1)
{
if ((v[0][i] == v[1][i]) && (v[0][i] >= '0' && v[0][i] <= '9'))
{
cout << "0" << v[0][i] << ":";
break;
}
else if ((v[0][i] == v[1][i]) && (v[0][i] >= 'A' && v[0][i] <= 'N'))
{
cout << (v[0][i] - 'A') + 10 << ":";
break;
}
}
}
for (unsigned int i = 0; i < length(v[2], v[3]); i++)
{
//找出相同的位置并记录下来
if (((v[2][i] >= 'A' && v[2][i] <= 'Z') || (v[2][i] >= 'a' && v[2][i] <= 'z')) &&(v[2][i] == v[3][i]))
{
if (i >= 0 && i <= 9)
{
cout << "0" << i << endl;
}
else
{
cout << i << endl;
}
}
}
system("pause");
return 0;
}
程序改进地方:比较字符串长度
int length=v[0].length() 解释:指的是如果v[0]的长度小于v[1]的长度就将v[0]的长度赋给length,否则就将v[1]的长度赋给length。 欢迎分享,转载请注明来源:内存溢出
评论列表(0条)