关于一个c++问题

来源:百度知道 编辑:UC知道 时间:2024/05/12 04:03:07
#include<iostream>
#include<string>
using namespace std;
bool check(string str) 。。。。。。。。。。。。。。。。。。。。。。。。。。1
{
for(int i=0;i<str.length();i++)。。。。。。。。。。。。。。。。。。。。。2
if((str[i]>'9'||str[i]<'0')&&(str[i]!='.')) 。。。。。。。。。。。3
return false; 。。。。。。。。。。。。。。。。。。。。。。5
return true; 。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。6
}
void main()
{
string kkk;
cin>>kkk;
cout<<check(kkk);
}
这段程序check函数不明白,我觉得这个check函数是循环返回的,可是输出的只有1或者0.也就是当输入的字符串都为有字符时,返回0,都是数字时返回1.各位高手帮帮忙。
我知道这个函数的功能是什么。但是我一直以为这个函数只判断了字符串的第一个字符而已,比如我输入"45ab"。那就先判断str[0],也就是4,4不是字符,返回true,然后这个函数就不执行了。谁能帮我找出我为什么会这样认为呢?我在语法的认识上有什么错误呢?

只要STR里有非数字字符并且不是'.'
就返回FALSE
如果没有这些最后就返回TRUE了

注意 只返回一次
即当检查到字符串中有非数字字符时 执行RETURN FALSE语句
一执行这个也就退出CHECK函数了

没有你说的循环返回 RETURN就是退出的出口

补充回答
你的理解是错误的
"
但是我一直以为这个函数只判断了字符串的第一个字符而已,比如我输入"45ab"。那就先判断str[0],也就是4,4不是字符,返回true,然后这个函数就不执行了。
"
不是只判断第一个字符 是要判断到一个不是数字或小数点的字符时RETURN FALSE
比如你说的45ab
第一个是'4'
IF判断不成立 则继续在FOR中循环
到a的时候 IF成立了 则返回FALSE

看来你是对这个FOR循环理解错了
你程序里的FOR循环如果写规范些是这样的
for(int i=0;i<str.length();i++)
{
if((str[i]>'9'||str[i]<'0')&&(str[i]!='.'))
{return false;}
}
return true

也就是说如果字符是数字或小数点 是不返回TRUE的
只有全判断完了没有非数字情况才能返回TRUE

就是检查str里是不是都是 数字和 . 是就返回1, 不是就返回0

对小数点的判断不全面,其他的没有问题啊