while(p>a)
printf("%d",*(--p));
p的值为a+5,满足p>a,执行循环体
第一次循环:
printf("%d",*(--p));p自减1(值变为a+4),然后输出*p(输出a[4])
p的值为a+4,满足p>a,执行循环体
第二次循环:
printf("%d",*(--p));p自减1(值变为a+3),然后输出*p(输出a[3])
p的值为a+3,满足p>a,执行循环体
第三次循环:
printf("%d",*(--p));p自减1(值变为a+2),然后输出*p(输出a[2])
p的值为a+2,满足p>a,执行循环体
第四次循环:
printf("%d",*(--p));p自减1(值变为a+1),然后输出*p(输出a[1])
p的值为a+1,满足p>a,执行循环体
第五次循环:
printf("%d",*(--p));p自减1(值变为a),然后输出*p(输出a[0])
p的值为a,不满足p>a,结束循环。
最后输出12345所以答案选B
206.下面程序段的运行结果是(C)。
inta[]={1,2,3,4,5,6},*p=a;
inti,sum=0;
for(i=1;i<6;i++)sum+=*(p++);
printf("%d",sum);
A.10
B.12
C.15
D.20
*(p++);/*先输出*p,再进行p++*/
p=a;p指向a[0]
for(i=1;i<6;i++)sum+=*(p++);
当i=1时
sum=sum+*p=sum+a[0]=0+1=1;然后p++,p的值变为a+1,即p指向a[1]
当i=2时
sum=sum+*p=sum+a[1]=1+2=3;然后p++,p的值变为a+2,即p指向a[2]
当i=3时
sum=sum+*p=sum+a[2]=3+3=6;然后p++,p的值变为a+3,即p指向a[3]
当i=4时
sum=sum+*p=sum+a[3]=6+4=10;然后p++,p的值变为a+4,即p指向a[4]
当i=5时
sum=sum+*p=sum+a[4]=10+5=15;然后p++,p的值变为a+5,即p指向a[5]
最后printf("%d",sum);输出15,答案选C
207.下面程序运行结果是(D)。
main()
{inta[]={1,2,3,4,5},*p,*q,i;
p=a;q=p+4;
for(i=1;i<5;i++)
printf("%d%d",*(q-i),*(p+i));
}
A.24334251
B.51423324
C.15243342
D.42332415
p=a;p指向a[0]
q=p+4;q指向a[4]
for(i=1;i<5;i++)
printf("%d%d",*(q-i),*(p+i));
当i=1时
printf("%d%d",*(q-i),*(p+i));输出a[3]和a[1],即输出42
当i=2时
printf("%d%d",*(q-i),*(p+i));输出a[2]和a[2],即输出33
当i=3时
printf("%d%d",*(q-i),*(p+i));输出a[1]和a[3],即输出25
当i=4时
printf("%d%d",*(q-i),*(p+i));输出a[0]和a[4],即输出15
最后输出结果:
42332515,所以答案选D
208.下面程序运行结果是(B)。
main()
{staticchara[]="abcdefg",b[]="adcbehg";
char*p=a,*q=b;
inti;
for(i=0;i<=6;i++)
if(*(p+i)==*(q+i))
printf("%c",*(q+i));
}
A.geca
B.aceg
C.bdf
D.Fdb
这个程序的功能是比较数组a和数组b中相同位置上相等的元素是否相等,如果相等则输出该元素。
char*p=a,*q=b;p指向a[0],q指向b[0]
*(p+i)等价于a[i]
*(q+i)等价于b[i]
for(i=0;i<=6;i++)
if(*(p+i)==*(q+i))
printf("%c",*(q+i));
当i=0时
*(p+i)的值为’a’
*(q+i)的值为’a’
满足*(p+i)==*(q+i),所以执行printf("%c",*(q+i));输出’a’
当i=1时
*(p+i)的值为’b’
*(q+i)的值为’d’
不满足*(p+i)==*(q+i),所以不执行printf("%c",*(q+i));
当i=2时
*(p+i)的值为’c’
*(q+i)的值为’c’
满足*(p+i)==*(q+i),所以执行printf("%c",*(q+i));输出’c’
当i=3时
*(p+i)的值为’d’
*(q+i)的值为’b’
不满足*(p+i)==*(q+i),所以不执行printf("%c",*(q+i));
当i=4时
*(p+i)的值为’e’
*(q+i)的值为’e’
满足*(p+i)==*(q+i),所以执行printf("%c",*(q+i));输出’e’
当i=5时
*(p+i)的值为’g’
*(q+i)的值为’g’
满足*(p+i)==*(q+i),