忽略大小写比较字符串大小

POJ NOI0107-16 忽略大小写比较字符串大小

一般我们用strcmp可比较两个字符串的大小,比较方法为对两个字符串从前往后逐个字符相比较(按ASCII码值大小比较),直到出现不同的字符或遇到'\0'为止。如果全部字符都相同,则认为相同;如果出现不相同的字符,则以第一个不相同的字符的比较结果为准。但在有些时候,我们比较字符串的大小时,希望忽略字母的大小,例如"Hello"和"hello"在忽略字母大小写时是相等的。请写一个程序,实现对两个字符串进行忽略字母大小写的大小比较。

Input
输入为两行,每行一个字符串,共两个字符串。(请用gets录入每行字符串)(每个字符串长度都小于80)
Output
如果第一个字符串比第二个字符串小,输出一个字符"<"
如果第一个字符串比第二个字符串大,输出一个字符">"
如果两个字符串相等,输出一个字符"="
Sample Input
Hello
hello
Sample Output
=
题目分析:那道题目先想到一个个字符比较,不考虑大小写先全部转换成小写,直接用函数就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;
}

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值