判断输入是否合法

一、判断输入是否为数字

通常使用方法1和3,方法2和4无法保证一定能判断正确。

1)函数isdigit

表头文件

#include<ctype.h>

定义函数

int isdigit(char c)

函数说明

检查参数c是否为阿拉伯数字0到9。

返回值

若参数c为阿拉伯数字,则返回TRUE,否则返回NULL(0)。

2)当使用cin,cout输入流时

int num;
while(!(cin>>num)){ //cin输入错误时执行下边语句
cin.clear(); //清除流标记
cin.sync();  //清空流
cout<<"输入了非数字字符"<<endl; //打印错误提示
}

3)创建数组存储输入的数据的每一位并判断

bool check( char *str ) 
{ 
    int i; 
    for ( i = 0; i < strlen( str ); i++ ) 
        if ( str[ i ] < '0' || str[ i ] > '9' ) 
            return false; 
    return true; 
} 
 

若存在元素小于0或大于9的情况,则表明数字中有其他非数字元素存在,则肯定不是整形!

元素都在0-9之间,若数组的首位是0且0之后还有其余的元素如0123,这样的也不是数字!

可以通过有无小数点来区分整形和浮点型,且要保证小数点只出现一次。

4)通过检测cin的状态来表明输入的是否为数字

int a;
cin >> a;
if(cin.fail()){
   cout << "输入的不是数字!" << endl;
}

注:

int a; cin >> a;  //输入3.5   此时cin.fail()和cin.bad()都为false,a的值为3

char a;cin >> a;//输入3.5  此时cin.fail()和cin.bad()都为false,a的值是'3'

int a;cin >> a;//输入c 此时cin.fail()为true,cin处于阻塞状态,可以判断出输入的数据类型错误。

只有在变量为整形或浮点型,输入数据不是整形或者浮点型的时候,才会使得cin处于错误状态;

若反过来变量是字符类型,输入数据是整形或者浮点型,都不会改变cin的状态。

而且对于特殊情况:

float a;cin >> a;//输入3.c  此时cin.fail()和cin.bad()为false 无法判断出输入数据错误!!!!!!!




  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 复计算器是一种用于进行复运算的工具。在实现一个复计算器时,我们需要判断输入是否合法,只有合法输入才能进行计算并输出结果,否则应该输出错误提示。 判断输入是否合法的条件如下: 1. 输入的字符串中只能包含字、加号、减号、乘号和小点。其他的字符均为非法输入。 2. 字可以是整或者浮点,并且可以包含正负号。 3. 加号、减号和乘号只能出现在合法的位置。 给定一个复输入字符串,我们可以通过逐个字符地检查输入的字符串,判断输入是否合法。 如果输入合法,则进行复计算并输出结果。复可以分为实部和虚部,实部为实,虚部为实乘以虚单位(即"i"),并且可以包含正负号。复的四则运算规则与实相似,在进行加法、减法、乘法和除法运算时,实部与实部相加、减、乘、除,虚部与虚部相加、减、乘、除。 如果输入合法,则输出错误提示。错误提示应包含具体的错误信息,以帮助用户理解和解决错误。 通过以上步骤,我们可以实现一个复计算器,判断输入是否合法合法时输出计算结果,不合法时输出错误提示。 ### 回答2: 复计算器可以实现对复进行基本的学运算,例如加减乘除。在实现之前,我们需要判断输入是否合法。以下是用300字回答的解释: 首先,判断输入是否合法是非常重要的。对于复,我们可以将其表示为a+bi的形式,其中a和b分别表示实部和虚部。因此,首先我们需要检查输入是否包含两部分,即实部和虚部。 其次,我们需要判断输入是否合法。实部和虚部都是实,因此可以是整或小。我们可以使用一些正则表达式来判断输入字格式是否正确。 然后,我们需要判断输入是否包含运算符。复的四则运算包括加法、减法、乘法和除法。我们可以使用条件语句来判断输入是否包含这些运算符。 最后,如果输入合法,则我们可以进行相应的计算,将结果输出。例如,如果输入为"3+4i",则可以将其拆分为实部3和虚部4,并进行相应的计算,最后输出结果7。 如果输入合法,则我们需要输出错误信息。例如,如果输入不包含虚部或实部,或者输入字格式不正确,或者没有包含运算符,我们可以输出相应的错误提示信息,例如“输入格式错误”或“缺少实部或虚部”。 通过以上步骤,我们可以实现一个复计算器并判断输入是否合法。无论是输入合法还是不合法,我们都可以通过输出信息来进行相应的提示和处理。这样,用户可以在使用时得到及时的反馈,提高程序的可用性和用户体验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值