浮点数合法性判断

来源:百度知道 编辑:UC知道 时间:2024/09/27 06:25:31
Description

输入一字符串,判断它是不是定点浮点数形式,是则输出YES;否则输出NO。如输入" 123"、”+123”或"123.57",则输出YES。如输入" 123A"、或"123.57.89",则输出NO。

Input

字符串

Output

YES或NO(其前后不留空格)(答案后不用换行回车)

Sample Input

+123456789.0
Sample Output

YES
这题没思路,哎……请高手指点,如果有程序那就更好。

用什么解析都不重要要. 规则已经定了
第一个是不是 + 或者 - 如果是..做好标记. 去掉 第一个字符

判断是否只有一个'.'

判断是否全为数字或者'.', 因为已经确定只有一个'.' 了

//---------------------------------------------------------------------------

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

int chk(char st[])
{
int point=0,i,len;
if (st[0]!='+'&&st[0]!='-'&&!isdigit(st[0])) {
return 0;
}
len=strlen(st);
for (i = 1; i<len; ++i) {
if (!isdigit(st[i])&&st[i]!='.') {
return 0;
}
if (st[i]=='.') {
++point;
if (point>1) {
return 0;
}
}

}
return 1;
}
int main(void)
{
char st[80];
scanf("%*[ ]%79s",st);
printf("%s",chk(st)?"YES":"NO");
return 0;
}
//-------------------------------------------