随机生成字母加数字

soft811 2016-04-20 10:10:12
随机生成求二种方式生成一种是字母加数字,二是随机字母不要数字。组合在一个里面
...全文
3280 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2016-04-20
  • 打赏
  • 举报
回复
仅供参考:
#include <time.h>
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
char *family="王李张刘陈杨黄赵吴周徐孙马朱胡郭何高林罗郑梁谢宋唐许韩冯邓曹彭"
             "曾肖田董袁潘于蒋蔡余杜叶程苏魏吕丁任沈姚卢姜崔钟谭陆汪范金石廖"
             "贾夏韦傅方白邹孟熊秦邱江尹薛闫段雷侯龙史陶黎贺顾毛郝龚邵万钱严"
             "覃武戴莫孔向汤";
char  *boyname="伟刚勇毅俊峰强军平保东文辉力明永健世广志义兴良海山仁波宁贵福生"
               "龙元全国胜学祥才发武新利清飞彬富顺信子杰涛昌成康星光天达安岩中"
               "茂进林有坚和彪博诚先敬震振壮会思群豪心邦承乐绍功松善厚庆磊民友"
               "裕河哲江超浩亮政谦亨奇固之轮翰朗伯宏言若鸣朋斌梁栋维启克伦翔旭"
               "鹏泽晨辰士以建家致树炎德行时泰盛雄琛钧冠策腾楠榕风航弘";
char *girlname="秀娟英华慧巧美娜静淑惠珠翠雅芝玉萍红娥玲芬芳燕彩春菊兰凤洁梅琳"
               "素云莲真环雪荣爱妹霞香月莺媛艳瑞凡佳嘉琼勤珍贞莉桂娣叶璧璐娅琦"
               "晶妍茜秋珊莎锦黛青倩婷姣婉娴瑾颖露瑶怡婵雁蓓纨仪荷丹蓉眉君琴蕊"
               "薇菁梦岚苑婕馨瑗琰韵融园艺咏卿聪澜纯毓悦昭冰爽琬茗羽希宁欣飘育"
               "滢馥筠柔竹霭凝晓欢霄枫芸菲寒伊亚宜可姬舒影荔枝思丽";
char  *mixname="澜华秋娣桂凤旭先丽娜朋政香致仁晨云雅柔泰宜宁善荷娅腾霭妍彬欢媛琼婉"
               "青树淑浩露彩风红璧璐杰波萍全纨纯江义君健飞羽震春振凡薇龙才航豪德翔"
               "胜思黛菁发爽园克昌茂艳军嘉影进珠辉朗炎环永姬婵丹瑾维世荔勇枫刚蓓毅"
               "惠亨保士雄琬霄素友群哲强勤康芸峰筠元菊若厚鸣英志楠达东亚锦艺兰仪慧"
               "山可广霞国娟信武清兴琰中庆聪成翰冠贵言婕馨心卿琛菲裕芝诚伊学榕固荣"
               "晶博娴希梁雁妹松瑞苑燕邦策斌翠珊月飘河美姣育宁子力时民昭怡明辰蕊奇"
               "功莎叶眉会栋冰新磊承轮瑶馥之伯彪建茜寒林坚敬安岩欣颖莺祥海茗良悦乐"
               "启巧晓以亮盛有婷爱梅顺壮宏生竹谦倩莲玉钧思玲利真平滢韵佳珍琳琴洁福"
               "娥静莉星超和凝家伟光梦文芳瑗融舒富岚天琦雪泽弘咏枝秀芬贞绍鹏蓉涛伦"
               "行俊毓";
FILE *fp;
char tmp[2000*(6+1)+1];
int make(char *filename , char *bgx , int bgxnum) {
    int num,i,n,y,z;
    while (1) {
        puts("\n注意:一次最多能生成2000个.\n");
        printf("你准备生成多少个姓名?:");
        fflush(stdout);
        rewind(stdin);
        scanf("%d",&num);
        if (1<=num && num<=2000) break;
    }
    fp=fopen(filename,"r");
    if (fp!=NULL) {
        int x;
        fclose(fp);
        printf("警告:准备生成的%s已经存在!\n",filename);
        puts(" 1.追加文件内容");
        puts(" 2.覆盖文件内容");
        puts(" 0.取消本次操作");
        printf("请做出选择:");
        fflush(stdout);
        rewind(stdin);
        scanf("%d",&x);
        switch (x) {
        case 0:
            puts("\n已经取消本次操作!");
            getch();
            return(0);
        break;
        case 1:
            fp=fopen(filename,"a");
            if (fp==NULL) {
                printf("追加%s文件内容失败!可能文件具有只读属性或者正被使用!",filename);
                getch();
                return(1);
            }
        break;
        case 2:
            fp=fopen(filename,"w");
            if (fp==NULL) {
                printf("覆盖文件%s内容失败!可能文件具有只读属性或者正被使用!",filename);
                getch();
                return(1);
            }
        break;
        default:
            puts("你没有做出有效的选择,按任意键返回主菜单!");
            getch();
            return(0);
        }
    } else {
        fp=fopen(filename,"w");
        if (fp==NULL) {
            puts("创建文件失败!!");
            getch();
            return(1);
        }
    }
    y=0;z=1;
    for (i=0;i<num;i++) {
        n=rand()%100*2;
        tmp[y]=family[n];
        tmp[z]=family[n+1];
        y+=2;
        z+=2;
        n=rand()%bgxnum*2;
        tmp[y]=bgx[n];
        tmp[z]=bgx[n+1];
        y+=2;
        z+=2;
        if (rand()%2==1) {
            n=rand()%bgxnum*2;
            tmp[y]=bgx[n];
            tmp[z]=bgx[n+1];
            tmp[z+1]='\n';
            y+=3;
            z+=3;
        } else {
            tmp[y]='\n';
            y++;
            z++;
        }
    }
    tmp[z-1]='\0';
    fputs(tmp,fp);
    fclose(fp);
    printf("批量姓名已经输出到文件:%s",filename);
    getch();
    return(0);
}
int main() {
    int slt;

    srand(time(NULL));
    while (1) {
        puts("\n批量姓名生成器v1.0 By.morning----QQ:88072010\n");
        puts(" 1.生成男子名");
        puts(" 2.生成女子名");
        puts(" 3.生成混合名");
        puts(" 0.退出本程序");
        puts("--------------------------------");
        printf("请选择:");
        fflush(stdout);
        rewind(stdin);
        scanf("%d",&slt);
        switch (slt) {
            case 1:make( "boyname.txt", boyname,150);break;
            case 2:make("girlname.txt",girlname,149);break;
            case 3:make( "mixname.txt", mixname,299);break;
            case 0:return 0;
            default: continue;
        }
    }
}
ZHRXJR 2016-04-20
  • 打赏
  • 举报
回复
随机一般生成的是数字,你如果需要生成字母,必须进行转换,可以利用 Chr 函数转换,例如下面的例子

Dim AA(1 To 20) As String, BB(1 To 10) As String
For I = 1 To 20
AA(I) = Chr(Int(Rnd * 25 + 65)) & Chr(Int(Rnd * 25 + 97)) & Chr(Int(Rnd * 25 + 65)) & CStr(Int(Rnd * 89 + 10))
If I Mod 5 = 0 Then
Text1.Text = Text1.Text & AA(I) & vbCrLf
Else
Text1.Text = Text1.Text & AA(I) & ", "
End If
Next I
For I = 1 To 10
BB(I) = Chr(Int(Rnd * 25 + 65)) & Chr(Int(Rnd * 25 + 97)) & Chr(Int(Rnd * 25 + 65)) & Chr(Int(Rnd * 25 + 97))
If I Mod 5 = 0 Then
Text2.Text = Text2.Text & BB(I) & vbCrLf
Else
Text2.Text = Text2.Text & BB(I) & ", "
End If
Next I

当然字母怎么组合看你的需要修改就可以了。
vansoft 2016-04-20
  • 打赏
  • 举报
回复
26个字母,10个数字,放在一个S(35)的数组里。 你只要控制随机数n从0到35,就可以了。S(n)

741

社区成员

发帖
与我相关
我的任务
社区描述
VB 版八卦、闲侃,联络感情地盘,禁广告帖、作业帖
社区管理员
  • 非技术类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧