本文目录一览:
- 1、C语言中汉语拼音怎么输出
- 2、c语言可以用拼音编写吗
- 3、求问c语言中怎么把一个字符串中的拼音换成汉字 如输入jin tian 输出今 tian
- 4、拼音分词算法 C语言
- 5、C语言拼音打字程序问题
C语言中汉语拼音怎么输出
#includestdio.h
int main()
{
char a[10];
scanf("%s", a);
printf("%s\n", a);
return 0;
}
c语言可以用拼音编写吗
定义变量什么的都可以使用拼音,但是最好不要这样做,因为这样不是良好的编码风格,如果你以后自己看自己的程序的时候,拼音会让你自己都不知道自己写的什么东西。最好还是用单词,如果单词比较多可以用单词的缩写
求问c语言中怎么把一个字符串中的拼音换成汉字 如输入jin tian 输出今 tian
如果是简单的实现的话可以使用哈希表,这样查找可能比较快一点,但是汉字拼音相同的很多,
例如建立两个相关的数组:
char pinyin[100][50]={"jin","tian"};
char hanzi[100][50] = {"今","天"};
然后将输入的字与 pinyin表对比,找到index,然后对应输出hanzi[index]
因为 C 语言没有哈希表,需要自己实现,类似于上面的结构。
拼音分词算法 C语言
#include stdio.h
#define M_JUZI 200
// 树图的链表验证结构
// 用图的链式存储来构造树,子树均记录串的静态位置(索引)
typedef struct ST_FenCi{
int LeiBie; // 连什么类别?1 : 韵母,2 : 声母
int SuoYin; // 声母后的韵母索引 或者 词语中韵母后一个字的声母索引
struct ST_FenCi *pN; // 兄弟
} FenCi;
typedef struct ST_Ci{
int SuoYin; // 在原始串内的子串(字)索引
int Chang; // 子串长度
} Ci; // 记录结果的结构
typedef struct ST_ShengMu {
char Pin[3]; // 声母字符串
FenCi *pLian; // 分词树的子树
} ShengMu; // 用来定义声母的静态集合
typedef struct ST_YunMu {
char Yin[5]; // 韵母字符串,区别于声母
FenCi *pLian; // 分词树的子树
} YunMu; // 用来定义韵母的静态集合
// 声母开字头
ShengMu smJiHe[29] = {{""},{"b"},{"c"},{"d"},{""},{"f"},{"g"},
{"h"},{""},{"j"},{"k"},{"l"},{"m"},{"n"},
{""},{"p"},{"q"},{"r"},{"s"},{"t"},{""},
{""},{"w"},{"x"},{"y"},{"z"},{"ch"},{"sh"},{"zh"}};
// 韵母收字尾
YunMu ymJiHe[24] = {{"a"},{"o"},{"e"},{"i"},{"u"},{"v"},
{"ai"},{"ei"},{"ui"},{"ao"},{"ou"},
{"iu"},{"ie"},{"ue"},
{"er"},
{"an"},{"en"},{"in"},{"un"},{"vn"},
{"ang"},{"eng"},{"ing"},{"ong"}};
// 关于分字树,完全可以按照“现代汉语词典”的音节表来构造
// 某分字子树的构造
void InitFenZiShu0() {
}
int main() {
char JuZi[M_JUZI];
//scanf("%s",JuZi);
// 算法1. 首字哈希查找,链表连字,链表连词
// 如果需要查找的表有限,可以用if ,else,也可以用哈希查找
// 待解决的问题:
// 1.1. 声母头与声母尾的混淆,两个字头之间至少相差三个位置
// 1.2. 韵母尾与声母头的混淆,上下文,回退
// 1.3. 超前搜索,首先,如果韵母可以扩展到更长的另一个韵母,
// 1.3.1 从韵母收字的时候,
// 不仅要尝试韵母的"扩展",而且要判断扩展后新韵母的后缀,
// 如果这个后缀为声母头,那么在声母头的后面是否有合适的韵母构成一个新字?
// 如果有,就需要记录这种可能,而且做好提前收尾的准备
// 如果没有,理所当然要把新的韵母继续"扩展"
// 这样的韵母比如:e-er, a-an-ang, e-en-eng, i-in-ing, u-un,
// 这样的声母比如:e, r, g
// 1.3.2 从声母找字的时候,
// 如果后面找不到声母头链表里所有的韵母,就可以扩展匹配更长的声母
// 算法2. 渐进地找到所有声母点,上下文分析,修正,分析到结构,显示
// 算法2.1 对原文的每个字,逐个匹配已知声母
// 算法2.2 已知声母,在一定范围里搜集在原文里出现的每个声母点
getchar(); // enter
return 1;
}
C语言拼音打字程序问题
//这段程序错误太多,而且代码风格太乱;
//不过估计您是个初学者,就帮你的程序按你思路修改了
//运行结果如下:
模仿拼音输入法
请输入拼音wo
wo
0.挝 1.莴 2.涡 3.窝 4.蜗 5.倭 6.踒 7.喔 8.我 9.肟 10.沃 11.卧 12.偓 13.握 14.幄
15.渥 16.龌 17.涴 18.硪 19.斡 请输入对应的序号选字:2
涡
//修改后程序如下,希望对你有用!
#includestdio.h
#includestring.h
int main() //是int还是void,根据编译器,我用的是CodeBlocks需要用int
{
char wo[]= {"wo"};
char wo_ch[]= {"挝莴涡窝蜗倭踒喔我肟沃卧偓握幄渥龌涴硪斡"};
printf("%d:%s\n", strlen(wo_ch), wo_ch);
//char str_input[3];
unsigned int i=0,str_ch_len=strlen(wo_ch);
printf("模仿拼音输入法\n");
printf("请输入拼音wo\n");
//scanf("%s",str_input);
char str_input[3];
gets(str_input);//输入拼音
//if(str_input==wo)//修改如下(字符串是不能直接比较的!)
if (0==strcmp(str_input,wo))
{
for(i=0; istr_ch_len; i+=2)
//printf("%d.%c "i,wo_ch[i]); //修改如下(双引号之后应该有,号)
printf("%d.%c%c ",i/2,wo_ch[i],wo_ch[i+1]);
last:
printf("请输入对应的序号选字:");
//scanf("%d" i); //修改如下
unsigned int n;
scanf("%u", n);
if (2*nstr_ch_len)
{
printf("你要选的字符不存在\n");
goto last;
}
else
{
printf("%c%c",wo_ch[2*n],wo_ch[2*n+1]);
}
}
else
{
printf("对不起,没有找到该拼音的字库\n");
}
return 0;//如果主函数是void,删除此行!
}