c语言中如何检查输入值是不是为数字

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c语言中如何检查输入值是不是为数字相关的知识,希望对你有一定的参考价值。

如题。数字不一定为整数,是所有数字。

你写的这个有太多的错误。至于定义数组的时候a[n]这种错误我就不讲了
还有在循环里面(i=1;i<n;i++)
n没赋值就调用的错误我也不讲了
讲你的死循环问题
你没有给循环加一个限制条件
根据你continue的意思我暂时理解为
如果输入的不是数字
那么一直循环
重新输入
一直到你输入的是数字为止跳出循环
对吗?
while(1)
printf("请输入要查的值\n");
ret=scanf("%d",&n);
printf("ret=%d\n",ret);
if(ret==0)
printf("输入错误,请重新输入\n");
continue;

break;

这样就可以
如果输入的是数字
scanf的返回值为1
那么循环的第一次
不会进入if(ret==0)
也就是说
如果输入的是数字
直接执行break跳出循环
如果输入的不是数字
循环的时候执行语句if(ret==0)
然后执行continue
continue的意思是跳出当前循环继续下一次循环
即执行到continue之后从新循环而不会执行到break
以此类推
只要你输入的不是数字
则永远循环
输入的如果是数字
跳出循环
执行完毕。
大哥
如果小弟回答正常
给点分吧
多谢
=================================================================
另外对于一楼的同学
我必须有好的提醒你scanf()的用法以及返回值的相关问题
我想你肯定不知道
scanf("%d",&i)
如果你输入的是int型则返回1
否则返回0
换句话说即你输入的类型和scanf()里面预先定义的类型一致
则返回1
否则返回0
thank
you
参考技术A int
isdigit(int
ch);
这个是C提供的函数来检测输入是否是数字,,是,返回1;不是返回0
包含头文件ctype.h

C#怎么判断输入内容是不是为数字

方案一:Try...Catch(执行效率不高)
///
/// 名称:IsNumberic
/// 功能:判断输入的是否是数字
/// 参数:string oText:源文本
/// 返回值: bool true:是 false:否
///
///
///
private bool IsNumberic(string oText)

try

int var1=Convert.ToInt32 (oText);
return true;

catch

return false;



方案二:正则表达式(推荐)
a)
using System;
using System.Text.RegularExpressions;

public bool IsNumber(String strNumber)

Regex objNotNumberPattern=new Regex("[^0-9.-]");
Regex objTwoDotPattern=new Regex("[0-9]*[.][0-9]*[.][0-9]*");
Regex objTwoMinusPattern=new Regex("[0-9]*[-][0-9]*[-][0-9]*");
String strValidRealPattern="^([-]|[.]|[-.]|[0-9])[0-9]*[.]*[0-9]+$";
String strValidIntegerPattern="^([-]|[0-9])[0-9]*$";
Regex objNumberPattern =new Regex("(" + strValidRealPattern +")|(" + strValidIntegerPattern + ")");

return !objNotNumberPattern.IsMatch(strNumber) &&
!objTwoDotPattern.IsMatch(strNumber) &&
!objTwoMinusPattern.IsMatch(strNumber) &&
objNumberPattern.IsMatch(strNumber);


b)
public static bool IsNumeric(string value)

return Regex.IsMatch(value, @"^[+-]?\\d*[.]?\\d*$");

public static bool IsInt(string value)

return Regex.IsMatch(value, @"^[+-]?\\d*$");

public static bool IsUnsign(string value)

return Regex.IsMatch(value, @"^\\d*[.]?\\d*$");
参考技术A 判断是不是数据,要不是就表示没有选择,则从隐藏域里读出来

以上是关于c语言中如何检查输入值是不是为数字的主要内容,如果未能解决你的问题,请参考以下文章

c语言中如何判断输入的是不是数字?

如果没有输入,如何退出代码?代码示例:检查字符串是不是为回文? (在 C 编程语言中)

怎样检查C语言输入数据的合法性?

C语言中如何实现多组数据输入输出?

c语言判断输入的是不是是数字(不止一位)

C语言,如何将一个个输入的数字变成一串数字一起输出来,求解~