基本情報技術者試験 C言語の切り札

サポートページ

この記事を読むのに必要な時間:およそ 0.5 分

お詫びと訂正(正誤表)

本書の掲載内容に下記の誤りがございました。読者の皆様、および関係者の方々にご迷惑をおかけしましたことを深くお詫び申し上げます。

第2刷修正箇所 (2008.6.20)

P.77 リスト11.2 10行目
printf(" aを右に2ビットシフトすると %#x です。\n",r_seki);
printf(" fを右に2ビットシフトすると %#x です。\n",r_shift);

P.77 実行例 2行目
aを右に2ビットシフトすると 0x3f です。
fを右に2ビットシフトすると 0x3f です。

P.162 29行目の解説
29行目の解説(4行分)を全て
この行は,変数primeが"TRUE(=1)"ではなく,変数numが1より大きくない場合に実行されます。言い換えれば,変数primeが"FALSE(=0)"で,変数numが1の場合ですね。
変数numは、14行目や22行目にある空欄aの"num /= factor"の計算をした時に値が変化するので、この計算の時にnumの値が1になる必要があります。14行目ではfactorの値は2、22行目ではfactorの値が3であることを考えれば、"8"や"18"を入力した場合が該当します。言い換えれば、「2の累乗となる数字」や「2とそれ以外に最大素因数が2つ以上ある数字」が該当しますので、時間がある時にでも試してみてくださいね。
最後に、print文は"\n"なので,画面上で改行されて終了となります。

第1刷修正箇所

P.77 リスト11.2
r_seki = a & b;
r_seki = a & f;

P.77 リスト11.2 10行目
printf(" aを右に2ビットシフトすると %#x です。\n",r_seki);
printf(" fを右に2ビットシフトすると %#x です。\n",r_shift);

P.77 実行例 2行目
aを右に2ビットシフトすると 0x3f です。
fを右に2ビットシフトすると 0x3f です。

P.97 行番号18
18: change -= output[k] * money[k];
17: change -= output[k] * money[k];

P.98 行番号34

上から4行目の「内容」

34: return retval;
35: return retval;

P.140 プログラム15行目
if( d == ALIVE)printf( "*");
if( b == ALIVE)printf( "*");

P.147 図P6.8
||:論理積(または)
||:論理(または)

P.197 下から4行目
sprtは平方根
sqrtは平方根

P.223 下から2行目
h == py ? ps + 1 : sx
h == py ? px + 1 : sx

P.224 2行目
w = (h == py ? ps + 1 : sx)
w = (h == py ? px + 1 : sx)

P.224 一番下の行
h == py ならば w = ps + 1
h == py ならば w = px + 1

P.258 最後の行より
ポインタ変数cpにはアドレスが入っており,cp+1ではアド レスの値そのものに1を加算してしまうため,正しい場所を示すことができません(参考を参照)
ここでcp+1としてしまうと,for文の再設定式の処理でcp +1の計算は行われますが,この計算結果はどこにも保存されません。もし,選択肢がcp=cp+1であればcp+1の値がcpに代 入され,式が成立します。

P.259 「参考」

誤りがあるため削除してください


P.260 26行目
変数leg
変数len

P.261 図15.7

P.265 図P15.12の57行目
fputs( "\", fp ) ;
fputs( "\"",fp ) ;

P.265 図P15.12の59行目
fputs( "\" , fp ) ;
fputs( "\"" , fp ) ;

P.266 図P15.13
この要素でbreak文を抜ける
この要素でbreak文を実行し、for文を抜ける