编写一个C语言函数,比较两个字符串的大小

 我来答
问明6E
高粉答主

2019-06-01 · 每个回答都超有意思的
知道答主
回答量:279
采纳率:100%
帮助的人:12.5万
展开全部

#include<stdio.h>

#define N 100

int input(char*a,char*b)//输入两个字符串

{

printf("Input the first information:\n");

fgets(a,N,stdin);

printf("Input the secend information:\n");

fgets(b,N,stdin);

}

int my_strcmp(char*a,char*b)//比较字符串每个字符的大小

{

while((*a!='\0')&&(*b!='\0'))

{

if(*a>*b)

{

return 0;

}

else if(*a<*b)

{

return 1;

}

else

{

a++;

b++;

}

}

if((*a=='\0')&&(*b!='\0'))//字符串b比字符串a长

{

return 1;

}

else if((*a!='\0')&&(*b=='\0'))//字符串a比字符串b长

{

return 0;

}

else

{

return 2;

}

}

int main()

{

char a[N]={0};

char b[N]={0};

int net2=0;

input(a,b);//调用输入函数

net2=my_strcmp(a,b);//调用比较大小函数

if(0==net2)//输出大小

{

printf("a>b\n");

}

else if(1==net2)

{

printf("a<b\n");

}

else

{

printf("a=b\n");

}

return 0;

}

扩展资料:

一、return在函数中的作用

我们如果将函数看做一个加工厂,参数就是我们向加工厂投入的原料,具体的函数功能实际上就是加工的过程,而return语句代表返回值,就是加工厂在实现加工之后给“投资人”的成品。

二、return语句的特点

1、在函数当中,遇到return语句之后就意味着函数运行的结束,在此之后的代码是不运行的。

2、它不支持任何运算也没有任何内建方法,和任何其他的数据类型比较是否相等时永远返回false,也可以将None赋值给任何变量。

3、执行到return语句时,会退出函数,return之后的语句不再执行。但将return语句放在try语句块中,是个例外。

三、return的默认值:return函数默认的返回值为undefined。

985967518
推荐于2017-09-21 · 知道合伙人教育行家
985967518
知道合伙人教育行家
采纳数:18027 获赞数:109858
14年本科毕业于河南理工大学,至今就读于河南理工大学攻读硕士学位,从事编程学习已有5年。

向TA提问 私信TA
展开全部

思路:字符串比较大小即两个字符串自左向右逐个字符相比(按ASCII值大小相比较),直到出现不同的字符或遇'\0'为止。当s1<s2时,返回-1;当s1=s2时,返回 0;当s1>s2时,返回1。

参考代码:

#include <stdio.h>
int strcmp(char *s1,char *s2) {
int i ;
for(i=0;(s1[i]!='\0')&&(s2[i] != '\0');i++) {
if(s1[i] > s2[i]) return 1;
else if(s1[i] < s2[i]) return -1;
}
if(s1[i] != '\0') return 1;
if(s2[i] != '\0') return -1;
return 0;
}
int main() {
char a[100],b[100];
gets(a);
gets(b);
if(strcmp(a,b)==1) printf("字符串a>字符串b");
else if(strcmp(a,b)==0) printf("字符串a=字符串b"); 
else printf("字符串a<字符串b"); 
return 0;
}
/*
运行结果:
asdg
asdg
字符串a=字符串b
*/
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-12-03
展开全部
#include <stdio.h>int MyStrcmp(char *p1,char *p2) {
int i = 0;
for(;((p1[i] != '\0') && (p2[i] != '\0'));i++) {
if(p1[i] > p2[i]) return 1;
else if(p1[i] < p2[i]) return -1;
}
if((p1[i] == '\0') && (p2[i] == '\0')) return 0;
if(p1[i] == '\0') return -1;
return 1;
}int main() {
int cmpres;
char s1[50];
char s2[50];
printf("Enter s1 you want to estimate:");
scanf("%s",s1);
printf("Enter s2 you want to estimate:");
scanf("%s",s2);
cmpres = MyStrcmp(s1,s2);
if(cmpres > 0) printf("s1 > s2\n\n");
else if(cmpres == 0) printf("s1 = s2\n\n");
else printf("s1 < s2\n\n");
return 0;
}
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式