鱼C论坛

 找回密码
 立即注册
查看: 4239|回复: 2

关于判断小数问题

[复制链接]
发表于 2013-6-12 14:57:32 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
在小甲鱼老师的第五章022  循环控制结构07中 的第一道题
后来小甲鱼老师说 如果输入的数据是非法数据就报错
于是我就试了一下  但是发现很多问题  先贴代码
#include<stdio.h>

int main()

{
        long int f1=1,f2=1,m,i;
        printf("输入个数\n");
        scanf("%d",&i);
        while((i<=0)||(i!=(int)i))
        {
                printf("数据非法,请重新输入\n");
                scanf("%d",&i);
        }
        m=i;
        for(i=1;i<=m;i++)
        {
                f1=f1+f2;
                f2=f2+f1;
        }
        printf("%ld %ld\n",f1,f2);
       
}
我知道这个是错的  因为定义的是整形  所以输入小数后面会舍去
但是应该怎么写呢?
整形又不能存放在浮点型的变量里
而且把i定义为浮点型的话就一直都会显示非法数据
该怎么办啊  大神求解啊!!
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-6-12 14:59:13 | 显示全部楼层
该怎么判断输入的数是小数  然后报错  
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-6-12 22:49:44 | 显示全部楼层
#include<stdio.h>

int main()

{
        long int f1=1,f2=1,m,i,j;
        printf("输入个数\n");
        scanf("%d",&i);
        while((i<=0)||(i!=(int)i))
        {
                printf("数据非法,请重新输入\n");
                scanf("%d",&i);
        }
        m=i;
        for(j=1;j<=m;j++)
        {
                f1=f1+f2;
                f2=f2+f1;
        }
        printf("%ld %ld\n",f1,f2);
        
}
亲,你再定义一个j,应该就好了。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-7-23 22:53

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表