C言語練習問題
C言語練習問題
環境について
C言語の練習問題です。
開発環境は以下の通り。
PC:MacBook Pro 2011early 15inch
OS:Windows 8.1(デュアルブート)
メモリ:16GB(8GB x 2)
CPU:Core i7-2635QM 2.00GHz
コンパイラ:MinGW-w64 5.3.0 (posix, sjlj)
※問題文に書いてあるプログラムを実行する際は自己責任で実行してください。
問題
次のプログラムを作った。コンパイル、実行に関して以下の問いに答えよ。
プログラム(test08.c)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | #include<stdio.h> #include<stdbool.h> int main( void ){ int a = 1; int b = 0; if (a == b){ printf ( "0" ); } if (a){ printf ( "1" ); } if (a = 1){ printf ( "2" ); } if (a == 1){ printf ( "3" ); } if (b){ printf ( "4" ); } if (b = 1){ printf ( "5" ); } if (b == 1){ printf ( "6" ); } if ( true ){ printf ( "7" ); } if (1){ printf ( "8" ); } if (!1){ printf ( "9" ); } return 0; } |
問1.次のコマンドをコマンドプロンプトから打ち込んだ。どのような結果になるか。
A,B,Cの選択肢から適切なものを選べ。また、選んだ選択肢の中の空欄を埋めよ。
なお、コマンドを入力する前はディレクトリ内のファイルはtest08.cのみであった。
1 | gcc test08.c -o test08.exe -O3 |
選択肢A,B,C
A.コンパイル成功して(空欄1)が生成される
B.(空欄1)の部分でコンパイルエラー
C.コマンドの(空欄1)の部分が間違っているためコンパイルに失敗する
問2.その後、次のコマンドをコマンドプロンプトから打ち込んだ。どのような結果になるか。 A,B,Cの選択肢から適切なものを選べ。また、選んだ選択肢の空欄を埋めよ。
1 | test08 |
A.ファイルが実行され(空欄1)と画面に表示される。
B.(空欄1)というファイルがないため実行できない
C.コンパイルはされているが、実行ファイルに(空欄1)という問題があるため実行ができない
解答
問1
A.コンパイル成功して( test08.exe )が生成される
※linux環境などでは.exeではなく.aファイルになる。
問2
A.ファイルが実行され(1235678)と画面に表示される。
解説
問1,問2
今回はif文を使用している。前回と異なり、stdbool.hをインクルードしているためtrueは使用可能。
また、C言語では0以外はtrueとみなすのでa = 1といった代入式や、1やaなどの定数も値が0出なければtrueとなる。
!は0とそれ以外をひっくり返すので!1は0となる。よって、画面には1235678と表示される。
-O3は、最適化用のオプションで、このプログラムでは動作内容にほとんど影響がない。
※なお、C89準拠のプログラムを作成する場合はstdbool.hはインクルードできないので注意。
実践力が身につくC言語講座 連載リンク
競技プログラミングをイメージしたライブラリ活用講座
競技プログラミング風-標準Cライブラリ入門 連載
アルゴリズムをマスターして技術力アップ!
実践アルゴリズム講座 連載
パズルゲームの解析をテーマにしたC++講座
ゲーム解析プログラミング 連載