C言語練習問題
C言語練習問題
環境について
C言語の練習問題です。
開発環境は以下の通り。コンパイラ、OSともに64bit環境である。
PC:MacBook Pro 2011early 15inch
OS:Windows 8.1(デュアルブート) 64bit版
メモリ:16GB(8GB x 2)
CPU:Core i7-2635QM 2.00GHz
コンパイラ:MinGW-w64 5.3.0 (posix, sjlj)
※問題文に書いてあるプログラムを実行する際は自己責任で実行してください。
※※各問題へのリンク一覧を作成しました。
問題
次のプログラムを作った。コンパイル、実行に関して以下の問いに答えよ。
プログラム(test39.c)
#include <stdio.h> int main(void){ //Hello World!! printf("Hello World!!"); return 0; }
問1.次のコマンドをコマンドプロンプトから打ち込んだ。どのような結果になるか。
A,B,Cの選択肢から適切なものを選べ。また、選んだ選択肢の中の空欄を埋めよ。
なお、コマンドを入力する前はディレクトリ内のファイルはtest39.cのみであった。
gcc test39.c -o test39.exe -std=c89
選択肢A,B,C
A.コンパイルに成功して( 空欄1 )が生成される。
B.( 空欄1 )ためコンパイルエラーが起こる。
C.コマンドの( 空欄1 )の部分が間違っているためコンパイルが実行されない。
問2.その後、次のコマンドをコマンドプロンプトから打ち込んだ。どのような結果になるか。 A,B,Cの選択肢から適切なものを選べ。また、選んだ選択肢の空欄を埋めよ。
test39
選択肢A,B,C
A.ファイルが実行され( 空欄1 )と画面に表示される。
B.( 空欄1 )というファイルがないため実行できない。
C.コンパイルはされているが、( 空欄1 )という問題があるため実行は危険である。
解答
問1
B.( C89では//によるコメントアウトは仕様にない )ためコンパイルエラーが起こる。
※該当内容が指摘できていれば正解とする。解説参照。
問2
B.( test39.exe )というファイルがないため実行できない。
解説
問1,問2
今回はHello World!!と表示するプログラムになっている。
一見すると全く問題ないように見えるが、//を利用した単一行のコメントアウトが規定されたのはC99であり、C89では規定されていない。
そのため、4行目のコメントアウトの部分でコンパイルエラーとなる。
今回のプログラムをコンパイル・実行したければ、例えばコンパイル時に-std=c99オプションを使用してC99準拠でコンパイル・実行する、などの方法を用いればよい。
プログラムは問題と同一のものを使用。
実行結果
>gcc test39.c -o test39.exe -std=c99 >test39 Hello World!!
実践力が身につくC言語講座 連載リンク
競技プログラミングをイメージしたライブラリ活用講座
競技プログラミング風-標準Cライブラリ入門 連載
アルゴリズムをマスターして技術力アップ!
実践アルゴリズム講座 連載
パズルゲームの解析をテーマにしたC++講座
ゲーム解析プログラミング 連載