用C语言编一个函数实现strcmp的功能,下面是我在vc++编的,但是有错误,我不知错哪了,请高手指教,谢谢

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用C语言编一个函数实现strcmp的功能,下面是我在vc++编的,但是有错误,我不知错哪了,请高手指教,谢谢相关的知识,希望对你有一定的参考价值。

#include<stdio.h>
#include<math.h>
int main()

char cm[80],pp[80];
int ai,ni,num;
gets(cm);
gets(pp);
for(ai=0;cm[ai];ai++,ni++)

if(cm[ai]>pp[ni])
printf("%s>%s",cm,pp);
if(cm[ai]<pp[ni])
printf("%s<%s",cm,pp);
if(cm[ai]==pp[ni])
num++;

if(num==ai)
printf("%s=%s",cm,pp);
return 0;

楼主你好!
你很多种情况都没有考虑到啊!比如abc和abcd这种情况,你考虑过吗?
根据你的代码改进如下:
#include<stdio.h>(所有的情况我都测试了,你试一试吧,看看还有那种情况漏了,帮我补上!)
#include<math.h>
int main()

char cm[80],pp[80];
int ai,ni,num;
gets(cm);
gets(pp);
for(ai=0,ni=0;cm[ai]!='\0'&&pp[ni]!='\0';ai++,ni++)

if(cm[ai]>pp[ni])
printf("%s>%s",cm,pp);
break;

if(cm[ai]<pp[ni])
printf("%s<%s",cm,pp);
break;


if(cm[ai]=='\0'&&pp[ni]!='\0')printf("%s<%s",cm,pp);
if(cm[ai]!='\0'&&pp[ni]=='\0')printf("%s>%s",cm,pp);
if(cm[ai]=='\0'&&pp[ni]=='\0')printf("%s=%s",cm,pp);
return 0;

希望我的回答对你有帮助!
参考技术A #include<stdio.h>
#include<math.h>
int main()

char cm[80],pp[80];
int ai,ni,num;
gets(cm);
gets(pp);
for(ai=0,ni=0;cm[ai];ai++,ni++)//ni的初始值要为0 否则ni就为随机值 则pp[ni]就找不到了

if(cm[ai]>pp[ni])

printf("%s>%s",cm,pp);
break;//有一个不同就终止循环

if(cm[ai]<pp[ni])

printf("%s<%s",cm,pp);
break;

if(cm[ai]==pp[ni])
num++;

if(num==ai)
printf("%s=%s",cm,pp);
return 0;

//可以了吗?追问

请问为什么=的情况不能输出printf("%s=%s",cm,pp)里面的内容呢?

追答

#include
#include
int main()

char cm[80]='\0',pp[80]='\0';
int ai,ni,num;
gets(cm);
gets(pp);
for(ai=0,ni=0;cm[ai];ai++,ni++)//ni的初始值要为0 否则ni就为随机值 则pp[ni]就找不到了

if(cm[ai]>pp[ni])

printf("%s>%s",cm,pp);
return 0;//有一个不同就终止循环

if(cm[ai]<pp[ni])

printf("%s<%s",cm,pp);
return 0;


printf("%s=%s",cm,pp);
return 0;
//这下就可以了 有不懂可以追问 至于楼上的说的问题 其实你已经考虑到了 不信的话你就可以试试这个程序 我只是做了小小的改动

追问

请问这次为什么改这个char cm[80]='\0',pp[80]='\0';
还有第一次的break怎么改成了return 0;想知道原因,希望你肯耐心的解答一哈,谢谢

追答

char cm[80]='\0',pp[80]='\0' 哦 这个可以不用改的

这语句的作用是给2个字符串初始化为结束 在这里是没有必要的 可以不要
把break改成return 0是因为当比较完2个字符串时如果前面的所有字符都相同则不执行return 0
如果有不同的字符则会执行return 0 就表示main函数已经执行完了
也就是说不执行下面的printf("%s=%s",cm,pp);这个语句了
一个函数只要只执行了return 语句则该函数已经执行完了

C语言试题193之实现strcmp函数功能

以上是关于用C语言编一个函数实现strcmp的功能,下面是我在vc++编的,但是有错误,我不知错哪了,请高手指教,谢谢的主要内容,如果未能解决你的问题,请参考以下文章

C语言试题193之实现strcmp函数功能

C语言试题193之实现strcmp函数功能

C语言试题193之实现strcmp函数功能

c语言定义函数实现strcmp功能

C语言中:strcmp函数如何使用?

c语言编程 写一个函数,实现两个字符串的比较,即写一个类似于strcmp功能的函数。急求,谢谢!