忽略大小寫,比較字符串大小。

忽略大小寫比較字符串大小函數

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

Description spa

通常咱們用strcmp可比較兩個字符串的大小,比較方法爲對兩個字符串從前日後逐個字符相比較(按ASCII碼值大小比較),直到出現不一樣的字符或遇到‘\0’爲止。若是所有字符都相同,則認爲相同;若是出現不相同的字符,則以第一個不相同的字符的比較結果爲準。但在有些時候,咱們比較字符串的大小時,但願忽略字母的大小,例如「Hello」「hello」,在忽略字母大小寫時是相等的。請寫一個程序,實現對兩個字符串進行忽略字母大小寫的大小比較。 
要求用一個自定義函數實現忽略大小寫的比較過程,用函數的返回值表示比較的結果:若返回值爲0表示兩個字符串相等;若返回值爲1表示第一個字符串比第二個字符串大;若返回值爲-1表示第一個字符串比第二個字符串小。 
函數定義爲:int MyStrCmp(char *pStr1,char *pStr2)
blog

Input ip

輸入數據共有兩行,每行一個字符串,字符串中可能包含空格和其它非字母字符,而且每一個字符串長度都不超過80個字符。字符串

Output get

若是第一個字符串比第二個字符串小,輸出一個字符「<」; 
若是第一個字符串比第二個字符串大,輸出一個字符「>」; 
若是兩個字符串相等,輸出一個字符「=」
string

Sample Input it

Helloio

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; }