C语言的一个题,关于字符串的函数strcmp()

1.首先怎么才算是一个字符串大于另一个字符串???2.2.strcmp()函数不是返回他们第一个不匹配字母的ASSIC差值么???怎么会用这个函数比较???3.按这样比较... 1.首先怎么才算是一个字符串大于另一个字符串???2.
2.strcmp()函数不是返回他们第一个不匹配字母的ASSIC差值么???怎么会用这个函数比较???
3.按这样比较的话,s2 和 t 有什么区别,答案为什么选D而不选B????
若有
chars1[]="abc",s2[20],*t=s2;gets(t);
则下列语句中能够实现当字符串s1大于字符串s2时,输出s2的语句是()。 为什么???
A:if(strcmp(s1,s1)>0)puts(s2);
B:if(strcmp(s2,s1)>0)puts(s2);
C:if(strcmp(s2,t)>0)puts(s2);
D:if(strcmp(s1,t)>0)puts(s2);
展开
 我来答
sselniarb
2014-01-12 · TA获得超过3207个赞
知道小有建树答主
回答量:568
采纳率:0%
帮助的人:679万
展开全部
strcmp的规则是:两个字符串自左向右逐个字符相比(按ASCII值大小相比较),直到出现不同的字符或遇'\0'为止。
strcmp(str1,str2)是str1小于str2时返回小于零的值,大于返回大于零的值,此题中t指的就是s2,B选项s1s2位置反了。D是对的。
匿名用户
2014-01-12
展开全部

显然答案是D。t指向s2,所有只有B,D靠谱,而B是当s2大于s1时输出s2,所以刚好相反,D才正确。

  1. ascii字符串比较大小:从前往后一个字节一个字节比较,ascii码较大者为大,如相等,继续往后比较,直到至少一个字符串遇到结束标记'\0',而且结束标记也要比较。

  2. strcmp函数不见得一定是返回ascii差值,有些实现就只返回-1,0和1,strcmp函数就是根据1比较字符串大小的,不用它用什么。

  3. 这个上面已经解释过了,在这里s2和t没有什么区别,但问题是B选项比较的顺序反了。

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友a5eb3e1
推荐于2018-05-06 · TA获得超过4448个赞
知道大有可为答主
回答量:3486
采纳率:60%
帮助的人:2634万
展开全部
1、首先怎么才算是一个字符串大于另一个字符串?
依次比较每个字符,如果某个字符的ASCII值大,则字符串大;如相等则比较下一个。

2、strcmp()函数不是返回他们第一个不匹配字母的ASCII差值么?
不一定是差值。只保证相等时返回0,大于时返回正值,小于时返回负值。

3、按这样比较的话,s2 和 t 有什么区别,答案为什么选D而不选B?
在这种情况下,s2 和 t 没区别。
选 D 是对的,而 B 把 s2 和 s1 的位置颠倒了。
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式