A-A+

有以下程序: void sum(int *a) { a[0]=a[1]; ) main()

2022-08-06 02:53:16 问答库 阅读 175 次

问题详情

有以下程序: 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("%dn",aa[0]); } 执行后的输出结果是()。
A.4
B.3
C.2
D.1请帮忙给出正确答案和分析,谢谢!

参考答案

正确答案:A
解析:主函数中定义一个长度为10的整型数组并赋初值,接着执行一个for循环,该循环共执行了3次。当i=2时,调用函数sum(&aa[2]),主函数中将&aa[2]作为实参传给行参a,所以此时形参a所指的数组第一个元素和第二个元素分别为aa[2]和aa[3],故执行完该函数后将aa[3]的值赋给aa[2],即aa[2]=aa[3]=4,当i=1时,调用函数sam(&aa[1]),主函数中将&aa[1]作为实参传给行参a,所以此时形参a所指的数组第一个元素和第二个元素分别为aa[1]和aa[2],故执行完该函数后将aa[2]的值赋给aa[1],即aa[1]=aa[2]=4:当i=0时:调用函数sum(&aa[0]),主函数中将&aa[0]作为实参传给行参a,所以此时形参a所指的数组第一个元素和第二个元素分别为aa[0]和aa[1],故执行完该函数后将aa[1]的值赋给aa[0],即“aa[0]=aa[1]=4;”最后输出的aa[0]的值为4,所以,4个选项中选项A符合题意。

考点:程序