免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1136 | 回复: 3
打印 上一主题 下一主题

菜鸟问题求助 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-09-04 21:22 |只看该作者 |倒序浏览
问题是依次将10个数输入,然后打出最大的数.

现在问题就在于,怎么判断我输入的是数字呢?

比如说,我输入一个"adfaf",这是非法的,我怎么判断?

真诚请教

MSN:  xuxuyi@msn.com

#include<stdio.h>
main()
{
                int         i;
        float     a;
        float     temp=0;
        for(i=0;i<10;i++)
        {
                printf("pls input NO.%d\n",i+1);
                scanf("%f",&a);
                if (a>temp)
                {
                        temp=a;
                        printf("OK\n");
                }

        }
        printf("%f\n",temp);

}

论坛徽章:
0
2 [报告]
发表于 2006-09-04 21:50 |只看该作者
考虑按字符串输入
然后检查字符串内是否有非法字符(串内字符应当>'0' && <'9' || =='.')并且'.'最多出现一次.
出现其它则为非法.
然后用sscanf之类的函数的函数进行转化.

论坛徽章:
0
3 [报告]
发表于 2006-09-04 22:06 |只看该作者
感谢楼上的,
这也是一个不错的想法,我也想过,可是,有没有更有效的方法?
这样的运算量太大了,光一个判断,就要写很多

论坛徽章:
0
4 [报告]
发表于 2006-09-04 22:35 |只看该作者
#include<stdio.h>
main()
{
     char a[11];
     if(scanf("%10[0-9]",a))
         {
                printf("input ok\n");
         }
     else
         {
                printf("input errer\n");
         }
     printf("%s",a);
}

这种方法虽然能判断数字但是有bug在
如果scanf("%10[0-9]",a) 输入的是以数字开头的它只能取数字部份字符部份丢弃
如果上面那个表达式是以字符开头那么表达式就为假
10是控制输入字符数量也就是scanf从标准输入读字符串不超过10个
括号里的就和正则差不多
a-z0-9这些
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP