【笔试时遇到的一道题】
今天陪同学去参加北京广联达的笔试,遇到了这样一道题,发给大家做做,就当是练练手了吧!题目:
编写一个函数IsFloat,该函数的作用是判断一个字符串是否是浮点型数据(不考虑科学计数法)
如:“12.2541”是浮点数,“.012drde”不是浮点数
程序代码:int IsFloat (char c[])
{
int i, j, len, flag = 1;
len = strlen (c + 1); //习惯于字符串从c[1]处开始
j = 0;
for (i = 1; i <= len; i++)
{
if (c[i] == '.')
if (j == 0)
j = i;
else
{
flag = 0;
break;
}
if (c[i] != '.' && (c[i] < '0' || c[i] > '9'))
{
flag = 0;
break;
}
}
return flag;
}如有错误,请指正
程序代码:bool IsFloat(const char *str)
{
int i = 0, j = 0;
while(str[i])
{
if(str[i] == '.')
{
j++;
if(j > 1 || i+1 == strlen(str) || i == 0)
{
return false;
}
else
{
i++;
continue;
}
}
if(str[i] >= '0' && str[i] <= '9')
{
if(i == 0 && str[i] == '0' && str[i+1] != '.')
return false;
i++;
}
else
{
return false;
}
}
return true;
}

程序代码:int IsFloat (char c[])
{
int i, j, len, flag = 1;
len = strlen (c + 1);
j = 0;
if (c[1] == '0' && c[2] == '0')
{
flag = 0;
return flag;
}
for (i = 1; i <= len; i++)
{
if (c[i] == '.')
if (j == 0)
j = i;
else
{
flag = 0;
break;
}
if (c[i] != '.' && (c[i] < '0' || c[i] > '9'))
{
flag = 0;
break;
}
}
return flag;
}
