C语言选择题 求大家帮忙看看 能帮我说说执行过程吗? 谢谢

若有定义 char s〔〕={ “ Girl”} ; 执行下面语句后输出结果是__
s〔0〕=s〔2〕 ; s〔2〕=s〔0〕; s〔1〕=s〔4〕 ; s〔4〕=s〔1〕;
printf( “ %c”,“%s\n”,s〔0〕,s) ;
A r ,Girl B r ,r
C r ,lirG D r ,Girl

按你的书写,字符串 中第一个字符是空格,执行结果不在4个答案中。
另外,你用了中文标点符号,语法通不过。
char s〔〕={ “ Girl”} ; //声明s是char型数组,初始化为 char s[6]; 内容为:空格,字母Girl, 和字符串结束符'\0';
s〔0〕=s〔2〕 ; //赋值语句,让s[0]里的空格符位置变s[2]里的i; 字符串变:"iGirl";
s〔2〕=s〔0〕; //赋值语句,让s[2]变s[0]里的i; 字符串:"iGirl";
s〔1〕=s〔4〕; // 赋值语句,让s[1]里的G变s[4]里的l; 字符串变:"ilirl"
s〔4〕=s〔1〕; // 赋值语句,让s[4]变s[1]里的l; 字符串:"ilirl";
执行结果 i,lirl 不在4个答案中。
程序改为用英文书写,去掉第一个空格:
char s[]={"Girl"} ; //初始化 char s[5]="Girl";
s[0]=s[2]; // 字符串变为 "rirl"
s[2]=s[0]; // 字符串变为 "rirl"
s[1]=s[4]; // s[4] 是字符串结束符号 '\0', 赋值后s[1] 也成字符串结束符,字符串变为 "r",
s[4]=s[1]; // 字符串 还是 "r", 因 s[1] 是字符串结束符号 '\0',
( char s[5] 的内容为:r\0rl\0, 其中2个 \0 是字符串结束符)
printf("%c,%s\n",s[0],s); // 输出 r,r 答案选 B.
温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-12-05
1,0=2,得到rirl
2,2=0,不变,还是rirl
3,1=4,注意4是结束符\0,得到r\0rl
4,4=1不变
于是输出s[0]是r,输出字符串的时候到第一个\0结束,于是还是r
所以选b本回答被网友采纳
相似回答