题目
翻译
题目
小Petya喜欢礼物。他妈妈为了他的生日买来了2个相同长度的字符串。字符串由大小写拉丁字母组成。现在Petya想按字典顺序比较这2个字符串。不考虑字母大小写,也就是说,大写字母等同于小写字母。帮助Petya完成这次比较。
输入
前两行各包含一个字符串。字符串的长度大于等于1且小于等于100.确保字符串长度相等同时只包括大小写的拉丁字母。
输出
如果第一个字符串小于第二个,则输出“-1”。如果第二个字符串小于第一个字符串,则输出“1”。如果字符串相等,则输出“0”。注意,字符串比较时不考虑大小写。
分析
字符串的比较,即比较字符串中首个不同的字符,ASCII码大者为大。由于string.h下已有比较函数strcmp(考虑大小写)和stricmp(不考虑大小写),故直接比较即可,若不用该函数,可通过循环进行单个字符比较,遇到不同后比较并输出结果。
代码
#include<iostream>
#include<string.h>
#include<math.h>
using namespace std;
int main()
{
char str1[101], str2[101];
cin >> str1 >> str2;
int res = stricmp(str1, str2);
cout << (res!=0?res/abs(res):0)<<endl;
/*因为stricmp会返回差值,所以需要归1化,即除以本身的绝对值,其次0不能做除数,故排除*/
return 0;
/*不用比较函数的话。
for (int i = 0; i < strlen(str1); i++)
{
str1[i] = str1[i] > 90 ? str1[i] : str1[i] + 32;
str2[i] = str2[i] > 90 ? str2[i] : str2[i] + 32;
if (str1[i] - str2[i] != 0)
{
cout << (str1[i] > str2[i] ? 1 : -1);
return 0;
}
}
cout << 0;
return 0;
*/
}