c语言基础问题求解。

img


想问一下,题目中并未说a和b哪一个更大,为什么B选项不对,C和D选项的区别在哪里?初学者看了答案以后还是有些不太懂,希望大家指点,谢谢!

这关于strcmp的返回值和if的判断
先说strcmp的返回值,当a 大于b,返回正数,反之返回负数,只有当ab相等返回0。
再说if(),只有当括号内为0时判断为假不执行,其余都为真执行程序。也就是说在选项B时,当b大于a也会执行程序。而题意为当a大于b执行程序,其余不执行。

B选项 if(strcmp(a,b)) 成立,只能说明strcmp(a,b)=0,并不能说明a大于b

C、D 选项
这个字符串比较函数strcmp(a, b)>0时证明a>b; strcmp(a, b)=0时a=b;strcmp(a, b)<0时,a<b

看一下字符串比较函数吧,就理解成大于返回正数,小于返回负数,等于返回0

C和D选项区别在于是否直观判断是否a>b,D选项能直观判断a>b,C选项则是间接判断,一般题目的要求都是直观的判断。细究按照实际写来说可以说是题目不严谨,但是不必太纠结

img

strcmp()函数详细说明,供参考:https://baike.baidu.com/item/strcmp/5495571?fr=aladdin

strcmp(a,b)
a>b返回1,a=b返回0,a<b返回-1