• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

                在很多軟件中,輸入拼音的首寫字母就可以快速定位到某個(gè)詞條。比如,在鐵路售票軟件中,輸入: “bj”就可以定位到“北京”。怎樣在自己的軟件中實(shí)現(xiàn)這個(gè)功能呢?問(wèn)題的關(guān)鍵在于:對(duì)每個(gè)漢字必須能計(jì)算出它的拼音首字母。

                GB2312漢字編碼方式中,一級(jí)漢字的3755個(gè)是按照拼音順序排列的。我們可以利用這個(gè)特征,對(duì)常用漢字求拼音首字母。

                GB2312編碼方案對(duì)每個(gè)漢字采用兩個(gè)字節(jié)表示。第一個(gè)字節(jié)為區(qū)號(hào),第二個(gè)字節(jié)為區(qū)中的偏移號(hào)。為了能與已有的ASCII編碼兼容(中西文混排),區(qū)號(hào)和偏移編號(hào)都從0xA1開始。

                我們只要找到拼音a,b,c,...x,y,z 每個(gè)字母所對(duì)應(yīng)的GB2312編碼的第一個(gè)漢字,就可以定位所有一級(jí)漢字的拼音首字母了(不考慮多音字的情況)。下面這個(gè)表給出了前述信息。請(qǐng)你利用該表編寫程序,求出常用漢字的拼音首字母。


            a 啊 B0A1
            b 芭 B0C5
            c 擦 B2C1
            d 搭 B4EE
            e 蛾 B6EA
            f 發(fā) B7A2
            g 噶 B8C1
            h 哈 B9FE
            j 擊 BBF7
            k 喀 BFA6
            l 垃 C0AC
            m 媽 C2E8
            n 拿 C4C3
            o 哦 C5B6
            p 啪 C5BE
            q 期 C6DA
            r 然 C8BB
            s 撒 C8F6
            t 塌 CBFA
            w 挖 CDDA
            x 昔 CEF4
            y 壓 D1B9
            z 匝 D4D1


            【輸入、輸出格式要求】

                用戶先輸入一個(gè)整數(shù)n (n<100),表示接下來(lái)將有n行文本。接著輸入n行中文串(每個(gè)串不超過(guò)50個(gè)漢字)。

                程序則輸出n行,每行內(nèi)容為用戶輸入的對(duì)應(yīng)行的漢字的拼音首字母。

                字母間不留空格,全部使用大寫字母。

                例如:
                用戶輸入:
            3
            大家愛科學(xué)
            北京天安門廣場(chǎng)
            軟件大賽

                則程序輸出:
            DJAKX
            BJTAMGC
            RJDS

             


            結(jié)題思路:
            C語(yǔ)言中的一個(gè)漢字占兩個(gè)字節(jié)(兩個(gè)char),我們只需把這兩個(gè)字節(jié)對(duì)應(yīng)的int型數(shù)字算出來(lái),然后到編碼表里去比較即可。計(jì)算該數(shù)字時(shí)要用到移位,與,或等位運(yùn)算操作。
            代碼如下:
            #include<stdio.h>
            #include
            <string.h>
            int N;
            char str[200];
            void pro(){
                
                
            for(int i = 0; i < strlen(str) - 1; )
                
            {
                    
            char c0 = str[i++];
                    
            char c1 = str[i++];
                    
            int t = (int)c0 << 8;//得到高八位 
                    
                    t 
            = t | (0x000000ff & (int)c1);//得到低八位 
                    t &= 0x0000ffff;//去掉負(fù)號(hào) 
                    
                    
            if(t >= 0xB0A1 && t < 0xB0C5){
                        printf(
            "A");    
                    }

                    
            else if(t < 0xB2C1)
                        printf(
            "B");
                    
            else if(t < 0xB4EE)
                        printf(
            "C");
                    
            else if(t < 0xB6EA)
                        printf(
            "D");
                    
            else if(t < 0xB7A2)
                        printf(
            "E");
                    
            else if(t < 0xB8C1)
                        printf(
            "F");
                    
            else if(t < 0xB9FE)
                        printf(
            "G");
                    
            else if(t < 0xBBF7)
                        printf(
            "H");
                    
            else if(t < 0xBFA6)
                        printf(
            "J");
                    
            else if(t < 0xC0AC)
                        printf(
            "K");
                    
            else if(t < 0xC2E8)
                        printf(
            "L");
                    
            else if(t < 0xC4C3)
                        printf(
            "M");
                    
            else if(t < 0xC5B6)
                        printf(
            "N");
                    
            else if(t < 0xC5BE)
                        printf(
            "O");
                    
            else if(t < 0xC6DA)
                        printf(
            "P");
                    
            else if(t < 0xC8BB)
                        printf(
            "Q");
                    
            else if(t < 0xC8F6)
                        printf(
            "R");
                    
            else if(t < 0xCBFA)
                        printf(
            "S");
                    
            else if(t < 0xCDDA)
                        printf(
            "T");
                    
            else if(t < 0xCEF4)
                        printf(
            "W");
                    
            else if(t < 0xD1B9)
                        printf(
            "X");
                    
            else if(t < 0xD4D1)
                        printf(
            "Y");
                    
            else 
                        printf(
            "Z");
                        
                }

                printf(
            "\n");
                    
            }


            int main()
            {    
                scanf(
            "%d"&N);
                getchar();
                
            for(int i = 0; i < N; i++)
                
            {
                    gets(str);
                    pro();
                }

                
                
            //getchar();
            }




            posted on 2013-07-09 11:04 小鼠標(biāo) 閱讀(1226) 評(píng)論(0)  編輯 收藏 引用 所屬分類: C語(yǔ)言
            <2012年2月>
            2930311234
            567891011
            12131415161718
            19202122232425
            26272829123
            45678910

            常用鏈接

            隨筆分類(111)

            隨筆檔案(127)

            friends

            最新評(píng)論

            閱讀排行榜

            婷婷伊人久久大香线蕉AV | 日本久久中文字幕| 久久99精品国产99久久6| 久久99久国产麻精品66| 欧美精品久久久久久久自慰| 狠狠色丁香久久婷婷综| 亚洲国产成人精品91久久久| 国产精品欧美久久久天天影视| 精品久久久久中文字幕一区| 三级三级久久三级久久| 狠狠色噜噜狠狠狠狠狠色综合久久| 中文字幕精品久久久久人妻| 久久亚洲精品国产精品| 久久免费99精品国产自在现线 | 国产精品视频久久久| 久久青青国产| 97超级碰碰碰碰久久久久| 国产成人精品三上悠亚久久| 午夜不卡888久久| 久久久久人妻一区精品色 | 色综合久久久久综合体桃花网| 国内精品久久久久久中文字幕| 久久亚洲精精品中文字幕| 久久久久国色AV免费看图片| 狠狠色丁香婷综合久久| 久久91精品久久91综合| 久久亚洲AV成人出白浆无码国产| 久久强奷乱码老熟女网站| 老司机午夜网站国内精品久久久久久久久 | 国内精品伊人久久久久av一坑| 久久久无码精品亚洲日韩京东传媒 | 亚洲国产成人精品久久久国产成人一区二区三区综 | 国产免费福利体检区久久| 久久中文骚妇内射| 人人狠狠综合久久88成人| 人妻精品久久久久中文字幕69 | 亚洲国产小视频精品久久久三级 | 久久久无码精品亚洲日韩按摩| 久久无码人妻一区二区三区 | 国产精品久久久久久久久久免费| 97久久香蕉国产线看观看|