本文目錄一覽:
- 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,刪除此行!
}
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/243255.html