【笔试时遇到的一道题】
今天陪同学去参加北京广联达的笔试,遇到了这样一道题,发给大家做做,就当是练练手了吧!题目:
编写一个函数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; }