标题:c语言scanf函数要求输入整数,但输入的是小数如何检测出来
只看楼主
dtxwz
Rank: 2
等 级:论坛游民
帖 子:79
专家分:45
注 册:2011-9-18
结帖率:100%
已结贴  问题点数:20 回复次数:4 
c语言scanf函数要求输入整数,但输入的是小数如何检测出来
scanf("%lld",&n);
if(!(n>0&&n<1e16))
printf("error,please input (0<n<10^16)\n");
搜索更多相关主题的帖子: c语言 scanf 输入 小数 检测 
2017-10-14 17:10
wp231957
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:神界
等 级:版主
威 望:422
帖 子:13681
专家分:53296
注 册:2012-10-18
得分:0 
有问得功夫 自己多做几次实验  估计不是取0 就是截取

DO IT YOURSELF !
2017-10-15 07:52
dtxwz
Rank: 2
等 级:论坛游民
帖 子:79
专家分:45
注 册:2011-9-18
得分:0 
回复 2楼 wp231957
0.12就是0。 10.6就是10。但是不知道如何检测出输的是小数啊。
2017-10-15 13:19
pydlq
Rank: 6Rank: 6
等 级:侠之大者
威 望:1
帖 子:129
专家分:488
注 册:2017-9-5
得分:20 
新人蠢办法
程序代码:
#include<stdio.h>
#include<math.h>
int main()
{
    long long int n=0;
    int m=0,i=0,flag=1;
    char a[20];
    
    scanf("%s",a);
    for(i=0;i<20&&a[i]!='\0';i++)
    {
        if(!(a[i]>='0'&&a[i]<='9'||a[i]=='-'))
        {
            flag=0;
            break;
        }
        m++;
    }
    if(flag)
    {
        for(i=0;i<m;i++)
        {
            n=n+(a[i]-48)*pow(10,(m-i));
            n/=10;
            if(a[i]=='-')
                printf("error!please input (0<n<10^16)\n");break;
            if(!(n>0&&n<1e16))
            printf("error!please input (0<n<10^16)\n");
        }
    }    
    else
        printf("错误,不是整数!\n");
    return 0;
}


[此贴子已经被作者于2017-10-15 16:18编辑过]

2017-10-15 14:38
pydlq
Rank: 6Rank: 6
等 级:侠之大者
威 望:1
帖 子:129
专家分:488
注 册:2017-9-5
得分:0 
2017-10-15 16:21



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-481392-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.195444 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved