A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

10点起床,好久没这么晚起床了,吃了个早中饭,闲来无事,看板块有讨论随机数函数,突发奇想,做了一个随机密码生成程序
  1. #include <stdio.h>
  2. #include <stdlib.h>

  3. int main(int argc, const char * argv[]) {
  4.     //请输入想生成多少个随机密码
  5.    
  6.     //用循环限制得到用户想要的密码个数
  7.     int i=0;
  8.     while (i<=0) {
  9.         printf("请输入想生成多少个随机密码:\n");
  10.         scanf("%d",&i);
  11.     }
  12.    
  13.     for (int n = 0; n<i; n++) {
  14.         char  num1=arc4random_uniform(26)+65;  //利用随机数生成数字,然后字符形式输出
  15.         char  num2=arc4random_uniform(26)+65;
  16.         char  num3=arc4random_uniform(26)+65;
  17.         char  num4=arc4random_uniform(26)+97;
  18.         char  num5=arc4random_uniform(26)+97;
  19.         char  num6=arc4random_uniform(26)+97;
  20.         char  num7=arc4random_uniform(10);     //密码最后两位数字
  21.         char  num8=arc4random_uniform(10);
  22.         printf("%c%c%c%c%c%c%d%d\n",num1,num2,num3,num4,num5,num6,num7,num8);
  23.     }
  24.    
  25.     return 0;
  26. }
复制代码



但是我不知道怎么把生成的密码排序在随机化,希望哪位朋友能帮忙一下,即如果我得到生成密码ABCabc11,在把这个密码随机排序,希望得到指点,另外版主没上班吗?求加技术分啊

评分

参与人数 1黑马币 +4 收起 理由
耿小强 + 4 赞一个!

查看全部评分

11 个回复

正序浏览
这个研究了一下 主要是你思考的方向不对
看看我写的给你参考一下
  1. //
  2. //  main.c
  3. //  13-生成随机密码
  4. //
  5. //  Created by apple on 15/4/12.
  6. //  Copyright (c) 2015年 zky. All rights reserved.
  7. /*

  8. 根据用户的输入的位数,输出大小字母加数字的密码
  9. */

  10. #include <stdio.h>
  11. #include <stdlib.h>

  12. int main(int argc, const char * argv[])
  13. {
  14.     //定义变量保存位数
  15.     int n=0;
  16.     char c1 = '\0';
  17.     // 提示输入需要生成密码的位数
  18.     while (n<=0){
  19.         printf("请输入需要生成密码的位数:\n");
  20.         scanf("%d",&n);      //接收位数
  21.     }
  22.    
  23.     //输出密码
  24.     for (int i=0;i<n;i++)
  25.     {
  26.         switch (arc4random_uniform(3)+1){
  27.             case 1 : c1=arc4random_uniform(26)+65;  break;
  28.             case 2 : c1=arc4random_uniform(26)+97;  break;
  29.             case 3 : c1=arc4random_uniform(10)+48;  break;
  30.         }
  31.        printf("%c",c1);
  32.     }
  33.    
  34.     printf("\n");
  35.     return 0;
  36. }
复制代码
回复 使用道具 举报
我靠 nb…
回复 使用道具 举报
非常不错,再接再厉
回复 使用道具 举报
回来再看,先留下言
回复 使用道具 举报
太赞了,我还是太弱了,向大神学习!!!
回复 使用道具 举报
赞一个.不错
回复 使用道具 举报
噢,谢谢,那生成的密码再随机排序,这个应该怎么做呢?
回复 使用道具 举报
关于上面问题,是系统做了一个隐形转换,把char类型根据ascii码转成int类型了吧
回复 使用道具 举报
吴伟健 发表于 2015-4-12 12:18
另外发了贴才发现,我定义变量是num7 num8是char,输出的时候是%d,但是没有警告也没有报错,求解下 ...
  1. int main(int argc, const char * argv[]) {
  2.     //请输入想生成多少个随机密码
  3.    
  4.     //用循环限制得到用户想要的密码个数
  5.     int i=0;
  6.     while (i<=0) {
  7.         printf("请输入想生成多少个随机密码:\n");
  8.         scanf("%d",&i);
  9.     }
  10.    
  11.     for (int n = 0; n<i; n++) {
  12.         char  num1=(arc4random_uniform(26)+65)/2;  //利用随机数生成数字,然后字符形式输出
  13.         char  num2=arc4random_uniform(26)+65;
  14.         char  num3=arc4random_uniform(26)+65;
  15.         char  num4=arc4random_uniform(26)+97;
  16.         char  num5=arc4random_uniform(26)+97;
  17.         char  num6=arc4random_uniform(26)+97;
  18.         int  num7=(arc4random_uniform(100))/2;     //密码最后两位数字
  19.         int  num8=arc4random_uniform(10);
  20.         printf("%c%c%c%c%c%c%d%d\n",num1,num2,num3,num4,num5,num6,num7,num8);
  21.     }
  22.    
  23.     return 0;
  24. }
复制代码


做了点修改,将得到的随机数进行运算,最后对数字进行运算,可以起到密码随机位数的作用
回复 使用道具 举报
另外发了贴才发现,我定义变量是num7 num8是char,输出的时候是%d,但是没有警告也没有报错,求解下
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马