C语言设char *S="china";则printf("%s,%c,%c\n",s,*s,s[3]);的输出是?

设char *S="china";则printf("%s,%c,%c\n",s,*s,s[3]);的输出是?

A.china,c,n
B.china,china,i
C.c,c,n
D.china,china,n
选择哪个,麻烦在详细说明下。

有错误:char *S="china";中的S是大写的,printf中的变量列表都是小写s,所以没有匹配变量,编译都过不了,要知道C是大小写敏感语言。若不计此问题,输出是china,c,n。因为%s对应从指针s值开始的字符串;中间的%c对应*s输出指针s的内容,即一个字符c;后一个%c对应s[3]元素n,由于下标是从0开始的,所以是第4个元素n。它们都用逗号隔开。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2009-03-03
选择A。%s 表示打印出字符串,所以是china,%c表示打印一个字符,*s刚好是取第一个字符,所以是c,至于s[3]就不用解释了数组是0下标开始的,字符串指针可以当成数组使用,不同的是数组的指针不能赋值
第2个回答  2009-02-27
选择A,s指向china这个字符串,以%s打印的话,就可以把这个字符串打出来,而*s表示s指向的第一个字符,所以是'c',s[0]就是s中的第一个字符,s[3]就是第4个字符。
第3个回答  推荐于2017-09-20
选A
因为,printf("%s,%c,%c\n",s,*s,s[3])中,第一个s的输出格式是字符串格式,程序中,将china赋给指针变量,所以全部输出,第二个标号(*s)指向数组第一个元素,所以输出c,第三个就不说了本回答被提问者采纳
第4个回答  2009-02-27
A;很显然
你第一个是串输出,s表示地址就输出China了,%c是输出一个字符,*s就输出c了。最后一个很显然