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