以下是引用xufan在2013-9-25 12:27:51的发言:
这是我写的一个例子,你看看#include<stdio.h>
#include<stdlib.h>
#include <iostream>
#define LEN 5
#define FLAG '7'
#define ISTRUE true
#define ISFALSE false
bool isExistServen(std::string& strValue)
{
std::string::const_iterator it;
for (it = strValue.begin(); it != strValue.end(); it++)
{
if (*it != FLAG)
continue;
else
return ISTRUE;
}
if (it == strValue.end())
return ISFALSE;
return ISFALSE;
}
int main()
{
char buf[16] = {'\0'};
std::string strValue;
for(int i=10000;i<=99999;i++)
{
sprintf(buf,"%d",i);
strValue = buf;
if (isExistServen(strValue)&&(i%7 != 0))
std::cout<<"i = "<<i<<std::endl;
}
system("pause");
return 0;
}
bool isExistServen(std::string& strValue)
{
std::string::const_iterator it;
for (it = strValue.begin(); it != strValue.end(); it++)
{
if (*it != FLAG)
continue;
else
return ISTRUE;
}
if (it == strValue.end())
return ISFALSE;
return ISFALSE;
}
这个函数的算法,我表示很吐血。先不说是否有find的,逻辑上搞的乱七八糟,的如果我看到我的项目有这样的代码,真的想抽人~
你觉得这样的逻辑等价于下面的吗?
bool isExistServen(std::string& strValue)
{
std::string::const_iterator it;
for (it = strValue.begin(); it != strValue.end(); it++)
{
if (*it == FLAG)
return ISTRUE;
}
return ISFALSE;
}
[
本帖最后由 yuccn 于 2013-9-25 13:49 编辑 ]