大橙子网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
凡是数字皆为字符。任何数字首先是字符,然后才能是数字。所以这个问题应该是如何在字符中识别数字。
创新互联专注于企业成都全网营销、网站重做改版、永定网站定制设计、自适应品牌网站建设、html5、商城网站制作、集团公司官网建设、成都外贸网站建设、高端网站制作、响应式网页设计等建站业务,价格优惠性价比高,为永定等各大城市提供网站开发制作服务。
直接将每个字符挨个提取出来,将他赋给一个整型,得到它的ASCII码值。然后根据ASCII码的范围来判断它到底是数字字符还是非数字字符。由下表可以得知,数字范围在48~57的都是数字字符。
用isdigit()函数判断字符串是否为数字。
isdigit()函数包含在ctype.h头文件中,
原型: int isdigit(char c);
用法:#include ctype.h
功能:判断字符c是否为数字
说明:当c为数字0-9时,返回非零值,否则返回零。
下面使用isdigit()实现一个判断字符串是否为数字的代码。
这个函数是判断某一个字符是否为数字,可以用一个字符数组接受输入的字符,然后循环判断每一个字符是否为数字,如果其中一个不是数字,那么返回0,否则返回非0;包含了判断小数点的个数和负数符号-。
#includestdio.h
#includectype.h
void main()
{
char a[10];
int i,j,flag=0; /*flag标记小数点个数,如果超过一个,那么就不是数字*/
printf("input a number:\n");
scanf("%s",a);
for(i=0;a[i]!=0;i++)
{
if(i==0(a[i]=='+'||a[i]=='-'))
{
i++;
continue;
} /*如果第一个字符为+或-,不判断为非数字,可能是符号标志,继续向下判断*/
if(a[i]=='.')
{
flag++;
if(flag1) /*如果小数点个数超过一个,则表示不是数字*/
{
break;
}
else if(flag==1) /*如果小数点个数为1个,则可能为小数,继续判断*/
{
continue;
}
}
j=isdigit(a[i]);
if(j==0)
{
break;
}
}
if(j!=0)
printf("%s yes",a);
else
printf("%s no",a);
getch();
}
abs() 求绝对值
acos() 求反余弦
asin() 求反正弦
atan() 求反正切
atan2() 求反正切,按符号判定象限
ceil() 求不小于某值的最小整数(求上界)
cos() 求余弦
cosh() 求双曲余弦
div() 求商和余数
exp() 求e的幂
fabs() 求浮点数的绝对值
floor() 求不大于某值的最大整数(求下界)
fmod() 求模数
frexp() 求数的科学表示法形式
labs() 求长整型数的绝对值
ldexp() 以科学计数法计算
ldiv() 以长整型返回商和余数
log() 自然对数
log10() 以10为底的自然对数
modf() 将一个数分解成整数和小数部分
pow() 求幂
sin() 求正弦
sinh() 求双曲正弦
sqrt() 求平方根
tan() 求正切
tanh() 求双曲正切
PS.要用的时候,具体用法请自行百科 ^_^
C语言中,可以根据scanf()函数的返回值,判断输入的数据是否符合程序要求,该函数说明如下:
int scanf(const char *format, ...);
this functions return the number of input items successfully matched and assigned, which can be fewer than provided for, or even zero in the event of an early matching failure. 该函数返回成功匹配并赋值给变量的个数,有可能少于想读的数据个数,甚至有可能是0(如果第一个格式串就匹配失败的情况下)。
如果格式串是%d,则,当用户输入一个非数字字符时,scnaf()就会匹配失败,返回0
利用这个特点,可以在程序中进行输入数据的有效判断。因为系统不会自动清理缓存中的数据,所以,在读入错误数据时,要及时清理缓存,以免造成死循环。如:
void main()
{
int n;
while( scanf("%d%*c", n)!= 1 ) //用%*c来清除回车确认符和不合适的字符
{
printf("input error,please re-in:");
fflush(stdin); //清除缓存,但此命令在linux下不起作用。windows可用。前面的%*c可以控制不会死循环。
}
printf("ur input is :%d\n", n );
}
你好,首先要测试一下你编译器所定义的整型是多少字节,用sizeof(int)测试一下,一般是4字节,假如是4字节说明是32位,这样无符号和有符号整数区别在于第32位是1还是0,所以可以用一个数0x80000000=1000
0000
0000
0000
0000
0000
0000
0000(32),与整数做“与”运算,假如最高位结果是1(即0x80000000),说明原来整数是负数,假如位0则是正数。
所以可以用如下代码实现
int
yu(int
num)
{
return
(num
0x80000000)
;
}
之后在调用函数测试return值就可以了