问题链接:POJ NOI0107-16 忽略大小写比较字符串大小。
总时间限制:
1000ms
内存限制:
65536kB
描述
一般我们用strcmp可比较两个字符串的大小,比较方法为对两个字符串从前往后逐个字符相比较(按ASCII码值大小比较),直到出现不同的字符或遇到'\0'为止。如果全部字符都相同,则认为相同;如果出现不相同的字符,则以第一个不相同的字符的比较结果为准。但在有些时候,我们比较字符串的大小时,希望忽略字母的大小,例如"Hello"和"hello"在忽略字母大小写时是相等的。请写一个程序,实现对两个字符串进行忽略字母大小写的大小比较。
输入
输入为两行,每行一个字符串,共两个字符串。(请用gets录入每行字符串)(每个字符串长度都小于80)
输出
如果第一个字符串比第二个字符串小,输出一个字符"<"
如果第一个字符串比第二个字符串大,输出一个字符">"
如果两个字符串相等,输出一个字符"="
样例输入
Hello
hello
样例输出
=
问题分析:(略)
程序说明:这个程序使用了指针,也可以使用数组下标取字符。进行比较之前如果是大写字母就将其转换为小写字母,然后再比较。
题记:写程序最需要的是逻辑清晰。
AC的C语言程序如下:
/* Bailian2721 忽略大小写比较字符串大小 */
#include <stdio.h>
#include <ctype.h>
#define N 80
char s[N], t[N];
int main(void)
{
char cs, ct, *ps, *pt;
gets(s);
gets(t);
ps = s;
pt = t;
do {
cs = *ps;
if(isupper(cs))
cs = tolower(cs);
ct = *pt;
if(isupper(ct))
ct = tolower(ct);
if(cs < ct) {
printf("<\n");
break;
} else if(cs > ct) {
printf(">\n");
break;
} else {
if(cs == '\0') {
printf("=\n");
break;
}
ps++;
pt++;
}
} while(1);
return 0;
}