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

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

Time Limit:1000MS  Memory Limit:65536K
Total Submit:1021 Accepted:151 

Description 

一般我们用strcmp可比较两个字符串的大小,比较方法为对两个字符串从前往后逐个字符相比较(按ASCII码值大小比较),直到出现不同的字符或遇到‘\0’为止。如果全部字符都相同,则认为相同;如果出现不相同的字符,则以第一个不相同的字符的比较结果为准。但在有些时候,我们比较字符串的大小时,希望忽略字母的大小,例如“Hello”“hello”,在忽略字母大小写时是相等的。请写一个程序,实现对两个字符串进行忽略字母大小写的大小比较。 
要求用一个自定义函数实现忽略大小写的比较过程,用函数的返回值表示比较的结果:若返回值为0表示两个字符串相等;若返回值为1表示第一个字符串比第二个字符串大;若返回值为-1表示第一个字符串比第二个字符串小。 
函数定义为:int MyStrCmp(char *pStr1,char *pStr2)

Input 

输入数据共有两行,每行一个字符串,字符串中可能包含空格和其它非字母字符,并且每个字符串长度都不超过80个字符。

Output 

如果第一个字符串比第二个字符串小,输出一个字符“<”; 
如果第一个字符串比第二个字符串大,输出一个字符“>”; 
如果两个字符串相等,输出一个字符“=”

Sample Input 

Hello

hello

Sample Output 

=

Sample Result: 

Source 

POJ2721

注:

1.忽略大小写

2.字符串大小即是字符串长度


C代码如下:

#include <stdio.h>
#include <string.h>
int MyStrCmp(char *pStr1,char *pStr2)
{
int m;
int i;
for(i=0;*(pStr1+i)!='\0' && *(pStr2+i)!='\0';i++)
{
if((*(pStr1+i)<='Z'&& *(pStr1+i)>='A' ||*(pStr1+i)>='a'&&*(pStr1+i)<='z') && (*(pStr2+i)>='a' && *(pStr2+i)<='z' ||*(pStr2+i)<='Z'&&*(pStr2+i)>='A'))  /*保证字符串为英文字母*/
{
if(*(pStr1+i)==*(pStr2+i)-32 || *(pStr1+i)==*(pStr2+i)+32
) /*一定要先比较字符情况,再转换*/
{
*(pStr1+i) = *(pStr2+i);
}
}



}
if(strlen(pStr1)>strlen(pStr2))
{
m=1; /*一旦长度不同,字符串的大小就已经出来了*/
}
if(strlen(pStr1)<strlen(pStr2))
{
m=-1;
}
if(strlen(pStr1)==strlen(pStr2))
{
m = 0;
for(i=0;i<strlen(pStr1);i++)
{

if(*(pStr1+i)>*(pStr2+i))
{m = 1; break;}

if(*(pStr1+i)<*(pStr2+i))
{m =-1; break;}

  }
}




return (m);
}


int main()


{
int MyStrCmp(char *pStr1,char *pStr2);
int n;
char string1[81];
char string2[81];
char *p1;
char *p2;
gets(string1);
gets(string2);
p1 = string1;
p2 = string2;
n=MyStrCmp(p1,p2);
if(n==1)  printf(">\n");
if(n==-1) printf("<\n");
if(n==0)  printf("=\n");
return 0;
}



  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值