给想要但还没有外文名的朋友(拉丁语系)

曾经写过,但和很多其他文章一起随着独立博客炸掉了,丢失了一些宝贵数据,不过源程序还在。“留得青山在,不怕没柴烧”。

先上代码吧。

for windows

#include<bits/stdc++.h>

//#define TJ

using namespace std;

const char sm[100][10]={
"b",
"c",
"d",
"f",
"g",
"h",
"j",
"k",
"l",
"m",
"n",
"p",
"r",
"s",
"t",
"v",
"w",
"x",
"y",
"z",
"sh",
"th",
"ck",
"ph",
"pr",
"br",
"cr",
"dr",
"tr",
"gr",
"kr",
"qu",
"wr",
"wh",
"ch"
},ym[100][10]={
"a", 
"e",
"i",
"o",
"u",
"ei",
"oi",
"ui",
"ea",
"ee",
"ao",
"io",
"uo",
"au",
"ou",
"ar",
"er",
"ir",
"or",
"ur"
},mw[100][10]{
"m",
"n",
"b",
"p",
"c",
"d",
"f",
"g",
"h",
"k",
"l",
"s",
"t",
"v",
"w",
"x",
"y",
"z",
"sh",
"ch",
},mw_g[100][10]={
"ly",
"sa",
"na",
"la",
"ry",
"ny",
"my",
"ma",
"line",
"lia",
"mia",
"nia",
"ria"
};
const int ns=35,ny=20,nm=10,nm_g=13;
const int nns=20,nny=5;
char res[100];

int main(){
	#ifdef TJ
		freopen(".in","r",stdin);
		freopen(".out","w",stdout);
	#endif
	srand(time(0));
	puts("Do you want to get a name for girl?[Y/N]");
	char cz=getchar();
	while(cz!='N'&&cz!='Y')cz=getchar();
	bool bb=(cz=='Y');
	getchar();
	while(1){
		memset(res,0,sizeof res);
		int n=rand()%4+1,a,b;
		if(n==4&&rand()%3)n=rand()%4;
		bool k=rand()&1;
		if(n==1||bb)k=1;
		while(n--)
			strcat(res,sm[a=(rand()%4?rand()%(ns-nns)+nns:rand()%nns)]),strcat(res,ym[b=(rand()%4?rand()%(ny-nny)+nny:rand()%nny)]),printf("%s %s\n",sm[a],ym[b]);
		if(k&&!bb)strcat(res,mw[rand()%nm]);
		else if(k&&bb)strcat(res,mw_g[rand()%nm_g]);
		if(!bb)
			if(k&&(a=rand()%5)==0)strcat(res,"e");
			else if(k&&a==1)strcat(res,"y");
		if(res[strlen(res)-1]=='i')res[strlen(res)-1]='y';
		res[0]=res[0]-'a'+'A';
		puts(res);
		getchar();
		system("cls");
//		Sleep(100); 
	} 
	return 0;
}

for linux

#include<bits/stdc++.h>

//#define TJ

using namespace std;

const char sm[100][10]={
"b",
"c",
"d",
"f",
"g",
"h",
"j",
"k",
"l",
"m",
"n",
"p",
"r",
"s",
"t",
"v",
"w",
"x",
"y",
"z",
"sh",
"th",
"ck",
"ph",
"pr",
"br",
"cr",
"dr",
"tr",
"gr",
"kr",
"qu",
"wr",
"wh",
"ch"
},ym[100][10]={
"a", 
"e",
"i",
"o",
"u",
"ei",
"oi",
"ui",
"ea",
"ee",
"ao",
"io",
"uo",
"au",
"ou",
"ar",
"er",
"ir",
"or",
"ur"
},mw[100][10]{
"m",
"n",
"b",
"p",
"c",
"d",
"f",
"g",
"h",
"k",
"l",
"s",
"t",
"v",
"w",
"x",
"y",
"z",
"sh",
"ch",
},mw_g[100][10]={
"ly",
"sa",
"na",
"la",
"ry",
"ny",
"my",
"ma",
"line",
"lia",
"mia",
"nia",
"ria"
};
const int ns=35,ny=20,nm=10,nm_g=13;
const int nns=20,nny=5;
char res[100];

int main(){
	#ifdef TJ
		freopen(".in","r",stdin);
		freopen(".out","w",stdout);
	#endif
	srand(time(0));
	puts("Do you want to get a name for girl?[Y/N]");
	char cz=getchar();
	while(cz!='N'&&cz!='Y')cz=getchar();
	bool bb=(cz=='Y');
	getchar();
	while(1){
		memset(res,0,sizeof res);
		int n=rand()%4+1,a,b;
		if(n==4&&rand()%3)n=rand()%4;
		bool k=rand()&1;
		if(n==1||bb)k=1;
		while(n--)
			strcat(res,sm[a=(rand()%4?rand()%(ns-nns)+nns:rand()%nns)]),strcat(res,ym[b=(rand()%4?rand()%(ny-nny)+nny:rand()%nny)]),printf("%s %s\n",sm[a],ym[b]);
		if(k&&!bb)strcat(res,mw[rand()%nm]);
		else if(k&&bb)strcat(res,mw_g[rand()%nm_g]);
		if(!bb)
			if(k&&(a=rand()%5)==0)strcat(res,"e");
			else if(k&&a==1)strcat(res,"y");
		if(res[strlen(res)-1]=='i')res[strlen(res)-1]='y';
		res[0]=res[0]-'a'+'A';
		puts(res);
		getchar();
		system("clear");
//		Sleep(100); 
	} 
	return 0;
}

这里放出一些已经随机出来的。

原文 音译 含义(源语言)
Briwhio 布里维奥 酿造(威尔士语)
Crafuo 克拉福 None
Mioh 米奥 三王(瑞典语)
Kribruo 克里布鲁 筛选(世界语)
上一篇:strlen、strcpy、strcat、strcmp函数编写


下一篇:21.6.12字符串连接函数:strcat