一个C程序问题

王朝知道·作者佚名  2012-07-07
窄屏简体版  字體: |||超大  
 
分類: 電腦/網絡 >> 程序設計 >> 其他編程語言
 
問題描述:

程序本身很简单:就是把任意一个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;

}

}

小贴士:① 若网友所发内容与教科书相悖,请以教科书为准;② 若网友所发内容与科学常识、官方权威机构相悖,请以后者为准;③ 若网友所发内容不正确或者违背公序良俗,右下举报/纠错。
 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航