问题 填空题

下列给定程序中,函数fun()的功能是:实现两个整数的交换。例如给a和b分别输入60和65,输出为:a=65 b=60
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。
试题程序;
#include<stdio.h>
#include <conio.h>
/*************found**************/
void fun(int a,b)
int t;
/*************found**************/
t=b;b=a;a=t;

main()
int a,b;
clrscr();
printf("Enter a, b: "); scanf("%d%d",
&a,&b);
fun(&a, &b);
printf("a=%d b=%d\n ", a,b);

答案

参考答案:错误:void fun(int a,b) 正确:void fun(int *a,int *b)
(B) 错误:t=b;b=a;a=t; 正确;t=*b;*b=*a;*a=t;

解析: 本题考查指针变量做函数参数。采用一般变量做参数,不能改变实参的值,采用指针变量作为参数则能够改变实参的值。主函数中fun()的调用方式说明fun()函数的参数应当为指针类型。另外,值得一提的是“交换法则”,这题的错误比较明显,如果程序段中有隐蔽的交换错误,一般不容易发现,希望学习者引起注意。

解答题
判断题