黑马程序员技术交流社区
标题:
利用随机数函数,生成随机密码,每天一贴,天天进步
[打印本页]
作者:
吴伟健
时间:
2015-4-12 12:14
标题:
利用随机数函数,生成随机密码,每天一贴,天天进步
10点起床,好久没这么晚起床了,吃了个早中饭,闲来无事,看板块有讨论随机数函数,突发奇想,做了一个随机密码生成程序
#include <stdio.h>
#include <stdlib.h>
int main(int argc, const char * argv[]) {
//请输入想生成多少个随机密码
//用循环限制得到用户想要的密码个数
int i=0;
while (i<=0) {
printf("请输入想生成多少个随机密码:\n");
scanf("%d",&i);
}
for (int n = 0; n<i; n++) {
char num1=arc4random_uniform(26)+65; //利用随机数生成数字,然后字符形式输出
char num2=arc4random_uniform(26)+65;
char num3=arc4random_uniform(26)+65;
char num4=arc4random_uniform(26)+97;
char num5=arc4random_uniform(26)+97;
char num6=arc4random_uniform(26)+97;
char num7=arc4random_uniform(10); //密码最后两位数字
char num8=arc4random_uniform(10);
printf("%c%c%c%c%c%c%d%d\n",num1,num2,num3,num4,num5,num6,num7,num8);
}
return 0;
}
复制代码
但是我不知道怎么把生成的密码排序在随机化,希望哪位朋友能帮忙一下,即如果我得到生成密码ABCabc11,在把这个密码随机排序,希望得到指点,另外版主没上班吗?求加技术分啊
作者:
吴伟健
时间:
2015-4-12 12:18
另外发了贴才发现,我定义变量是num7 num8是char,输出的时候是%d,但是没有警告也没有报错,求解下
作者:
吴伟健
时间:
2015-4-12 12:24
吴伟健 发表于 2015-4-12 12:18
另外发了贴才发现,我定义变量是num7 num8是char,输出的时候是%d,但是没有警告也没有报错,求解下 ...
int main(int argc, const char * argv[]) {
//请输入想生成多少个随机密码
//用循环限制得到用户想要的密码个数
int i=0;
while (i<=0) {
printf("请输入想生成多少个随机密码:\n");
scanf("%d",&i);
}
for (int n = 0; n<i; n++) {
char num1=(arc4random_uniform(26)+65)/2; //利用随机数生成数字,然后字符形式输出
char num2=arc4random_uniform(26)+65;
char num3=arc4random_uniform(26)+65;
char num4=arc4random_uniform(26)+97;
char num5=arc4random_uniform(26)+97;
char num6=arc4random_uniform(26)+97;
int num7=(arc4random_uniform(100))/2; //密码最后两位数字
int num8=arc4random_uniform(10);
printf("%c%c%c%c%c%c%d%d\n",num1,num2,num3,num4,num5,num6,num7,num8);
}
return 0;
}
复制代码
做了点修改,将得到的随机数进行运算,最后对数字进行运算,可以起到密码随机位数的作用
作者:
毛大鹏
时间:
2015-4-12 12:38
关于上面问题,是系统做了一个隐形转换,把char类型根据ascii码转成int类型了吧
作者:
吴伟健
时间:
2015-4-12 12:41
噢,谢谢,那生成的密码再随机排序,这个应该怎么做呢?
作者:
tyisbest
时间:
2015-4-12 12:42
赞一个.不错
作者:
花短裤的夏天
时间:
2015-4-12 12:49
太赞了,我还是太弱了,向大神学习!!!
作者:
举举手
时间:
2015-4-12 13:00
回来再看,先留下言
作者:
耿小强
时间:
2015-4-12 14:18
非常不错,再接再厉
作者:
糊涂娃
时间:
2015-4-12 14:38
我靠 nb…
作者:
kaiyan1208
时间:
2015-4-12 22:20
这个研究了一下 主要是你思考的方向不对
看看我写的给你参考一下
//
// main.c
// 13-生成随机密码
//
// Created by apple on 15/4/12.
// Copyright (c) 2015年 zky. All rights reserved.
/*
根据用户的输入的位数,输出大小字母加数字的密码
*/
#include <stdio.h>
#include <stdlib.h>
int main(int argc, const char * argv[])
{
//定义变量保存位数
int n=0;
char c1 = '\0';
// 提示输入需要生成密码的位数
while (n<=0){
printf("请输入需要生成密码的位数:\n");
scanf("%d",&n); //接收位数
}
//输出密码
for (int i=0;i<n;i++)
{
switch (arc4random_uniform(3)+1){
case 1 : c1=arc4random_uniform(26)+65; break;
case 2 : c1=arc4random_uniform(26)+97; break;
case 3 : c1=arc4random_uniform(10)+48; break;
}
printf("%c",c1);
}
printf("\n");
return 0;
}
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2