标签:
题目:请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。#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