改错题 1.  下列给定程序中函数proc()的功能是:将长整型数中为偶数的数依次逆向取出,构成一个新数放在t中。高位在低位,低位在高位。
    例如,当s中的数为12345678时,则t中的数为8642。
    请修改函数proc()中的错误,使它能得出正确的结果。
    注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。
    试题程序:
    #include<stdlib.h>
    #inelude<stdio.h>
    #include<conio.h>
    void proc(long s,long *t)
    {
    int d;
    long s1=1,i=1;
    *t=0;
    while(s/i>0)
    i=i*10;
    i=i/10;
    while(s>0)
    {
    d=s/i;
    //****found****
    if(d%2!=0)
    {
    //****found****
    t=d*s1+t;
    s1*=10;
    }
    s=s%i;
    i=i/10;
    }
    }
    void main()
    {
    long s,t;   
    system("CLS");
    printf("\nPlease enter s:");
    scanf("%ld",&s);
    proc(s,&t);
    printf("The result is:%ld\n",t);
    }
【正确答案】(1)错误:if(d%2!=0)
   正确:if(d%2==0)
   (2)错误:t=d*s1+t;
   正确:*t=d*s1+*t;
【答案解析】 题目要求长整型数中每一位上为偶数的数依次逆向取出,构成一个新数放在t中。首先,要判断每一位上的数是否为偶数,因此,“if(d%2!=0)”应改为“if(d%2==0)”;变量t是一个指针变量,其是直接运算操作的内存地址,因此,“t=d*s1+t;”应改为“*t=d*s1+*t;”。