下面程序的执行结果是______。 #define MAX 10 nt a[MAX],i; main() { printf("\n");sub1();sub3(A) ;sub2();sub3(A) ; }sub1() {for(i=0;i<1MAX;i++) a[i]-i+i; } sub2(){int a[MAX],i,max;max=5;for(i=0;i<max;i++) a[i]=i; } sub3(int a[]) { int i;for(i=0;i<MAX;i++)printf("%d",a[i]);printf("\n"); }
A.0 2 4 6 8 10 12 14 16 18 0 1 2 3 4
B.0 1 2 3 4 0 2 4 6 8 10 12 14 16 18
C.0 1 2 3 4 5 6 7 8 9 0 1 2 3 4
D.0 2 4 6 8 10 12 14 16 18 0 2 4 6 8 10 12 14 16 18
参考答案:D
解析:
[分析]:函数sub1给全局作用范围内数组a(长度为10)的每个元素赋值,函数sub2中数组a仅在本函数范围内有效,长度也是10,但仅给前5个元素赋值,main函数调用sub3时,传递数组地址均是全局作用范围内数组a的地址,因此两次调用打印的结果相同。