改错题 1.  下列给定程序中,函数proc()的功能是:从低位开始取出长整型变量s中奇数位上的数,依次构成一个新数放在t中。
    例如,当s中的数为123456789时,t中的数为13579。
    请修改程序中的错误,使它能得到正确结果。
    注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。
    试题程序:
    #include<stdlib.h>
    #include<stdio.h>
    #include<conio.h>
    //****found****
    int proc(long s,long *t)
    {
    long s1=10;
    *t=s%10;
    while(s>0)
    {
    //****found****
    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)错误:int proc(long s,long *t)
   正确:void proc(long s,long*t)
   (2)错误:s=s%100;
   正确:s=s/100;
【答案解析】 由主函数中的函数调用可知,函数proc()没有返回值,因此,“int proc(long s,long *t)”应改为“void proc (long s,long *t)”。题目要求把奇数位上的数找出,构成一个新的数组,因此,应把“s=s%100;”改为“s=s/100;”。