问题 单项选择题

有以下程序:
#include <stdio.h>
void sum(int *a)
a[0]=a[1];
main()
int aa[10]=1,2,3,4,5,6,7,8,9,10,i;
for(i=2;i>=0;i--) sum(&aa[i]);
printf("%d\n",aa[0]);

执行后的输出结果是( )。

A) 4

B) 3

C) 2

D) 1

答案

参考答案:A

解析: 该程序通过main函数循环凋用sum函数。
当i=2时,将实参aa[2]的地址传递给形参,此时a[0]=a[1]=aa[3]=4,即aa[2]=4;
当i=1时,将实参aa[1]的地址传递给形参,此时a[0]=a[1]=aa[2]=4,即aa[1]=4;
当i=0时,将实参aa[0]的地址传递给形参,此时a[0]=a[1]=aa[1]=4,即aa[0]=4;
当i=-1时,不满足条件i>=0,跳出循环,程序执行后数组aa中的值为4,4,4,4,5,6,7, 8,9,10,所以aa[0]=4。

填空题
问答题 简答题