问一个C程序问题?

来源:百度知道 编辑:UC知道 时间:2024/05/18 20:36:02
2. 改错题
下列给定程序中函数fun()的功能是:从低位开始取出长整型变量s中奇数位上的数,依次构成一个新数放在t中。例如,当s中的数为4576235时,t中的数为4725。
请改正程序中的错误,使它能得到正确结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。
试题程序:
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
/**********************found***********************/
int fun(long s,long *t) (void)
{
long s1=10;
*t=s%10;
while(s>0)
{
/**********************found***********************/
s=s%100; (s/100)
*t=s%10*s1+*t;
s1=s1*10;
}
}
void main()
{
long s, t;
system("CLS");
printf("\nPlease enter s: ");
scanf("%ld",&s);
fun(s,&t);
printf("The result is: %ld\n ",t);
}
其中这块: s=s%100; (s/100)
*t=s%10*s1+*t;
s1

*t=s%10*s1+*t算法应该就是错误的
如果求奇数位的数字的话可以这么求:
void fun(long s,long *t)
{
long s1=10, p = 1;
*t=0;
while(s!=0){
*t = s % 10 * (long)p + *t;
p *= 10;
s/=100;
}
}
这种算法应该可以符合题意了吧.