K&R

演習 4-13

C K&R

無職の間にK&Rを再読。演習問題の解答をさらす。解く順番は適当。 演習 4-13 文字列 s をその場所で逆順にする関数 reverse(s) の再帰版を書け。 Exercise 4-13 Write a recursive version of the function reverse(s), which reverses the string s in plac…

演習 4-12

C K&R

無職の間にK&Rを再読。演習問題の解答をさらす。解く順番は適当。 演習4-12 printd のアイデアを使って itoa の再帰版を書け。すなわち、再帰ルーチンを呼ぶことによって整数を文字列に変換せよ。 Exercise 4-12 Adapt the ideas of printd to write a recur…

演習 4-2

C K&R

無職の間にK&Rを再読。演習問題の解答をさらす。解く順番は適当。 演習 4-2 atof を拡張して、次のような科学記法を扱えるようにせよ。 123.45e-6 ここで、浮動小数点数のうしろには、e や E と符号の付きうる指数部が続いてもよいとする。 Exercise 4-2 Ext…

演習 4-1

C K&R

無職の間にK&Rを再読。演習問題の解答をさらす。解く順番は適当。 演習 4-1 s における t の最も右側の出現位置を返す関数 strrindex(s, t) を書け。 Exercise 4-1 Write the function strrindex(s, t), which returns the position of the rightmost occurr…

演習 4-14

C K&R

無職の間にK&Rを再読。演習問題の解答をさらす。解く順番は適当。 演習 4-14 型 t の二つの引数を交換するマクロ swap(t, x, y) を定義せよ。(ブロック構造を使うとよい。) Exercise 4-14 Define a macro swap(t, x, y) that interchanges two arguments o…

演習 3-6

C K&R

無職の間にK&Rを再読。演習問題の解答をさらす。解く順番は適当。 演習 3-6 二つでなく三つの引数を受け付ける形の itoa プログラムを書け。第3番目の引数は最小のフィールド幅を指定するものである。幅を確保するために必要なら変換された数には左にブラン…

演習 3-5

C K&R

無職の間にK&Rを再読。演習問題の解答をさらす。解く順番は適当。 演習 3-5 符号なし整数 n を b進文字表現に変換し、s に格納する(itoa と同様な)関数 itob(n, s, b) を書け。とくに itob(n, s, 16) は n を s 中の16進文字に変換する。 Excersize 3-5 Wr…

演習 2-10

C K&R

無職の間にK&Rを再読。演習問題の解答をさらす。解く順番は適当。 演習 2-10 if-else の代わりに条件式を使って、大文字を小文字に変換する関数 lower を書き直せ。 Exercise 2-10 Rewrite the function lower, which converts upper case letters to lower …

演習 3-4

C K&R

無職の間にK&Rを再読。演習問題の解答をさらす。解く順番は適当。 演習 3-4 2の補数表現においては、われわれの itoa プログラムでは、最大の負の数、すなわち -(2wordsize-1) に等しい n の値が処理できない。なぜダメか説明せよ。また、計算機のいかんに…

演習 3-3

C K&R

無職の間にK&Rを再読。演習問題の解答をさらす。解く順番は適当。 演習 3-3 文字列 s1 中の a-z のような省略記号を、それと等価な完全リスト abc......xyz にして s2 中に展開する関数 expand(s1, s2) を書け。大文字、小文字、数字を許し、a-b-c や a-z0-9…

演習 3-2

C K&R

無職の間にK&Rを再読。演習問題の解答をさらす。解く順番は適当。 演習 3-2 改行文字やタブのような文字を目で見えるエスケープ文字 \n や \t に変換しながら、s を t にコピーするような関数 escape(s, t) を書け。switch を使うこと。逆に、エスケープ系列…

演習 2-5

C K&R

無職の間にK&Rを再読。演習問題の解答をさらす。解く順番は適当。 演習 2-5 文字列 s2 の任意の文字と等しい文字列 s1 の最初の文字位置を返す関数 any(s1, s2) を書け。ただし、一致する文字がなければ -1 を返す。(標準ライブラリ関数 strpbrk は同じ働き…

演習 2-4

C K&R

無職の間にK&Rを再読。演習問題の解答をさらす。解く順番は適当。 演習 2-4 文字列 s2 中の任意の文字に等しい文字を s1 から除去するような形の squeeze(s1, s2) を書け。 Exercise 2-4 Write an alternste version of squeeze(s1, s2) that deletes each c…

演習 2-3

C K&R

無職の間にK&Rを再読。演習問題の解答をさらす。解く順番は適当。 演習 2-3 16進数の文字列( 0x あるいは 0X が付いているものも含めて)をそれと同値な整数値へ変換する関数 htoi(s) を書け。許される文字は 0 から 9 と a から f および A から F である。 …

演習 2-9

C K&R

無職の間にK&Rを再読。演習問題の解答をさらす。解く順番は適当。 演習 2-9 2の補数システムでは、x = x & (x - 1) により、x の最も右の1ビットが消える。なぜか説明せよ。この事実を使って、もっと速い bitcount プログラムを書け。 Exercise 2-9 In a t…

演習 2-8

C K&R

無職の間にK&Rを再読。演習問題の解答をさらす。解く順番は適当。 演習 2-8 整数 x の値を右に n ビット回転する関数 rightrot(x, n)を書け Exercise 2-8 Write a function rightrot(x, n) that returns the value of the integer x rotated to the right by…

演習 2-7

C K&R

無職の間にK&Rを再読。演習問題の解答をさらす。解く順番は適当。 演習 2-7 x のビット位置 p から n ビットを反転(1 を 0 、 0 を 1 にする)し、他のビットはそのままにした x を返す関数 invert(x, p, n) を書け。 Exercise 2-7 Write a function invert…

演習 2-6

C K&R

無職の間にK&Rを再読。演習問題の解答をさらす。解く順番は適当。 演習 2-6 位置 p から始まる n ビットを y の右端の n ビットにセットし、他のビットはそのままにした x を返す関数 setbits(x, p, n, y) を書け Exercise 2-6 Write a function setbits(x, …