狂想曲丶 发表于 2021-6-2 17:41:17

第四届计应赛C语言初赛题目

下面程序段的执行结果是(    )。
char *str1="aAbBcC", *str2="AaB";
str1++; str2++;
printf("%d\n",strcmp(str1,str2));

A. 正数B. 正数C. 零D. 无法确定

万千只cnm 发表于 2021-6-2 17:46:14

不是负数吗   
'A'<'a'

肖-肖 发表于 2021-6-2 17:48:11

本帖最后由 肖-肖 于 2021-6-2 17:52 编辑

   
    strcmp是比较两个字符串的大小,两个字符串相同时返回0,第一个字符串大于第二个字符串时返回一个正值,否则返回负值。
    重点来了,由于str1++和str2++
    使得str1和str2分别指向了A和a
    当进行比较的时候比较的是两个字符的ASCII
    显然小写字母的ASCII码是要大于大写字母的ASCII码的,所以就会输出一个负数

答案没有负数吗????

狂想曲丶 发表于 2021-6-2 17:53:30

B选项是负数,我打的时候不小心打错了,非常抱歉

肖-肖 发表于 2021-6-2 17:55:59

狂想曲丶 发表于 2021-6-2 17:53
B选项是负数,我打的时候不小心打错了,非常抱歉

嗯 没事没事 题出的挺好的
页: [1]
查看完整版本: 第四届计应赛C语言初赛题目