编写一个c程序判断输入的是否一个有效的双精度型数字

来源:百度知道 编辑:UC知道 时间:2024/06/09 00:20:06
这种数能够有一个可选的+或-符号,最多那一个小数点,这个小数点也可以是第一个字符,且输入至少包括0到9之间的一个数字。如果输入的数字是一个实数返回一个整形数值1;否则,返回一个整形数值0.

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

int main()
{
int i,l,j,t, s,flag;
char str[256];

while (scanf("%s",str))
{ flag=0;t=0;s=0;
l=strlen(str);
if((str[0]<'0'||str[0]>'9')&&(str[0]!='+')&&(str[0]!= '-')&&(str[0]!= '.') &&(str[0]<'0'||str[0]>'9'))
t=1;

for(i=1;i<l;i++)
{ if (str[0]=='.'&&str[1]=='.')
{printf("0\n");
flag=1;
break;}

for(j=i+1;j<l;j++)
if((str[0]=='.'||str[i] == '.')&&(str[j]=='.'||str[j]==EOF))
{flag=1;
printf("0\n");
break;}

if(t==0&&(str[i]<'0'||str[i]>'9')&&str[i]!='.')

{
flag=1;t=1;
break;}

if(str[0]=='.'||str[i]=='.')
s=1;

}
if(s==0||t==1)