ブルーブリッジカップ「ピンイン文字」


【プログラミング問題】(19点満点)
      ,                     。  ,        ,  : “bj”      “  ”。                ?       :                  。

GB2312       ,     3755           。          ,           。

GB2312                 。        ,            。       ASCII    (     ),         0xA1  。

        a,b,c,...x,y,z         GB2312        ,                  (         )。            。          ,            。

a啊B 0 A 1 b芭B 0 C 5 c擦B 2 C 1 d搭B 4 EE e蛾B 6 EA f发B 7 A 2 g噶B 8 C 1 h哈B 9 FE j打BBF 7 k喀BFA w挖CDDA x昔CEF 4 y压D 1 B 9 z匝D 4 D 1
【入力・出力フォーマット要件】
         n (n<100),       n   。    n    (      50   )。

     n ,                      。

       ,        。

  :
    :

3大家愛科学北京天安門広場ソフトウェア大会

DJAKX BJTAMGC RJDS
【注意】
     !                       !

                            。

              ,    ,   【     】      “  .txt”   。

           。

            、Win32API、    、             API。

    STL  ,     MFC ATL  ANSI c++     。

  ,    CString  (  MFC  ),    randomize, random  (   ANSI C++  )

分析:この問題は一見難しい感じがしますが、よく読むと簡単です.入力した文字列を漢字ごとに分けて、アルファベットの最初の漢字と比較すれば、あるアルファベットの最初の漢字がそれより大きい場合、そのアルファベットの前のアルファベットは漢字に対応する最初のアルファベットです.
# include  
#include
char pinyin[24][3]={" "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "}; 
char zimu[24]={'A','B','C','D','E','F','G','H','J','K','L','M','N','O','P','Q','R','S','T','W','X','Y','Z'};
char p[101][101];
char temp[3];
void search()
{
    for(int i=0;i<24;i++)
    {
        if(strcmp(pinyin[i],temp)==1)
        {
            printf("%c",zimu[i-1]);
            break;
        }

    }
    if(i==24)
        printf("Z");

}
void main()  
{  
    int n,k=0;
    scanf("%d",&n);
    for(int i=0;iscanf("%s",p[i]);
    }
    while(kfor(int j=0;j<101;j+=2)
        {

            temp[0]=p[k][j];
            temp[1]=p[k][j+1];
            search();

        }
        printf("
"
); k++; } }

【注】漢字1文字あたり2バイトを占有し、Zで始まる漢字特殊処理