C语言编程-用数组方法编写,比较输入的两组字符串的大小。 50

输入2组字符串,用函数strcmp比较大小使用intstrcmp(chars1[],chars2[])相等时,输出0,不相等时,输出大的那一项不好意思,之前没说,不能使用... 输入2组字符串,用函数strcmp比较大小
使用int strcmp(char s1[],char s2[])
相等时,输出0,不相等时,输出大的那一项
不好意思,之前没说,不能使用strcmp,需要自己编写
展开
 我来答
miniappacE4CNDxlhi0i
2008-09-24 · TA获得超过355个赞
知道小有建树答主
回答量:461
采纳率:0%
帮助的人:374万
展开全部
char * strcmp(char s1[],char s2[])
{
char *p,*q;
p=s1;
q=s2;
while(*(q++)==*(p++));
if(*q>*p) return s1;
else if(*q<*p) return s2;
else return 0;
}
这样就可以了。但是返回0时,该数据不是地址,所以这样表达是有问题的。否则返回数组的地址。但可以改进一下,相等时返回NULL,就可以解决问题了。
char * strcmp(char s1[],char s2[])
{
char *p,*q;
p=s1;
q=s2;
while(*(q++)==*(p++));
if(*q>*p) return s1;
else if(*q<*p) return s2;
else return NULL;
}
调用方法:
if ! strcmp(s1[],s2[]) then printf("%s",strcmp(s1[],s2[]));
else printf("chars s1=s2!hahaha....");
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zxj_pass
2008-09-24
知道答主
回答量:9
采纳率:0%
帮助的人:0
展开全部
我明白LZ的意思 Strcmp只有比较大小的功能 没有“相等时,输出0,不相等时,输出大的那一项”

这个也很简单呀 整个程序我就不写了,关键语句如下:

r=strcmp(s1,s2);
if(!r)
cout<<"0"<<endl;
else
if(r<0)
cout<<s2<<endl;
else
cout<<s1<<endl;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
qiuhaoyi111
2008-09-24 · TA获得超过801个赞
知道小有建树答主
回答量:624
采纳率:0%
帮助的人:431万
展开全部
main(){
char s1[100];
char s2[100];
scanf("%s",&s1);
scanf("%s",&s2);
if(strcmp(s1,s2))
printf("%s",s2);
else
printf("%s",s1);

}
经过上机 绝对正确
如果要用函数调用的话 把if语句放到函数上面去就可以了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
s7t3
2008-09-24 · TA获得超过373个赞
知道小有建树答主
回答量:318
采纳率:0%
帮助的人:0
展开全部
int strcmp(char s1[],char s2[])
{char flag='';
int i=0;
while ((s1[i]!='\n')&&(s2[i]!='\0'))
if(s1[i]<s2[i])
{flag='2';break;}
else if(s2[i]<s1[i])
{ flag='1';break;}
else
i++;
if(flag=='')
if(s1[i]=='\0'&&s2[i]=='\0')
flag='0';
else if (s1[i]=='\n')
flag='2';
else flag='1';
if(flag=='1')
return(1);
else if(flag=='2')
return(2);
else return(0);
}
main()
{ char s1[100],s2[100];
int n;
scanf("%s",s1);
scanf("%s",s2);
n=strcmp(s1,s2);
printf("%d\n",n);
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
高金山
2008-09-24 · TA获得超过1万个赞
知道大有可为答主
回答量:4101
采纳率:0%
帮助的人:1757万
展开全部
这么多人在干嘛呢?

#include <stdio.h>

int strcmp(char s1[],char s2[])
{
int i1,i2;

for(i1=0,i2=0;s1[i1]!=0&&s2[i2]!=0;i1++,i2++)
{
if(s1[i1]>s2[i2])
return 1;
else if(s1[i1]<s2[i2])
return -1;
}
if(s1[i1]>s2[i2])
return 1;
else if(s1[i1]<s2[i2])
return -1;
else
return 0;
}

void main()
{
char s1[100];
char s2[100];

printf("Input 2 string:");
scanf("%s%s",&s1,&s2);
if(strcmp(s1,s2)==0)
printf("0");
else if(strcmp(s1,s2)>0)
printf("%s",s1);
else
printf("%s",s2);
}
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式