可否解读一下这个c语言程序?

img

可否解读一下这个函数,最后的输出为什么是7?
这里的第八行又是什么意思?

首先要搞懂第八行里的 strcmp 函数,他是一个字符串比较函数,

直接看例子:“abc” 和 “abb” 相比(比较他们的ASCII码值),abc 和 abb前两个字符都相等,比较c和b,c的ASCII码值大于b的ASCII码值,所以函数strcmp("abc","abb")返回1,

如果是abc和abd比较,那返回-1,因为c的ASCII比d的小,

如果是abc和abc相比,那函数返回0,

ac和abc相比,返回1,因为ac的第二个字符比abc的第二个字符大。

搞懂这个函数后再来看这题,j=0,s[j]就是China,依次和后面4个字符串比较,Russian和China比较返回1,满足if条件,j=i=1,此时s[j]就是RussIan了,然后Russian再和其他的相比,都不满足条件,最后输出s[j]的长度,也就是Russian的长度,自然是7。

这个链接有详细讲解:https://www.runoob.com/cprogramming/c-function-strcmp.html

这个程序是选出字符串最大(不是最长)的字符串,并打印长度
字符串大小比较方法:

  1. 两个字符串同时从最左边的字符开始比起,谁的ASCII码大谁就大
  2. 若字符ASCII相同,则比较下一个字符
    这里 Russian 字符最大,因为最左边的 R字符在所有字符串中第一个字符的ASCII最大,因此输出其长度 7