| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1855 人关注过本帖
标题:循环从数由参数决定,怎么办
只看楼主 加入收藏
aiyulunhui
Rank: 2
等 级:论坛游民
帖 子:19
专家分:24
注 册:2015-9-9
结帖率:50%
收藏
已结贴  问题点数:20 回复次数:7 
循环从数由参数决定,怎么办
假设我要穷举密码,有6位密码就需要6从循环,我不知道密码位数,就需要输入一个参数n来决定循环从数,这个程序改怎么编?如果n固定当然可以
搜索更多相关主题的帖子: 密码 
2016-01-06 17:46
yangfrancis
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:贵宾
威 望:141
帖 子:1510
专家分:7661
注 册:2014-5-19
收藏
得分:10 
回复 楼主 aiyulunhui
#include<stdlib.h>
#include<iostream>
using namespace std;
short n;
char password[20]="";
void Percursion(char *ps,short m)
{
    if(m==n) cout<<ps<<endl;//此处对密码输出可改为自己想要的其他操作
    else
    {
        for(int i=0;i<10;i++)
        {
               char digit[2];
               itoa(i,digit,10);
               strcat(ps,digit);
               Percursion(ps,m+1);
               ps[m]='\0';
        }
    }
}
int main()
{
    cout<<"请指定一个蜜码位数";
    cin>>n;
    Percursion(password,0);
    return 0;
}
//代码已测试可行
2016-01-06 21:54
yangfrancis
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:贵宾
威 望:141
帖 子:1510
专家分:7661
注 册:2014-5-19
收藏
得分:0 
递归应该叫“recursion”,函数名的英文我是想写这个名字,把单词记错了
2016-01-06 21:56
aiyulunhui
Rank: 2
等 级:论坛游民
帖 子:19
专家分:24
注 册:2015-9-9
收藏
得分:0 
回复 3楼 yangfrancis
谢谢,思想就是预留足够长的位数,用“\0"截断,对吧
2016-01-06 23:11
aiyulunhui
Rank: 2
等 级:论坛游民
帖 子:19
专家分:24
注 册:2015-9-9
收藏
得分:0 
mark,预留足够长的位数,每一位遍历时多加一个字符“\0"=0.
2016-01-06 23:27
eFun
Rank: 6Rank: 6
等 级:禁止访问
威 望:1
帖 子:58
专家分:400
注 册:2015-12-27
收藏
得分:10 
楼主还需要弄清密码的组成字符类型,数字+大写字母+小写字母,穷举是一个62进制的n为循环。
2016-01-07 07:34
yangfrancis
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:贵宾
威 望:141
帖 子:1510
专家分:7661
注 册:2014-5-19
收藏
得分:0 
回复 4楼 aiyulunhui
大致是这个思路。提醒一点,实战上看这种程序用于破获密码是不现实的。网络帐户在登录时至少也过七八秒才提示密码错误导致登录超时。如果是一个6位数密码,想要穷举的话…………不敢想像。
2016-01-07 12:10
aiyulunhui
Rank: 2
等 级:论坛游民
帖 子:19
专家分:24
注 册:2015-9-9
收藏
得分:0 
再mark,多重循环可以用递归简化,具体见2楼和http://bbs.
程序代码:
recursion (n)
{
if (n==0) do something;
else 
    {for (ps[n-1]=48;ps[n-1]<=57;ps[n-1]++)
          recursion(n-1);  
     }
}


[此贴子已经被作者于2016-1-7 12:59编辑过]

2016-01-07 12:51
快速回复:循环从数由参数决定,怎么办
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.196985 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved