1260 - C语言10.30
写一个函数,实现两个字符串的比较过程。即自己写一个strcmp函数,函数的原型为:int strcmp(char *p1, char *p2)。设p1指向字符串s1,p2指向字符串s2。要求当s1=s2时,返回值为0;若s1≠s2,返回它们二者第一个不同字符的ASCII码差值(例如”BOY”与”BAD”,第二个字母不同,’O’与’A’只差为79-65=14)。如果s1>s2,则输出正值;如果s1<s2,则输出负值。
Input
有两行,每行有一个不包含空格的字符串,即参与比较的两个字符串。保证每个字符串的长度都不超过200。
Output
只有一个整数,即strcmp比较两个字符串的返回值。
请注意行尾输出换行。
Examples
Input
ThisisLarger. ThisissMALLER.
Output
-39
Solution C
int add(char a[],char b[]) { int lena,lenb,i,count; lena=strlen(a); lenb=strlen(b); count=0; if(lena<lenb) for(i=0;i<=lena;i++) { if(i==lena)count=-1*(b[i]-'0'); if(a[i]!=b[i]){count=a[i]-b[i];break;} } else if(lena>lenb) for(i=0;i<=lenb;i++) { if(i==lenb)count=a[i]-'0'; if(a[i]!=b[i]){count=a[i]-b[i];break;} } else for(i=0;i<=lenb;i++) { if(a[i]!=b[i]){count=a[i]-b[i]; break;} } return count; } int main(int argc, char* argv[]) { char str[200],str1[200]; while(gets(str)) {gets(str1); printf("%d\n",add(str,str1)); } return 0; }
Solution C++
#include <stdio.h> int main() { int strcmp(char *p1, char *p2); char s1[201], s2[201]; scanf("%s", s1); scanf("%s", s2); printf("%d\n", strcmp(s1, s2)); return 0; } /* 字符串比较函数 */ int strcmp(char *p1, char *p2) { int i; /* 在两个字符串都没有结束时,依次比较每一个字符 */ for (i = 0;*(p1 + i) != 0 && *(p2 + i) != 0;i++) { if (*(p1 + i) != *(p2 + i)) return (*(p1 + i) - *(p2 + i)); } /* 如果只有一个字符串结束,则再次比较并返回差值 */ if (*(p1 + i) != *(p2 + i)) return (*(p1 + i) - *(p2 + i)); /* 两个字符串相等 */ return 0; }