有以下程序:
#include <stdio.h>
void fun(int a, int b)
int t;
t=a; a=b; b=t;
main()
int c[10]=1, 2, 3, 4, 5, 6, 7, 8, 9, 0, i;
for (i=0; i<10; i+=2) fun(c[i], c[i+1]);
for (i=0; i<10; i++) printf("%d, ", c[i]);
printf("\n");
程序的运行结果是( )。
A) 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, B) 2, 1, 4, 3, 6, 5, 8, 7, 0, 9,
C) 0, 9, 8, 7, 6, 5, 4, 3, 2, 1, D) 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,
参考答案:A
解析: 本题考查的是函数参数的传递。在C语言中,参数传递默认为传值,即改变函数中的形参不会影响调用函数时传递给函数的实参。所以,题目中的fun()函数,看起来其作用好像是交换两个参数的值,其实它并不影响传递给它的任何实参,即调不调用它对程序一点也没有影响。所以主函数一开始初始化了c[10]为{1, 2, 3, 4, 5, 6, 7, 8, 9, 0},经过第1个for循环后,什么变化都没有,再经过第2个for循环原样输出,故应该选择A)。