改错题 1.  下列给定程序中函数proc()的功能是:取出长整型变量s中偶数位上的数,依次构成一个新数放在t中。
    例如,当s中的数为123456789时,t中的数为2468。请修改程序中的错误,使它能得出正确的结果。
    注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。
    试题程序:
    #include<stdlib.h>
    #include<stdio.h>
    #include<conio.h>
    //****found****
    void proc(long s,long t)
    { long s1=10;
    s/=10;
    *t=s%10;
    //***found****
    while(s<0)
    { s=s/100;
    *t=s%10*s1+*t;
    s1=s1*10;
    }
    }
    void main()
    { long s,t;
    system("CLS");
    printf("\nPlease enter s:");
    scanf("%1d",&s);
    proc(s,&t);
    printf("The result is:%ld\n",t);
    }
【正确答案】(1)错误:void proc(long s, long t)
   正确:void proc(long s, long*t)
   (2)错误:while(s<0)
   正确:while(s>0)
【答案解析】 由主函数中的实参可知,形参的第二个变量是长整型的指针变量。因此,“void proc(long s,long t)”应改为“void proc(long s,long *t)”;要从低位开始取出长整型变量s中偶数位上的数,每次变量s要除以100,然后判断其是否大于0来决定是否要继续,因此,“while(s<0)”应改为“while(s>0)”。