IT情報@PRO人

C言語 練習問題 13

この記事は2016年8月11日に書かれたものです。内容が古い可能性がありますのでご注意ください。


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)

 

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

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

 

問題

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

プログラム(test13.c)

int display(void);
int main(void){
  display();
  return 0;
}

プログラム(func.c)

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

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

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

なお、コマンドを入力する前はディレクトリ内のファイルはtest13.cとfunc.cのみであった。

gcc test13.c func.c -o test13.exe -O3 -std=c89

選択肢A,B,C

A.コンパイル成功して(空欄1)が生成される

B.(空欄1)の部分でコンパイルエラー

C.コマンドの(空欄1)の部分が間違っているためコンパイルが実行されない

 

 

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

 test13

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

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

C.コンパイルはされているが、実行ファイルに(空欄1)という問題があるため実行ができない

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

解答

問1

A.コンパイル成功して( test13.exe )が生成される

※linux環境などでは.exeではなく.aファイルになる。

 

問2

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

 

解説

問1,問2

今回はファイルを分割している。gccする際に両方のファイルを取り込んでいる。test13.cの方では、プロトタイプ宣言を行っている。

C言語では関数は使用される前に定義されていなければいけないが、今回test13.cのファイル内にはdisplay()関数の定義が無い。そのため、プロトタイプ宣言を書いておかなければならない。書かなかった場合、警告が出たり、コンパイルに失敗する。

 

test13.exeを実行するとmain()関数が実行される。その中でdisplay()関数を呼び出しているため、func.cのdisplay()関数が実行され、標準出力にHello World!と表示される。

 

-O3は、最適化用のオプションで、このプログラムでは動作内容にほとんど影響がない。

-stdオプションはコンパイラの準拠するC言語の規格を指定する。今回はc89準拠になるようにしている。他にもgnu99やc11などを指定することができる。(各規格ごとの内容は省略)

  • このエントリーをはてなブックマークに追加

PAGE TOP