标题:循环从数由参数决定,怎么办
只看楼主
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



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-460880-1-1.html




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

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