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