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)
※問題文に書いてあるプログラムを実行する際は自己責任で実行してください。
問題
次のプログラムを作ってコンパイル、実行したところ、図のように表示された。
プログラム(test06.c)
#include<stdio.h> int main(void){ int i = 0; int j = 0; for(i = 1; i <= 9; i++){ for(j = 1; j <= 9; j++){ printf("%3d", i * j); } printf("\n"); } return 0; }
実行結果の図
その後、次のプログラムを作った。コンパイル、実行に関して以下の問いに答えよ。
プログラム(test06_2.c)
#include<stdio.h> int main(void){ int i = 0; int j = 0; label: for(i = 0; i <= 90; i+=10){ for(j = 1; j <= 9; j++){ printf("%3d", (i + j)); if((i + j) == 77){ break label; } } printf("\n"); } return 0; }
問1.次のコマンドをコマンドプロンプトから打ち込んだ。どのような結果になるか。
A,B,Cの選択肢から適切なものを選べ。また、選んだ選択肢の中の空欄を埋めよ。
なお、コマンドを入力する前はディレクトリ内のファイルはtest06_2.cのみであった。
gcc test06_2.c -o test06_2.exe
選択肢A,B,C
A.コンパイル成功して(空欄1)が生成される
B.(空欄1)行目でコンパイルエラー
C.コマンドの(空欄1)の部分が間違っているためコンパイルに失敗する
問2.その後、次のコマンドをコマンドプロンプトから打ち込んだ。どのような結果になるか。 A,B,Cの選択肢から適切なものを選べ。また、選んだ選択肢の空欄を埋めよ。
test06_2
A.ファイルが実行され(空欄1)までの数字が画面に表示される。
B.(空欄1)というファイルがないため実行できない
C.コンパイルはされているが、実行ファイルに(空欄1)という問題があるため実行ができない
解答
問1
B.(9)行目でコンパイルエラー
問2
B.(test06_2.exe)というファイルがないため実行できない
※実行ファイルができていないことが指摘されていれば正解とする。
解説
問1,問2
今回はラベルを使用しようとしている。しかし、c言語でラベルが使用できるのはgoto文と組み合わせたときのみで、javaのようにbreakやcontinueをラベルに対して使用することはできない。ラベルは、goto文で使用するためラベルを使用している5行目でエラーは起こらないが、breakと組み合わせている9行目でコンパイルエラーが出る。
※なお、goto文は多用するとプログラムの流れが良く分からなくなることがある。基本的には使用しないこと。
実践力が身につくC言語講座 連載リンク
競技プログラミングをイメージしたライブラリ活用講座
競技プログラミング風-標準Cライブラリ入門 連載
アルゴリズムをマスターして技術力アップ!
実践アルゴリズム講座 連載
パズルゲームの解析をテーマにしたC++講座
ゲーム解析プログラミング 連載