改错题
1. 下列给定程序中,函数proc()的功能是:通过某种方式实现两个变量值的交换,规定不允许增加语句和表达式。
例如,变量num1中的值原为2,num2中的值原为1,程序运行后num1中的值为1,num2中的值为2。
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。
试题程序: #include<stdlib.h>
#include<conio.h>
#include<stdio.h>
int proc(int*x,int y)
{
int t;
//****found****
t=x;
*x=y;
//****found****
return(y);
}
void main()
{
int num1=2,num2=1;
system("CLS");
printf("%d%d\n",num1,num2);
num2=proc(&num1,num2);
printf("%d%d\n",num1,num2);
}
【正确答案】(1)错误:t=x
正确:t=*x
(2)错误:return(y)
正确:return(t)
【答案解析】 由函数proc()可知,变量x是整型指针变量,而变量t是整型变量,不能直接赋值,因此,“t=x”应改为“t=*x”;题目要求实现两个数互换,因此,函数proc()应返回变量x的值,而变量x的值存放在变量t中,因此,“return(y)”应改为“return(t)”。