Tips

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)

 

※問題文に書いてあるプログラムを実行する際は自己責任で実行してください。

※※各問題へのリンク一覧を作成しました。

問題

次のプログラムを作った。コンパイル、実行に関して以下の問いに答えよ。

 

プログラム(test49.c)

#include <stdio.h>
int main(void){
  printf("Hello World!nr");
  return 0;
}

 

makeファイル(makefile)

※ブログ上では表記の都合で半角スペースでタブの代用を行うが、Makefile内ではスペースやタブの挿入、改行は適切に行われているものとし、その点はエラーの原因にならないものとする。

# Makefile
all: main

main: test49.o
    gcc -o test49 test49.o -std=c99

test49.o: test49.c
    gcc -c test49.c -std=c99

clean:
    rm test49.o

 

問1.次のコマンドをコマンドプロンプトから打ち込んだ。どのような結果になるか。

A,B,Cの選択肢から適切なものを選べ。また、選んだ選択肢の中の空欄を埋めよ。

なお、コマンドを入力する前はディレクトリ内には3つのファイル(test49.c、Makefile、clean)があり、それ以外のファイルはなかった。また、今回の環境ではmakeコマンドの代わりにmingw32-makeコマンドを用いる。

mingw32-make
mingw32-make clean

選択肢A,B,C

A.2つのmakeがきちんと実行され最終的に( 空欄1 )が生成される。

B.( 空欄1 )ためmakeは2つとも実行されない。

C.打ち込んだコマンドのうち、( 空欄1 )行目のmakeだけ実行されない。

 

 

問2.その後、次のコマンドをコマンドプロンプトから打ち込んだ。どのような結果になるか。 A,B,Cの選択肢から適切なものを選べ。また、選んだ選択肢の空欄を埋めよ。

 test49

 

選択肢A,B,C

A.ファイルが実行され( 空欄1 )と画面に表示される。

B.( 空欄1 )というファイルがないため実行できない。

C.コンパイルはされているが、( 空欄1 )という問題があるため実行は危険である。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

解答

問1

C.打ち込んだコマンドのうち、( 2 )行目のmakeだけ実行されない。

 

問2

A.ファイルが実行され( Hello World! )と画面に表示される。

 

解説
問1,問2

今回はmakeを利用している。makefileという名前のファイルにコンパイル時の依存関係などを記して置くと、記された内容に従ってコンパイルが行われる。

今回はmakefileの内容に問題はない。1行目のmakeは成功して無事test49.exeが生成される。test49.exeを実行すると画面にはHello World!が表示される。

しかし、cleanという名前のファイルが存在するため、うまく実行されない。実行後に以下のような表示が出る。

mingw32-make: 'clean' is up to date.

 

今回はmakefileを以下の用に直せば、cleanという名前のファイルがいても2行目のmakeを実行できる。

cleanの行の前に.PHONY: cleanを付け加えている。

makefile(makefile2) ※利用する前にファイル名をmakefileに直すこと。

# Makefile
all: main

main: test49.o
    gcc -o test49 test49.o -std=c99

test49.o: test49.c
    gcc -c test49.c -std=c99

.PHONY: clean
clean:
    rm test49.o

実行例

>mingw32-make clean
rm test49.o

 

なお、通常はmakeコマンドでmakeが実行されるが、前述のとおり今回の環境ではmingw32-makeコマンドでmakeを実行する。そのため、コマンドに問題はない。なお、makeはc言語以外の言語にも利用できるものがある。

今回の場合

makeファイルは適切に使用すればコンパイル作業が楽になる。記述方法に注意し、上手に利用すること。

 

 

他の問題へのリンク一覧はこちら

 

実践力が身につくC言語講座 連載リンク

競技プログラミングをイメージしたライブラリ活用講座
競技プログラミング風-標準Cライブラリ入門 連載

アルゴリズムをマスターして技術力アップ!
実践アルゴリズム講座 連載

パズルゲームの解析をテーマにしたC++講座
ゲーム解析プログラミング 連載

Recent News

Recent Tips

Tag Search