一般我们用strcmp可比较两个字符串的大小,比较方法为对两个字符串从前往后逐个字符相比较(按 ASCII 码值大小比较),直到出现不同的字符或遇到'\0'为止。如果全部字符都相同,则认为相同;如果出现不相同的字符,则以第一个不相同的字符的比较结果为准(注意:如果某个字符串遇到'\0',而另一个字符串还未遇到'\0',则前者小于后者)。
但在有些时候,我们比较字符串的大小时,希望忽略字母的大小,例如"Hello"和"hello"在忽略字母大小写时是相等的。请写一个程序,实现对两个字符串进行忽略字母大小写的大小比较。
输入格式
输入为两行,每行一个字符串,共两个字符串。(每个字符串长度都小于 80 且只包含大小写字母)
输出格式
如果第一个字符串比第二个字符串小,输出一个字符"<";
如果第一个字符串比第二个字符串大,输出一个字符">";
如果两个字符串相等,输出一个字符"="。
Sample 1
Input | Output |
Hellohowareyou helloHowareyou | = |
代码实现:
#include <stdio.h>
#include <string.h>
int main() {
char str1[85], str2[85];
scanf("%s", str1);
getchar();
scanf("%s", str2);
int len1, len2;
len1 = strlen(str1);
len2 = strlen(str2);
for (int i = 0; i < len1; i++) {
if (str1[i] >= 'a' && str1[i] <= 'z')
str1[i] -= 32;
else
continue;
}
for (int j = 0; j < len2; j++) {
if (str2[j] >= 'a' && str2[j] <= 'z')
str2[j] -= 32;
else
continue;
}
int x = strcmp(str1, str2);
if (x > 0)
printf(">");
else if (x == 0)
printf("=");
else if (x < 0)
printf("<");
return 0;
}
题意描述:输入两个只包含空格和字母的字符串并对两个字符串进行
大小比较,前一个大的话,输出“>”,小的话,输出“<”,相等的话,
输出“=”。比较时调用函数strcmp,且要求比的时候忽略大小写。
解题思路:首先读入两个字符串,对其进行长度统计,然后因为要求
忽略大小写,所以设立for循环直接调用函数或者对比ASCII码将小写
转换为大写(或者将大写转换为小写),然后调用strcmp函数进行大小
比较,并注意函数的返回值,并按照题目要求进行对照输出。
错误描述:忘记函数返回值。