隨機生成求二種方式生成一種是字母加數字,二是隨機字母不要數字。組合在一個里面
uj5u.com熱心網友回復:
僅供參考:#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;
}
}
}
uj5u.com熱心網友回復:
26個字母,10個數字,放在一個S(35)的陣列里。你只要控制亂數n從0到35,就可以了。S(n)
uj5u.com熱心網友回復:
隨機一般生成的是數字,你如果需要生成字母,必須進行轉換,可以利用 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
當然字母怎么組合看你的需要修改就可以了。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/76769.html
標籤:非技術類
下一篇:vb中如何快速檢索?
