一般我们用strcmp可比较两个字符串的大小,比较方法为对两个字符串从前往后逐个字符相比较(按ASCII码值大小比较),直到出现不同的字符或遇到'\0'为止。如果全部字符都相同,则认为相同;如果出现不相同的字符,则以第一个不相同的字符的比较结果为准。但在有些时候,我们比较字符串的大小时,希望忽略字母的大小,例如"Hello"和"hello"在忽略字母大小写时是相等的。请写一个程序,实现对两个字符串进行忽略字母大小写的大小比较。
Input如果第一个字符串比第二个字符串大,输出一个字符">"
如果两个字符串相等,输出一个字符"="
Hello hello
=
题目分析:那道题目先想到一个个字符比较,不考虑大小写先全部转换成小写,直接用函数就OK,然后就分两种情况,一是第一个字符串比第二个字符长,二是短,(而且中间比较时一定要分先后顺序,逻辑顺序要明确,先输入的哪个字符串就先将哪个字符串与另一个比较,不能将后来的与前面进行比较,不然导致逻辑错误,)
还有一个小问题,就是赋值用=,比较用==,)
AC程序
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <ctype.h> #define N 80 /* run this program using the console pauser or add your own getch, system("pause") or input loop */ char s[N + 1],t[N + 1]; int main() { int i,j,lens,lent; gets(s); gets(t); lens = strlen(s); lent = strlen(t); for(i = 0; i < lens; i++) s[i] = tolower(s[i]); for(j = 0; j < lens; j++) t[j] = tolower(t[j]); if(lens > lent) { for(i = 0; i < lens;) { if(t[i] == s[i]){ i++; } else if(t[i] < s[i]) { printf(">"); break; } else if(t[i] > s[i]) { printf("<"); break; } } if(i == lens) printf("=\n"); } else { for(i = 0; i < lent;) { if(s[i] == t[i]) i++; else if(s[i] > t[i]) { printf(">"); break; } else if(s[i] < t[i]) { printf("<"); break; } } if(i == lent) printf("=\n"); } return 0; }