| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1118 人关注过本帖
标题:合法输入和非法输入
只看楼主 加入收藏
ychf890225
Rank: 4
等 级:业余侠客
帖 子:85
专家分:221
注 册:2010-4-15
结帖率:100%
收藏
已结贴  问题点数:10 回复次数:9 
合法输入和非法输入
程序代码:
#include<stdio.h>
#include<math.h>

main()
{
    double a=0.0;
    int b;
    double c;
  
    printf("This project is used to separate the integer and decimal part of a  number\n");
    printf("please input the number:\n");
    scanf("%lf",&a);

    if (a>=0.0)
        {
            b=(int)floor(a);
            printf("the integer of the number you input is %d\n",b);
        }
    else if(a<0.0)
        {
            b=(int)ceil(a);
            printf("the integer of the number you input is %d\n",b);
        }
    else
        printf("Please check the number you input");

    c=a-b;
    printf("the decimal part of the number you input is %g\n",c);

    return 0;
}
哪位高手看看第二十八和二十九行该怎么写,谢谢了

[ 本帖最后由 ychf890225 于 2010-4-22 13:21 编辑 ]
搜索更多相关主题的帖子: 输入 合法 
2010-04-22 13:08
ychf890225
Rank: 4
等 级:业余侠客
帖 子:85
专家分:221
注 册:2010-4-15
收藏
得分:0 
朋友们 帮忙看看 谢谢了
2010-04-22 13:33
ychf890225
Rank: 4
等 级:业余侠客
帖 子:85
专家分:221
注 册:2010-4-15
收藏
得分:0 
回复 2楼 ychf890225
怎么看看当输入非法数据 如字符的时候给个提示
2010-04-22 18:29
hahayezhe
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:湖南张家界
等 级:贵宾
威 望:24
帖 子:1386
专家分:6999
注 册:2010-3-8
收藏
得分:1 
本人比较菜  没有找到什么好方法
字符存进去就是A码 无法判断
希望有那位大侠提供好方法

如果你真想做到排除异常字符
那么把计算转为字符串来实现
比如char a[100]={'1','3','.','4'};
然后用atof函数
double b=atof(a);
或者你可以尝试下C++的 try catch throw异常处理
因为当给double型变量键入字符后 会出现一些异常
比如
double a;
while(1)
{cin>>a;
cout<<a;
}会称为死循环
2010-04-22 20:03
ychf890225
Rank: 4
等 级:业余侠客
帖 子:85
专家分:221
注 册:2010-4-15
收藏
得分:0 
回复 4楼 hahayezhe
谢谢  就是不明白怎么排除 我做的时候直接输个字符就把我弄晕了
不知道怎么排除
2010-04-22 20:06
南国利剑
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:29
帖 子:1165
专家分:3536
注 册:2010-4-12
收藏
得分:2 
给你提个建议,你试试看。
在输入数据的时候,用两种方法接受它,一种用double型的变量,
另一种用字符型的变量,然后对字符串进行检测,如果发现非法的字符,
就停止程序,如果未发现非法字符就继续进行操作。
你看这样可以吗?

南国利剑
2010-04-22 20:14
hahayezhe
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:湖南张家界
等 级:贵宾
威 望:24
帖 子:1386
专家分:6999
注 册:2010-3-8
收藏
得分:3 
再教你一招 对WM_CHAR消息进行响应  判断 屏蔽一切其他不合法消息

最后一招C++流的操作

double a;
cin<<a;
当输入 12sdas时 自动排除sdas a=12
2010-04-22 20:16
南国利剑
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:29
帖 子:1165
专家分:3536
注 册:2010-4-12
收藏
得分:4 
对字符的检测主要依据就是字符对应的ASC码,如果ASC码值超出了数字ASC码范围的范围就是非法的。但是要注意,小数点的ASC码和负号的ASC码是合法的。
然后逐个进行判断就可以了啊。

南国利剑
2010-04-22 20:18
南国利剑
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:29
帖 子:1165
专家分:3536
注 册:2010-4-12
收藏
得分:0 
回复 7楼 hahayezhe
恩,这招很好
但不知道楼主用的是不是C++编译器?

南国利剑
2010-04-22 20:21
qq8801103
Rank: 5Rank: 5
来 自:苏州中科大软件学院
等 级:职业侠客
威 望:1
帖 子:422
专家分:340
注 册:2009-10-8
收藏
得分:0 
楼主也没说功能

Discuz!  
好好学习  天天向上
2010-04-22 22:45
快速回复:合法输入和非法输入
数据加载中...
 
   



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

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