问题 单项选择题

下述程序的输出结果是( )。 #include<stdio.h> void main() {int a[20],*p[4]; int i,k=0; for(i=0;i<20;i++) a[i]=i; for(i=0;i<4;i++) p[i]=&a[i*i+1]; for(i=0;i<4;i++) {k=k+*p[i];} printf("%d",k); }

A.10

B.18

C.6

D.数组元素引用不合法,输出结果不定

答案

参考答案:B

解析: 第一个for循环,给数组a的20个元素分别赋值0~19;第二个for循环,给数组p赋值,p[0]=a[1]=1,p[1]=a[2]=2,p[2]=a[5]=5,p[3]=a[10]=10;第三个for循环,将数组p中元素的值进行累加,k=1+2+5+10=18。

单项选择题
判断题