A-A+
有以下程序 include<stdio.h> yoidfun(inta intb) {mtt
问题详情
有以下程序 include<stdio.h> yoidfun(inta,intb) {mtt; t=a;a=b;b=t; } main() {intc[10]={1,2,3,4,5,6,7,8,9,O),i; for(i=0;i<10;i+=2) fun(c[i],c[i+1]); for(i=0;i<10;i++) printff%d,,c[i]); 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(inta,intb)的功能是实现形参整形变量a和b值的互换。当在主函数中调用fun(c[i],c[i+1])时,把实参变量c[i]和c[i+1]的值赋给形参变量a和b,执行完函数fun(c[i],c[i+1])时,形参变量a和b的值发生了互换,实参变量c[i]和c[i+1]的值并没有发生互换,所以输出的值为l,2,3,4,5,6,7,8,9,0。