IT情報@PRO人

C言語 練習問題 16


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)

 

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

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

 

問題

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

 

プログラム(test16.c)

#include <stdio.h>
#include "myStruct.h"

int main(void){
  Student_t* student = (Student_t*)malloc(sizeof(Student_t));
  printf("Hello World!\n");
  student->age = 20;
  printf("%d", student->age);
  free(student);
  return 0;
}

プログラム(myStruct.h)

typedef struct Student{
  char name[16];
  int age;
}Student_t;

 

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

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

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

gcc -o test16.exe test16.c -O3

 

選択肢A,B,C

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

B.(空欄1)ためコンパイルエラー

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

 

 

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

 test16

 

選択肢A,B,C

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

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

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

解答

問1

B.( stdlib.hをincludeしていない )ためコンパイルエラー

※該当内容が指摘できていれば正解とする。解説参照。

 

問2

B.( test16.exe )というファイルがないため実行できない

 

解説

問1,問2

今回は構造体を利用しており、構造体の定義はヘッダファイルに記述している。

構造体を利用するにはmalloc関数でメモリを確保している。malloc関数で確保した領域は使い終わったらfree関数で開放する必要がある。

malloc関数やfree関数はstdlib.hに定義されているため、stdlib.hを取り込んでいないとこれらの関数を使用する部分でコンパイルエラーが発生する。そのことが指摘できていれば正解。

なお、今回のソースコードは次のようにすればコンパイル、実行が可能になる。myStruct.hは問題文と同様。

#include <stdio.h>
#include <stdlib.h>
#include "myStruct.h"

int main(void){
  Student_t* student = (Student_t*)malloc(sizeof(Student_t));
  printf("Hello World!\n");
  student->age = 20;
  printf("%d", student->age);
  free(student);
  return 0;
}

結果は以下の通り。

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

PAGE TOP