1260 - C语言10.30

通过次数

0

提交次数

0

时间限制 : 1 秒 内存限制 : 32 MB

写一个函数,实现两个字符串的比较过程。即自己写一个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,则输出负值。

题目输入

有两行,每行有一个不包含空格的字符串,即参与比较的两个字符串。保证每个字符串的长度都不超过200。

题目输出

只有一个整数,即strcmp比较两个字符串的返回值。

请注意行尾输出换行。

输入/输出样例

输入格式

ThisisLarger.
ThisissMALLER.

输出格式

-39

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

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