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); 展开
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); 展开
2014-01-12
展开全部
显然答案是D。t指向s2,所有只有B,D靠谱,而B是当s2大于s1时输出s2,所以刚好相反,D才正确。
ascii字符串比较大小:从前往后一个字节一个字节比较,ascii码较大者为大,如相等,继续往后比较,直到至少一个字符串遇到结束标记'\0',而且结束标记也要比较。
strcmp函数不见得一定是返回ascii差值,有些实现就只返回-1,0和1,strcmp函数就是根据1比较字符串大小的,不用它用什么。
这个上面已经解释过了,在这里s2和t没有什么区别,但问题是B选项比较的顺序反了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
1、首先怎么才算是一个字符串大于另一个字符串?
依次比较每个字符,如果某个字符的ASCII值大,则字符串大;如相等则比较下一个。
2、strcmp()函数不是返回他们第一个不匹配字母的ASCII差值么?
不一定是差值。只保证相等时返回0,大于时返回正值,小于时返回负值。
3、按这样比较的话,s2 和 t 有什么区别,答案为什么选D而不选B?
在这种情况下,s2 和 t 没区别。
选 D 是对的,而 B 把 s2 和 s1 的位置颠倒了。
依次比较每个字符,如果某个字符的ASCII值大,则字符串大;如相等则比较下一个。
2、strcmp()函数不是返回他们第一个不匹配字母的ASCII差值么?
不一定是差值。只保证相等时返回0,大于时返回正值,小于时返回负值。
3、按这样比较的话,s2 和 t 有什么区别,答案为什么选D而不选B?
在这种情况下,s2 和 t 没区别。
选 D 是对的,而 B 把 s2 和 s1 的位置颠倒了。
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询