当前位置:首页 » 编程语言 » c语言输入是数字

c语言输入是数字

发布时间: 2022-06-17 15:54:45

c语言中如何怎么判断输入的是数字

#include <stdio.h>
#include <string.h>

// 枚举类型:自然数,整数,小数 , 未知
enum TYPE {Natural,Integer,Float,Unkonwn};

/*
一个合法的数字(包括自然数,整数,小数)的格式是:
[+-](可选) + [0个或多个数字] + [小数点](可选) + [0个或多个数字]
比如:

+1
1
-1

+3.14
3.14
-3.14

+3.
3.
-3.

+.123
.123
-.123

都是合法的数字

*/
enum TYPE check(char s[])
{
int length = strlen(s);
int start = 0 , end = length-1;
// 去开始空白字符
while(start < length && s[start]==' ' || s[start]=='\t'){start++;}
// 去结尾空白字符
while(end >=0 && s[end]==' ' || s[end]==' '){end--;}

// 是否负数标识
bool isNegative = false;
// 是否小数标识
bool isFloat = false;
// 是否有整数部分
bool hasIntegerPart = false;
// 是否有小数部分
bool hasDecimalPart = false;

for(int i = start ; i <= end ; i++)
{
if(s[i] == '-' || s[i] == '+')
{
if(i == start)
isNegative = (s[i] == '-');
else
return Unkonwn;
}
else if(s[i] == '.')
{
if(!isFloat)
isFloat = true;
else
return Unkonwn;
}
else if(s[i] >= '0' && s[i] <='9')
{
if(!isFloat)
hasIntegerPart = true;
else
hasDecimalPart = true;
}
else
{
return Unkonwn;
}
}

if(isFloat)
{
if(hasIntegerPart || hasDecimalPart)
return Float;
else
return Unkonwn;
}
else
{
if(!isNegative)
return Natural;
else
return Integer;
}
}
int main(int argc, char *argv[])
{
char s[100];
enum TYPE type;
while(1)
{
scanf("%s",s);
type = check(s);
switch(type)
{
case Natural:
printf("%s\n","Natural");
break;
case Integer:
printf("%s\n","Integer");
break;
case Float:
printf("%s\n","Float");
break;
case Unkonwn:
printf("%s\n","Unknown");
break;
}
}

return 0;
}
/*
测试数据:

+1
1
-1

+3.14
3.14
-3.14

+3.
3.
-3.

+.123
.123
-.123

*/

⑵ C语言中怎么输入数字和字母

需要准备的材料分别有:电脑、C语言编译器。

1、首先,打开C语言编译器,新建一个初始.cpp文件,例如:test.cpp。

⑶ c语言 如何实现判断输入的是否是数字是否是字符

你好,这个问题其实并不难,你只要明白了c++键盘输入的原理,其实键盘输入的都是ask码然后根据你想要的输入是int还是char再转换成你想要的值。
既然你想判断键盘的输入你可以用一个字符串先把你的输入存下来然后再判断那些字符是数字还是字母就ok啦
eg:
#include <stdio.h>

void main()
{
char *input[1000];

cin>>input;

if(input[0]>'0'&&intput[0]<'9')数字

else 字符

}
谢谢
,,,不知道c中还有ctype,,,其实你可以用ctype中的函数判断,,,好吧,其实我学的是c++

⑷ c语言中如何判断输入的是字符还是数字

1、可以用sacnf或gets函数直接接收输入的字符串,然后用循环遍历字符串中每一个字符,判断其是字母还是数字。

2、可以用循环调用getch()或getchar()函数来一个一个字符的接收输入,同时判读输入的是字母还是数字。

3、假设字符c,满足 (c>='a'&& c<='z')|| (c>='A' && c<='Z')就是字母,满足 (c>=0 && c<=9)就是数字。

(4)c语言输入是数字扩展阅读:

getch():

所在头文件:conio.h

函数用途:从控制台读取一个字符,但不显示在屏幕上

函数原型:int getch(void)

返回值:读取的字符

例如:

char ch;或int ch;

getch();或ch=getch();

用getch();会等待你按下任意键,再继续执行下面的语句;

用ch=getch();会等待你按下任意键之后,把该键字符所对应的ASCII码赋给ch,再执行下面的语句。

⑸ C语言数字输入

scanf函数的功能是从终端读入,当你输完数据按下回车时就会停止输入了,不用再用这个for循环了。

⑹ c语言里 输入时 怎么判断是字符还是数字

需要准备的材料分别有:电脑、C语言编译器。

1、首先,打开C语言编译器,新建一个初始.cpp文件,例如:test.cpp。

⑺ 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

热点内容
编译翻译运行 发布:2025-02-06 21:05:20 浏览:200
安卓源码版本 发布:2025-02-06 20:51:34 浏览:431
安卓系统网络播放器哪个好 发布:2025-02-06 20:42:02 浏览:818
头条缓存的视频格式 发布:2025-02-06 20:32:18 浏览:116
ftp不显示文件夹 发布:2025-02-06 20:30:37 浏览:127
苹果手机解压怎么打开 发布:2025-02-06 20:29:35 浏览:476
单片机程序存储器 发布:2025-02-06 20:29:31 浏览:209
串的c语言 发布:2025-02-06 20:25:44 浏览:750
编程函数总结 发布:2025-02-06 20:09:11 浏览:317
编程obj 发布:2025-02-06 19:59:52 浏览:845