标签:
题目:请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。#include <iostream>
using namespace std;
void ScanDigits(char **str) //判断是否是0-9之间的数字;
{
while(**str!='\0' && **str>='0' && **str<='9')
++(*str);
}
bool IsExponential(char **str)//判断e或E之后的表达式是否合法:符号+数字;
{
if(**str!='e' && **str!='E')
return false;
++(*str);
if(**str=='+' || **str=='-')
++(*str);
if(**str=='\0')
return false;
ScanDigits(str);
return (**str=='\0')?true:false;
}
bool IsNumber(char *str)
{
if(str==NULL)
return false;
if(*str=='+' || *str=='-') //判断符号;
++str;
if(*str=='\0')
return false;
bool numeric=true;
ScanDigits(&str);
if(*str!='\0')
{
//如果是浮点数;
if(*str=='.')
{
str++;
ScanDigits(&str);
if(*str=='e' || *str=='E')
numeric=IsExponential(&str);
}
//如果是整型数的科学计数法;
else if(*str=='e' || *str=='E')
numeric=IsExponential(&str);
else
numeric=false;
}
return numeric && *str=='\0';
}
int main()
{
char *strr[4]={"5e2","-1E-16","12e+5.4","12e"};
for(int i=0;i<4;i++)
{
if(IsNumber(strr[i]))
cout<<strr[i]<<": YES!"<<endl;
else
cout<<strr[i]<<": NO!"<<endl;
}
system("pause");
return 0;
}
运行结果:
标签:
原文地址:http://blog.csdn.net/gogokongyin/article/details/51776292