c语言程序设计数组题库,二级c语言程序设计习题及解答ch9数组.doc

第九章?数组

一、选择题

?[9.1]??若已定义:

int?a[]={0,1,2,3,4,5,6,7,8,9},*p=a,i;

其中0<=i<=9,则对a数组元素的引用不正确的是

a[p-a]??B) *(&a[i])??C) p[i]??D) *(*(a+i))

【解析】A:p开始是数组a首地址,只要p++则再减去a的首地址a[p-a]就能取到所有元素,B:&a[i]循环取其地址,*(&a[i])?是该地址中所存储的元素 C:p就是指针变量,相当于a[i],D: *(a+i) 则正确

?[9.2]??以下程序段数组所有元素输入数据,应在下划线填入的是

A) a+(i++)?B) &a[i+1]???C)?a+i???D) &a[++i]

main()

{?int?a[10],i=0;

while(i<10)?scanf("%d",_);

}

【解析】因为要遍历,所以排除B.C,因为D先加1再取值,丢了a[0]

?[9.3]??以下程序的输出结果是

??A) 3???????B)?4?????????C) 1?????D) 2

main()

{?int??a[10]={1,2,3,4,5,6,7,8,9,10},*p=a;

??printf("%d\n",*(p+2)); }

【解析】*p=a;p指向首地址,*(p+2))往后移动两个元素,指向3

?[9.4]??以下程序的输出结果是

A)?不确定的值???B)?3????C) 2?????D) 1

main()

{?int?n[2]={0},i,j,k=2;

for(i=0;i

for(j=0;j

n[j]=n[i]+1;

printf("%d\n",n[k]);

}

?[9.5]??以下程序的输出结果是

???A)17?????B)18?????C)19?????D)20

main()

{ int a[]={2,4,6,8,10},y=1,x,*p;

p=&a[1];

for(x=0;x<3;x++) y+=*(p+x);

printf("%d\n",y);

}

【解析】p=&a[1]则p指向元素为4,y+=*(p+x);相当于y=1+4+6+8=19

?[9.6]??以下程序的输出结果是

A) 6??????B) 8??????C) 4??????D) 2

main()

{ int a[]={2,4,6,8},*p=a,i;

for(i=0;i<4;i++) a[i]=*p++;

printf("%d\n",a[2]);

}

【解析】p=a,相当于重新把a中的内容赋给a本身,所以a[2]=6

?[9.7]??以下程序的输出结果是

A) 720?????B)?120?????C) 24?????D) 6

f(int?b[],int?n)

{??int?i,r=1;

for(i=0;i<=n;i++) r=r*b[i];

return r;

}

main()

{??int?x,a[]={2,3,4,5,6,7,8,9};

x=f(a,3);

printf("%d\n",x);

}

【解析】调用x=f(a,3);for循环4次,将前四个元素相乘,即得r=2*3*4*5;

?[9.8]???以下程序中若第一个printf语句输出的是194,则第二个printf语句的输出结果是

A) 212?????B)?204??????C)?1a4??????D)?1a6??????12

main()

{??int?a[]={1,2,3,4,5,6,7,8,9,0},*p;

p=a;

printf("%x\n",p);

printf("%x\n",p+9);?? }

【解析】因为开始p的地址为194,p+9是指指针向后移动9个元素,而不是9个字节,每个int占2个字节,所以共移动18个字节,1个字节占一个存储单位,%x\n"是16进制,将18转化成16进制是12,所以194+12=2a6

?[9.9]??以下程序的输出结果是

A) 0987654321??B)?4321098765??C) 5678901234??D) 0987651234

fun(int?*s,int?n1,int n2)

{?int?i,j,t;

??i=n1; j=n2;

while(i

{ t=*(s+i); *(s+i)=*(s+j); *(s+j)=t;

??i++; j--; }

}

main()

{?int?a[10]={1,2,3,4,5,6,7,8,9,0},i,*p=a;

fun(p,0,3);??fun(p,4,9);??fun(p,0,9);

for(i=0;i<10;i++)??printf("%d",*(a+i));

}

【解析】为了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值