大家帮我看看是否是编译器的原因
/*这是一个颠倒数的程序,比如说:12.34,转换后为:34.12,我试着作了一个,WIN-TC下正常运行。
但我作的这个程序也有些弊病,因为int取值范围的限制,只能转换小数后4位以下的,我试过long与double,可能是我的编译器的原因,没有成功。
如果哪位可以帮我改改,不胜感激。另外,据书上说float取值范围是7位,那么它的最大值与最小值各是多少呢?最好用十进制标出来,不胜感激。
作的这个程序还有很多不足之处,还望各位不吝指教一二。谢谢!
*/
#include<stdio.h>
#define CLEAR { char c; while( ( c=getchar() ) != '\n' && c != EOF ) ; }
int xiaosu_zhuanhuan(float f)
{
int i=f;
int k=i;
if(i!=0&&i%10==0)
{
i/=10;
f/=10;
k=xiaosu_zhuanhuan(f);
}
else return k;
}
int main(void)
{
char xinghao[]="**************************************************";
char y;
int zhengsu,fanhui_z;
float xiaosu,f;
do
{
do
{
system("cls");
printf("\n\n%s\n\n",xinghao);
printf("您好,这是个小数倒置程序,比如说:12.34\n"
"转换后为:34.12。 由于储存类型的原因,\n"
"请您输入的数字长度不要超过5位。谢谢!\n");
printf("\n\n\n请输入您的数字:");
scanf("%f",&f);
CLEAR;
if(f<0.0001||f>99999)
printf("\n您的输入有问题,请重新输入。\n ");
sleep(1);
}
while(f<0.0001||f>99999);
zhengsu=f;
xiaosu=(f-zhengsu)*10000;
fanhui_z=xiaosu_zhuanhuan(xiaosu);
printf("\n\n%s\n\n您的数字转换后为:%d.%d\n",xinghao,fanhui_z,zhengsu);
printf("\n您还要继续吗?Y继续,其它键退出:");
y=getchar();
CLEAR;
}
while(y=='y'||y=='Y');
system("cls");
printf("\n\n%s\n\n祝你好好学C,天天向上。\n",xinghao);
getch();
}
----------------解决方案--------------------------------------------------------