改错题 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)”。