程序本身很简单:就是把任意一个double型的正整数,经过强制类型转换后倒序输出。编程如下,但当输入123456时,输出的结果却是6,5,4,3,1,1。即原来的2变成了1;而当输入2563时,输出的结果却是正确的:3,6,5,2。
如果有谁知道这其中的原因,谨请赐教!
double modlf(double val,double *pre)/*类同于数学函数*/
{
double i=0;
while(i<=val) i++;
*pre=i-1;
return(val+1-i);
}
main()
{
double tem,k,i;
int m,n;clrscr();
scanf("%lf",&i);
printf("%lf\n",i);
modlf(i,&k);
while(k!=0)
{
i=modlf(k/10,&tem)*10;
printf("%lf,",i);/*测试返回值i是否正确*/
n=(int)i;/*直接将返回值i作强制类型转换*/
printf("%d\n",n);/*输出转换过后的值*/
k=tem;
}
}
參考答案:下面是一种比较简单的方法,你的那种方法太复杂了,不好懂
#include<<stdio.h>
void main()
{long temp;
int n;
scanf("%ld",&temp);
while(temp)
{n=temp%10;
printf("%d ",n);
temp=temp/10;
}
}