練習問題20
基本知識
問 1-1
宣言のみを記述するファイルをなんと呼ぶか。
問 1-2
実際のプログラムが記述されたファイルをなんと呼ぶか。
プログラム書取
問 2-1
#include <stdio.h>
#include <string.h>
typedef struct {
char name[256];
int age;
int sex;
} People;
void InputPeople(People* data)
{
printf("名前:");
scanf("%s", data->name);
printf("年齢:");
scanf("%d", &data->age);
printf("性別(1-男性、2-女性):");
scanf("%d", &data->sex);
printf("\n");
}
void ShowPeople(People data)
{
char sex[16];
printf("名前:%s\n", data.name);
printf("年齢:%d\n", data.age);
if (data.sex == 1) {
strcpy(sex, "男性");
} else {
strcpy(sex, "女性");
}
printf("性別:%s\n", sex);
printf("\n");
}
このプログラムをヘッダーファイルとソースファイルに分離してください。
記述式
問 3-1
すべての関数を1つのソースファイルに記述しても動作するのに、
わざわざ分割する理由を簡潔に述べよ。
わざわざ分割する理由を簡潔に述べよ。
基本知識(解答例)
解 1-1
ヘッダーファイル
解 1-2
ソースファイル
プログラム書取(解答例)
解 2-1 People.h
/* People.h */
#ifndef __PEOPLE_H__
#define __PEOPLE_H__
#include <stdio.h>
#include <string.h>
typedef struct {
char name[256];
int age;
int sex;
} People;
/* 個人データを入力する */
extern void InputPeople(People* data);
/* 個人データを表示する */
extern void ShowPeople(People data);
#endif
解 2-1 People.c
/* People.c */
#include "People.h"
void InputPeople(People* data)
{
printf("名前:");
scanf("%s", data->name);
printf("年齢:");
scanf("%d", &data->age);
printf("性別(1-男性、2-女性):");
scanf("%d", &data->sex);
printf("\n");
}
void ShowPeople(People data)
{
char sex[16];
printf("名前:%s\n", data.name);
printf("年齢:%d\n", data.age);
if (data.sex == 1) {
strcpy(sex, "男性");
} else {
strcpy(sex, "女性");
}
printf("性別:%s\n", sex);
printf("\n");
}
※分割にはさまざまな流儀があります。
ここではヘッダーファイル内で#includeする手法としましたが、
すべての#includeをソースファイルで行う場合もあります。
記述式(解答例)
解 4-1
分割することでプログラムの見通しが良くなり、
再利用や多人数開発が容易になるから。
再利用や多人数開発が容易になるから。
本サイトについて
苦しんで覚えるC言語(苦C)はC言語入門サイトの決定版です。
C言語の基本機能を体系立てて解説しており、
市販書籍と同等以上の完成度です。




