6阅读下列程序并回答问题,在每小题提供的若干可选答案中,挑选一个正确答案。
【程序】
#include <stdio.h>
main()
{
int i, j;
char ch, *p1, *p2, *s[4]={"four","hello","peak","apple"};
for(i = 0; i < 4; i++){
p1 = p2 = s[i];
ch = *(p1 + i);
while(*p1 != '\0'){
if(*p1 != ch){
*p2 = *p1;
p2++;
}
p1++;
}
*p2 = '\0';
}
for(i = 0; i < 4; i++)
printf("%s\n", s[i]);
}
【问题】
(21) 程序运行时,第1行输出 (21) 。
A、our B、four C、fur D、fou
(22) 程序运行时,第2行输出 (22) 。
A、ello B、hllo C、heo D、hell
(23) 程序运行时,第3行输出 (23) 。
A、peak B、eak C、pek D、pak
(24) 程序运行时,第4行输出 (24) 。
A、pple B、apple C、ale D、appe
为什么在for循环中第一个字母会保存在ch变量中呢
追答for(i = 0; i < 4; i++){
p1 = s[i];
ch = *(p1 + i);
for循环一共循环四次,i分别等于0,1,2,3。
第一次循环i=0; p1=s[0],所以p1指向数组的第一个元素,也就是第一个字符串four,ch=*(p1+0),p1+0指向第一个字母f,所以ch保存的是f。
第二次循环i=1; p1=s[1],所以p1指向数组的第二个元素,也就是第二个字符串hello,ch=*(p1+1),p1+1指向第二个字母e,所以ch保存的是e。
第三次循环i=2; p1=s[2],所以p1指向数组的第三个元素,也就是第三个字符串peak,ch=*(p1+2),p1+2指向第三个字母a,所以ch保存的是a。
第四次循环i=3; p1=s[3],所以p1指向数组的第四个元素,也就是第四个字符串apple,ch=*(p1+3),p1+3指向第四个字母l,所以ch保存的是l。
我是想问全部题目的详细解释