C语言问题 为什么选B,过程求解

下列程序执行后的输出结果是 (B)
 void main()
     { 
printf(“\’s1=%7s\’”,”hello”);
A.
\’s1=”hello”\’
B.
’s1=  hello’ 
C.
s1=”hello”
D.
s1=7hello

\’是转义字符,就表示单引号字符表示。所以第一个和最后一个输出的字符都是‘。
%7s输出字符所占的空间,7s表示占7个位置, 不足的不空格,大于的则原样输出。所以=和hello之间有两个空格。
综上,最后输出的内容为
‘s1= hello’,答案为B。
请采纳,谢谢。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2020-05-15
首先\是转义字符,所以"\'"的结果就是',其次,%7s是指输出字符串占7位,所以前方有空格。
第2个回答  2020-05-15
%7s意思就是输出后面的字符串,长度7(这里如果7小于后面字符串长度则没什么意义,还是按字符串原样输出,如果大于后面字符串,则会在字符串前补空格),字符串原本的双引号是不会输出的。所以A和C都不对,\是转义符,\'表示单引号'本身,所以最终输出就是
' s1= hello'
结果当然就是B了。
第3个回答  2020-05-15
在C语言中有些符号的输出是不能直接输出的,比如你输出的‘需要在前面加上\;
然后%7s是指你输出的是一个长度为7的字符串。就是你的HELLO前面,输出的时候你会发现有空格。
第4个回答  2020-05-15
\'先输出一个单引号
s1=照原样输出
%7s以7位的宽度输出后面给出的hello,于是单词的前面补2个空格。
最后,\'再输出一个单引号
所以是答案B