有以下程序 #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;

admin2019-12-17  47

问题 有以下程序
#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, c[i+l]);
   for (i=0; i<10; i++)
printf("%d,", c);
   printf("\n");
}
程序的运行结果是

选项 A、2,1,4,3,6,5,8,7,0,9,
B、0,9,8,7,6,5,4,3,2,1,
C、1,2,3,4,5,6,7,8,9,0,
D、0,1,2,3,4,5,6,7,8,9,

答案C

解析 C语言规定,实参变量对形参变量的数据传递是“值传递”,即单向传递,只由实参传给形参,而不能由形参传回来给实参。在调用函数时,给形参分配存储单元,并将实参对应的值传递给形参,调用结束后,形参单元被释放,实参单元仍保留并维持原值。由此可知,在本题中,函数fun(int a,int b)的功能是实现形参整形变量a和b值的互换。当在主函数中调用fun(c,c[i+1])时,把实参变量c和c[i+1]的值赋给形参变量a和b,执行完函数fun(c,c[i+1])时,形参变量a和b的值发生了互换,实参变量c和c[i+1]的值并没有发生互换,所以输出的值为1,2,3,4,5,6,7,8,9,0。
转载请注明原文地址:https://kaotiyun.com/show/ULCp777K
0

最新回复(0)