アルゴリズムコンテスト(a)は、言語の論文の配列と文字列2を取得

選挙戦のタイトルについて第三に、話

例3-2  WERTYU

キーボードの上に手を置くときは、少し注意が右間違っているでしょう。従って、Qの入力は、入力Wになり、Kの入力は、入力J等となります。(すべて大文字で)オフセットノックアウト文字列を入力した後、タイピストは、出力文をプレイしたいと思います。脱臼後の文字列でなければなりません法的な保証を、入力します。例えば、入力は大文字A.には表示されません。

 

サンプル入力:
OS、GOMR YPFSU /
サンプル出力:
私は元気ですTODAY

 

私の考え:このタイピストはすぐに逃げる子牛ロール

実施例3-1によれば、利用することができるGETCHAR()は、入力側、出力側。しかし、問題は右に戻って変更する方法で立ち往生?両方の面倒を切り替える場合、または

 

ブックのアイデア:定数配列を使用

する#include <stdio.hの>
  CHAR S [] = " ` 1234567890- QWERTYUIOP = [] \\ ASDFGHJKL;「ZXCVBNM、/。" ;
  int型のmain(){
     int型I、Cと、
     一方((C = GETCHAR()) != EOF)
    { 
        ための(I = 1、S [I] && S [I] = C ;! I ++); // の定数テーブル内の任意の位置を見た後文字
        IF (S [I])
                のputchar(S [I - 1。 ]); // 見つかった場合、それは前の文字を出力する
        
            のputchar(C); 
    } 
    戻り 0 ; 
 }

 #定数配列のサイズを指定する必要はありません、コンパイラは計算を完了することができます

 

 例3-3 パリンドローム単語

文字列を入力し、文字列がそれはパリンドローム配列、およびミラーであるか否かを判断します。数字0入力文字列を確認してください。いわゆる回文配列、つまり、元の文字列と同じように、反転した後とアバのマダムなど。画像と元についてですすべてのミラー文字列、後

このよう2Sと3AIAE同じシリーズ、。すべての文字が鏡の後に法的な文字を取得することができないことに注意してください。この問題では、図3-3に示す文字画像の各(空白のエントリは、文字が正当な文字画像の後に得ることができないことを示します) 

 

(それだけ文字を確保する。空白を除く)の文字列を含む行ごとに、それがミラーパリンドローム文字列と文字列(4つの組み合わせ)か否かが判断されます。データの各セットの出力の後にブランク行。
サンプル入力:
NOTAPALINDROME
ISAPALINILAPASI
2A3MEAS
ATOYOTAの
サンプル出力:
。NOTAPALINDROMEは-回文ではありませんが
。ISAPALINILAPASI -定期的な回文IS
2A3MEASは-ミラーリングを使用すると、文字列である。
ATOYOTA -使用してミラーリング回文です。

 

分析:タイトルが空白文字を含まない参照は - 安全scanf関数で入力することができます

定配列は、上記の例を解決するために使用することができます

する#include <stdio.hに> 
する#include < 文字列・H> 
の#include <のctype.h>
 CONST  のchar * REV = " 3 HIL JM O 2TUVWXY51SE Z 8 " CONST  のchar *のMSG [] = { はないパリンドローム定期的なパリンドロームミラーリングされた文字列ミラーリングパリンドローム}。

チャー R(チャーCH){
       場合(はisalpha(CH))
         戻り REV [CH - [];
      戻り REV [CH - ' 0 ' + 25 ]。
} 
int型のmain(){
       CHAR S [ 30 ]。
      一方、(scanf関数(" %S "、S)== 1 ){
             int型 LEN = STRLEN(S)。
            INT P = 1、M = 1 以下のためにint型 i = 0 ; iは(LEN + < 1)/ 2、iは++ ){
                         もし!(S [I] = S [len-1 - I])
                        P = 0 ; // ないパリンドローム列
                        IF(R&LT(S [I])= S [lenを!1。 - I])
                            M = 0 ; // 文字列の鏡像ではない
                        } 
            のprintf(" %S - %S \ N- \ N-である。、S、MSG [M * 2 + P]); 

    } 
   戻り 0 ; 
}

カスタム関数チャーR(チャーCH)、CHパラメータは文字で、戻り値は、キャラクタCHの鏡像です。これは、ある一定のアレイ26は、各大文字は、デジタル画像10(番号0起こらない)1~9であるフロントミラーであり、アルファベットまたは数字CHを決定することが必要です

isalphaは、文字が文字であると判断し、同様のidigitがあります、などをisprintはのctype.hで定義されました。

、ASCIIコード表大文字ので、小文字と数字が連続しているchが大文字である場合、CH-'A「は(Aは数0であり、Bは数1で、アルファベットでそのシーケンス番号でありますなど);同様に、デジタルCH場合、CH-'0 '値自体は、この数がある(例えば、5' ' - ' 0「= 5)

定数配列MSGは、実際には、これは文字列の配列である、それは文字の二次元配列であります

 

 他のツールは、ケースを変更するために使用することができるtolowerをヘッダファイルのctype.hはisalphaで定義され#、isdigitは、文字の特性とすることができるのかを決定するために使用される他のツールをisprintは、しかしTOUPPER。chが大文字である場合、CH-'A「はアルファベットのシーケンス番号(Aは数0であり、Bは数1である、など)であり、CHは数であれば同様に、CH-」 0「の値自体はこの数です

[] = "ABC" をチャーとの間の差* A = "ABC" とCHAR

 例3-4 推測ゲームのヒント

 

A

おすすめ

転載: www.cnblogs.com/expedition/p/11485330.html