C语言入门题目,求详细易懂的解答过程。

怎么去理解这个程序?

答案为第一行:Tony。
解答:for循环共循环2次,然后strcpy(a,b)比较两串字符大小,如果strcpy值大于0,则a大于b。具体的比较是看字符串的字母的ASCII码的大小,如果相同,再继续比较第二个,这个不赘述。
主要看一下name[],对于一维数组来讲,它是元素,对于二维数组来讲,它不是具体的元素,而是代表的一维数组。比如name[3][20],为3行20列,那么name[0],它代表的是组成二维数组的第一维数组。又知道puts()括号里可以放一维数组名,可以输出它里面的字符串,对放name[0]的话,那就是输出3行20列中的第一行字符串。
通过for比较我们已经得出结果,即两次for循环都不符合条件,因此,m没有变化,=0。所以puts(nam[0])的话,就是输出Tony。
望楼主采纳。追问

这个for循环语句的能不能再给我解答一下,我对for语句不是很熟,这个怎么得出结果

追答

k=1;k<=2;前者为初值,只要在后者范围内就可以继续执行,所以,k=1(符合小于等于2),所以执行一次,k++,当变成k=2时又执行一次,再++就超出条件不再执行了。当k=1时:name[k]跟name[m]比较,if条件不成立,所以后面的m=k没有被执行,完成了第一次循环,然后k=2,同上。for循环完,其实m的值都没变,一直=0,所以如上答案。

追问

你好,你说当k=1时:name[k]跟name[m]比较,要把m=0代入吗?是name[1]和name[0]比较,可1的ASCII码值比0大呀?具体是怎么比较的

追答

是,代入到数组下标。比较的不是k跟m,而是数组里面的内容哦。T>J

追问

是不是name[1]就是Join,name[0]就是Tony,然后name[2]就是Mary。所以两次循环去比较if里面就是name[1]>name[0](Join>Tony),name[2]>name[0](Mary>Tony),所以条件才不成立,是这样吗?

追答

嗯嗯。对的。就是这样。楼主区别一下二维数组(多维更麻烦)与一维数组的区别。特别是后面的学习中还有指针,一维地址与二维地址也有很大区别的。

追问

好的,谢谢,我还有两道题能不能也帮我解答一下,解开我的困惑,发出提问没人回答

追答

你关注一下我?说一下你的名字。要不我找不到你?

追问

关注了,题目网页的链接是私信发给你吗还是怎么操作

追答

嗯。好的。私信吧。不过如果是其它领域的问题我不一定会的。谢谢信任。

追问

恩人,看下私信

温馨提示:答案为网友推荐,仅供参考
第1个回答  2020-12-23
字符串比较函数strcmp
格式: strcmp(字符数组名1,字符数组名2) 功能:按照ASCII码顺序比较两个数组中的字符串,并由函数返回值返回比较结果。
字符串1=字符串2,返回值=0;
字符串1>字符串2,返回值>0;
字符串1<字符串2,返回值<0。
本函数也可用于比较两个字符串常量,或比较数组和字符串常量。

这段程序的意思是输出3个字符串中ASCII码最大的字符串。
建议你百度一下“字符的ASCII码”找到对应字母的ASCII码大小
此题输出应为Tony。
相似回答