• <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无码久久精品色欲| 久久黄色视频| 久久精品国产亚洲AV不卡| 久久99精品久久只有精品 | 久久精品aⅴ无码中文字字幕不卡| 久久无码AV一区二区三区| 久久精品中文无码资源站| 国产呻吟久久久久久久92| 国产精品99久久久精品无码| 精品久久久久久无码中文字幕| 综合久久国产九一剧情麻豆| 久久九九亚洲精品| 久久久久久久精品成人热色戒| 99久久国产亚洲高清观看2024| 日产精品久久久久久久| 观看 国产综合久久久久鬼色 欧美 亚洲 一区二区| 色8激情欧美成人久久综合电| 久久九九有精品国产23百花影院| 中文字幕无码精品亚洲资源网久久 | 国产精品免费久久久久久久久 | 久久久九九有精品国产| 国产亚洲精久久久久久无码77777| 国产福利电影一区二区三区久久老子无码午夜伦不 | 精品久久久久久| 天天爽天天狠久久久综合麻豆| 久久亚洲国产成人影院网站| 99re久久精品国产首页2020| 国内精品九九久久精品| 2019久久久高清456| 久久久久女教师免费一区| 国产精品欧美亚洲韩国日本久久| 丰满少妇人妻久久久久久| 色狠狠久久AV五月综合| 97精品伊人久久久大香线蕉 | 久久毛片免费看一区二区三区| 午夜不卡888久久| 精品久久国产一区二区三区香蕉| 久久国产乱子精品免费女| 69久久夜色精品国产69| 99久久免费国产精品热|