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)
※問題文に書いてあるプログラムを実行する際は自己責任で実行してください。
※※各問題へのリンク一覧を作成しました。
問題
次のプログラムを作った。コンパイル、実行に関して以下の問いに答えよ。
プログラム(test40.c)
#include <stdio.h> int main(void){ char directory[16] = "C:\\test\\"; //directory : C:\test\ char fileName[16] = "sample.txt"; //fileName : sample.txt printf("PATH : %s%s\n", directory, fileName); return 0; }
問1.次のコマンドをコマンドプロンプトから打ち込んだ。どのような結果になるか。
A,B,Cの選択肢から適切なものを選べ。また、選んだ選択肢の中の空欄を埋めよ。
なお、コマンドを入力する前はディレクトリ内のファイルはtest40.cのみであった。
gcc test40.c -o test40.exe -std=c99
選択肢A,B,C
A.コンパイルに成功して( 空欄1 )が生成される。
B.( 空欄1 )ためコンパイルエラーが起こる。
C.コマンドの( 空欄1 )の部分が間違っているためコンパイルが実行されない。
問2.その後、次のコマンドをコマンドプロンプトから打ち込んだ。どのような結果になるか。 A,B,Cの選択肢から適切なものを選べ。また、選んだ選択肢の空欄を埋めよ。
test40
選択肢A,B,C
A.ファイルが実行され( 空欄1 )と画面に表示される。
B.( 空欄1 )というファイルがないため実行できない。
C.コンパイルはされているが、( 空欄1 )という問題があるため実行は危険である。
解答
問1
B.( 5行目がコメントアウト扱いになっている )ためコンパイルエラーが起こる。
※該当内容が指摘できていれば正解とする。解説参照。
問2
B.( test40.exe )というファイルがないため実行できない。
解説
問1,問2
今回はディレクトリ名とファイル名に見立て、それを画面に表示するプログラムとなっている。
行末に\があると、処理が次の行に継続される。今回のプログラムをよく見ると、4行目の行末が\になっているため、コメントアウトが継続し5行目もコメントアウト扱いになる。
そのため、fileNameという変数が宣言されていないことになりコンパイルエラーが発生する。
正しく動かしたい場合、行末の\を削除すればよい。プログラムは以下の通り。
プログラム(test40_1.c)
#include <stdio.h> int main(void){ char directory[16] = "C:\\test\\"; //directory : C:\test char fileName[16] = "sample.txt"; //fileName : sample.txt printf("PATH : %s%s\n", directory, fileName); return 0; }
補足:4行目の行末から\を削除
実行結果
>gcc test40_1.c -o test40_1.exe -std=c99 >test40_1.exe PATH : C:\test\sample.txt
参考
檜山正幸のキマイラ飼育記 C/C++のとんだ落とし穴(ハマっちまったよ)
私の二次記憶 C 言語の「//」コメントは、バックスラッシュで継続行になる!
実践力が身につくC言語講座 連載リンク
競技プログラミングをイメージしたライブラリ活用講座
競技プログラミング風-標準Cライブラリ入門 連載
アルゴリズムをマスターして技術力アップ!
実践アルゴリズム講座 連載
パズルゲームの解析をテーマにしたC++講座
ゲーム解析プログラミング 連載