Perlがくしゅう帳(Rubyも)

プログラミングの勉強会の参加記録や学んだことなど。 twitter ID : @tomcha_で活動しています。 最近は主にPerl関連の勉強会やコミュニティに参加しています。移転前のブログはこちら->http://ruby.doorblog.jp/

プログラミング言語C K&R著の演習問題を解答していく その5

C言語のバイブルと言われる、K&Rの「プログラミング言語C」を第一章から読み進めて演習問題を記録していく。

プログラミング言語C 第2版 ANSI規格準拠

プログラミング言語C 第2版 ANSI規格準拠

第2章

  • 2-1 問題文の意味がよくわからないのでパス。

  • 2-2 1行の文字列を取得するfor文を、論理演算子を用いて書く。

  • 2-3 16進数文字列を整数値に変換するコード。

  • 2-4 文字列s1から、s2に含まれる文字を削除するコード。

  • 2-5 文字列s1の中から、文字列s1がマッチした位置を返す。含まれていなかったら、-1を返す。

  • 2-6 ビット(2進数の値)の一部を取得して入れ替える関数。

  • 2-7 ビットの一部をビット反転する関数。

  • 2-8 ビットの回転させる関数。回転とは右にシフトで押し出された値が左からシフトされる様子。

  • 2-9 ビットの中の'1'の個数を数える関数。

最初、意味がさっぱり分からなくて解説をググって「x & (x - 1)の挙動」を目の当たりにして感動。 コードのアルゴリズムで感激したのは、フィボナッチ数を再帰で取得するコード以来。

  • 2-10 大文字を小文字に変換するプログラム。if-else文を使わずに、? : 式を使って書く。

少しずつ進めて第2章が終了。 ビット演算のコードが面白かったのだけれど、実際には何処で活用すれば良いのだろうか。