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)
※問題文に書いてあるプログラムをコンパイルや実行する際は自己責任で行ってください。
※※各問題へのリンク一覧を作成しました。
問題
次のプログラムを作った。コンパイル、実行に関して以下の問いに答えよ。
プログラム(test09.c)
#include<stdio.h>
int main(void){
char ch = 'c';
short int sh = 16;
int i = 32;
char str[32] = "Hello World!";
switch(ch){
case 'c':
printf("%c ", ch);
default:
printf(" ");
}
switch(sh){
case 16:
printf("%d ", sh);
default:
printf(" ");
}
switch(i){
case 32:
printf("%d ", i);
default:
printf(" ");
}
switch(str){
case "Hello World!":
printf("%s ", str);
default:
printf(" ");
}
return 0;
}
問1.次のコマンドをコマンドプロンプトから打ち込んだ。どのような結果になるか。
A,B,Cの選択肢から適切なものを選べ。また、選んだ選択肢の中の空欄を埋めよ。
なお、コマンドを入力する前はディレクトリ内のファイルはtest09.cのみであった。
gcc test09.c -o test09.exe -O3
選択肢A,B,C
A.コンパイル成功して(空欄1)が生成される
B.(空欄1)の部分でコンパイルエラー
C.コマンドの(空欄1)の部分が間違っているためコンパイルに失敗する
問2.その後、次のコマンドをコマンドプロンプトから打ち込んだ。どのような結果になるか。 A,B,Cの選択肢から適切なものを選べ。また、選んだ選択肢の空欄を埋めよ。
test09
A.ファイルが実行され(空欄1)と画面に表示される。
B.(空欄1)というファイルがないため実行できない
C.コンパイルはされているが、実行ファイルに(空欄1)という問題があるため実行ができない
解答
問1
B.( switch(str) { )の部分でコンパイルエラー
B.( case “Hello World!”: )の部分でコンパイルエラー
※該当箇所がどちらか一方でも指摘できていれば正解とする。
問2
B.(test09.exe)というファイルがないため実行できない
解説
問1,問2
今回はswitch文を使用している。javaでは、JDK 7 からString型をswitch文にかけることができるようになった。しかし、C言語では文字列※をそのままswitch文にかけることができない。よって、該当箇所でコンパイルエラーが起こる。どうしても文字列をswitch文にかけたい場合、strcmp()関数などを用いるなど、工夫が必要。
※C言語には文字列型というデータ型はないが、簡単のため文字列と表現した。厳密性を重視する場合はご自身で調べてください。
補足:javaでString型をswitch文にかける場合に、中身がnullの変数をswitch文にかけるとnull pointer exceptionを発生させてしまう。if-else-switchの形にするなど、nullのままswitch文にかけないように注意。
実践力が身につくC言語講座 連載リンク
競技プログラミングをイメージしたライブラリ活用講座
競技プログラミング風-標準Cライブラリ入門 連載
アルゴリズムをマスターして技術力アップ!
実践アルゴリズム講座 連載
パズルゲームの解析をテーマにしたC++講座
ゲーム解析プログラミング 連載