500分悬赏--大小写全排列C语言代码
来源:百度知道 编辑:UC知道 时间:2024/05/22 01:44:45
本人破解了一个无线网密码:083FBF3ADED
可能是大小写区分的问题,所以不能连接上,现在需要穷举每个字母位的大写和小写的全部可能,人工排列怕出错,所以想用编程输出排列结果。
本人的思路是:数字不区分大小写,所以可以先忽略数字,把字母拿出来,那就是FBFDEDA,每个字母都有大写和小写两种情况,所以总共应该有2的7次方(128)个密码。
假设小写为0,大写为1,那么每个位置要么是0,要么是1,于是就变成对应位置上的0和1的排列。设对应的位为的变量分别为a,b,c,d,e,f,g.
那么可以有类似的代码:
main
{
int a,b,c,d,e,f,g,
a=b=c=d=e=f=g=0,
for(a>=0,a<2,a++)
{for(b>=0,b<2,b++)
{for(c>=0,c<2,c++)
...
g+=1
f+=1
e+=1
...
prinf(%c,0 & 8 &3 & a & b & c & 3 & d & e & f & g)
}
}
}
}
以上是本人的一个思路,就是多层嵌套循环,如果每一位是0就表示小写,是一就是大写。
本人很久没有碰过C语言了,所以很多地方语法可能不对。希望C语言高手给写一个严格符合C语言的代码出来,可以根据自己的算法写,每行后面最好有注释说明,输出文本文件最好。
把运行结果也发给我,谢谢。
本人想给500分,可是系统每次最大设置是100,我可以随便再发几个问题给你冲剩余的分数,所以不要担心没有分,本人分多的是.
诸位仁兄不要再让我翻书啊,翻书我是肯定能写出来的,也就不用麻烦各位了
可能是大小写区分的问题,所以不能连接上,现在需要穷举每个字母位的大写和小写的全部可能,人工排列怕出错,所以想用编程输出排列结果。
本人的思路是:数字不区分大小写,所以可以先忽略数字,把字母拿出来,那就是FBFDEDA,每个字母都有大写和小写两种情况,所以总共应该有2的7次方(128)个密码。
假设小写为0,大写为1,那么每个位置要么是0,要么是1,于是就变成对应位置上的0和1的排列。设对应的位为的变量分别为a,b,c,d,e,f,g.
那么可以有类似的代码:
main
{
int a,b,c,d,e,f,g,
a=b=c=d=e=f=g=0,
for(a>=0,a<2,a++)
{for(b>=0,b<2,b++)
{for(c>=0,c<2,c++)
...
g+=1
f+=1
e+=1
...
prinf(%c,0 & 8 &3 & a & b & c & 3 & d & e & f & g)
}
}
}
}
以上是本人的一个思路,就是多层嵌套循环,如果每一位是0就表示小写,是一就是大写。
本人很久没有碰过C语言了,所以很多地方语法可能不对。希望C语言高手给写一个严格符合C语言的代码出来,可以根据自己的算法写,每行后面最好有注释说明,输出文本文件最好。
把运行结果也发给我,谢谢。
本人想给500分,可是系统每次最大设置是100,我可以随便再发几个问题给你冲剩余的分数,所以不要担心没有分,本人分多的是.
诸位仁兄不要再让我翻书啊,翻书我是肯定能写出来的,也就不用麻烦各位了
程序:
#include <stdio.h>
main()
{
int n, i, j;
char code[]="083FBF3ADED";
char cseq[] = {3,4,5,7,8,9,10};
char cBig[] = "FBFADED";
char cSmall[] = "fbfaded";
for(i=0;i<(1<<7);i++)
{
for(j=0;j<7;j++)
{
if(i&(1<<j))
{
code[cseq[j]] = cBig[j];
}
else
{
code[cseq[j]] = cSmall[j];
}
}
printf("%3d: %s\n", i, code);
}
}
结果:
0: 083fbf3aded
1: 083Fbf3aded
2: 083fBf3aded
3: 083FBf3aded
4: 083fbF3aded
5: 083FbF3aded
6: 083fBF3aded
7: 083FBF3aded
8: 083fbf3Aded
9: 083Fbf3Aded
10: 083fBf3Aded
11: 083FBf3Aded
12: 083fbF3Aded
13: 083FbF3Aded
14: 083fBF3Aded
15: 083FBF3Aded
16: 083fbf3aDed
17: 083Fbf3aDed
18: 083fBf3aDed
19