■prob7-1.(難易度★)

以下のプログラムは、さまざまな計算を行うプログラムです。このプログラムの関数を、以下に指定したファイルに分割しなさい。

prob7-1.:main.c

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#include <stdio.h>

//  整数の割り算を行う関数
int div(int,int);
//  整数の割り算の余りを計算する関数
int mod(int,int);

void main(){
int n1,n2;
int r1,r2;
printf("n1=");
scanf("%d",&n1);
printf("n2=");
scanf("%d",&n2);
r1 = div(n1,n2);    //  入力した2つの整数値の商を求める
r2 = mod(n1,n2);    //  入力した2つの整数値の割り算の余りを求める
printf("%d / %d = %d 余り %d¥n",n1,n2,r1,r2);
}

int div(int a,int b){
return a / b;
}

int mod(int a,int b){
return a % b;
}

ファイルと関数・グローバル変数の対応一覧

ヘッダーファイルソースファイル関数グローバル変数
calculation.hcalculation.cdiv(),mod()なし

■prob7-2.(難易度★)

以下のプログラムは、指定された範囲の乱数を発生させるプログラムです。このプログラムの関数を、以下に指定したファイルに分割しなさい。

prob7-2.:main.c

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include <stdio.h>
#include <stdlib.h>
#include <time.h> 

//  乱数の初期化
void init_rand();
//  指定した範囲の乱数を発生
int getRand(int,int);

void main(){
int i,num;
init_rand();

for(i = 0; i < 100; i++){
num = getRand(-10,10);  //  -10から10までの乱数発生
printf("乱数:%d¥n",num);
}
}

//  乱数の初期化
void init_rand(){
srand((unsigned) time(NULL));
}

//  指定した範囲の乱数を発生
int getRand(int start,int end){
return rand() % (end - start + 1) + start;
}

ファイルと関数・グローバル変数の対応一覧

ヘッダーファイルソースファイル関数グローバル変数
randLib.hrandLib.cinit_rand(),getRand()なし

■prob7-3.(難易度★)

以下のプログラムは、複数の生徒の名前を登録するプログラムです。このプログラムの関数およびグローバル変数を、以下に指定したファイルに分割しなさい。

prob7-3.:main.c

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
#include <stdio.h>
#include <string.h>

//  生徒の名前(10名まで登録可能)
char names[10][256];

//  データの初期化void init();
//  生徒の名前の設定
void setName(int,char*);
//  生徒の名前の表示
void showName(int);

void main(){
init();
setName(0,"山田太郎");
setName(1,"太田花子");
setName(2,"徳川家康");
showName(1);
showName(2);
showName(0);
}

//  データの初期化
void init(){
// 名前のクリア
int i;for(i = 0; i < 10; i++){
strcpy(names[i],"");    //  文字列をクリア
}
}

//  生徒の名前の設定
void setName(int num,char* name){
//  名前を登録
if(num >= 0 && num < 10){
strcpy(names[num],name);
}
}

//  生徒の名前の表示
void showName(int num){
printf("%d:%s¥n",num,names[num]);
}

ファイルと関数・グローバル変数の対応一覧

ヘッダーファイルソースファイル関数グローバル変数
nameDB.hnameDB.cinit(),setName(),showName()names

■prob7-4.(難易度★★)

以下のプログラムは、さまざまな計算を行うプログラムです。このプログラムの関数を、以下に指定したファイルに分割しなさい。グローバル変数ansの実体は、calculation.cに持たせ、外部でも利用できるようにしなさい。

prob7-4.:main.c

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#include <stdio.h>
//  値
int ans;

//  初期値の設定
void init(int);
//  加算
void add(int);
//  減算
void sub(int);
//  値の表示
void showNum();

void main(){
init(100);
showNum();
add(10);    //  10加算
showNum();
sub(100);   //  100減算
showNum();
}

//  初期値の設定
void init(int num){
ans = num;  //  値の初期化
}

//  加算
void add(int num){
ans += num; //  現在の値に足し算
}

//  減算
void sub(int num){
ans -= num; //  現在の値から引き算
}

//  値の表示
void showNum(){
printf("現在の値:%d¥n",ans);
}

ファイルと関数・グローバル変数の対応一覧

ヘッダーファイルソースファイル関数グローバル変数
calculation.hcalculation.cinit(),add(),sub()ans
showResult.hshowResult.cshowNum()なし

■prob7-5.(難易度★★)

以下のプログラムは、じゃんけんゲームです。このプログラムの関数を、以下に指定したファイルに分割しなさい。なお、グローバル変数は、表の指定したファイルの中で定義すること。

prob7-5.:main.c

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

//  コンピュータの手
int player = 0;
//  プレイヤーの手
int computer = 0;
char results[3][16]  = {"グー","チョキ","パー"};
//  乱数の初期化
void init();
//  プレイヤーの手値設定
void setPlayer(int);
//  コンピュータの手設定
void setComputer();
//  判定
void Judge();

void main(){
int num;
init();
printf("じゃんけんゲーム¥n");
printf("0:グー、1:チョキ、2:パー¥n");
while(1){
printf("あなたの手は?(0-2):");
scanf("%d",&num);
if(num < 0 || num > 2){
printf("終了します¥n");
break;
}else{
setPlayer(num); //  自分の手設定
setComputer();  //  コンピュータの手設定
Judge();        //  判定
}
}
} 

//  初期化
void init(){
srand((unsigned) time(NULL));
}
//  指定した範囲の乱数を発生
void setPlayer(int num){
player = num;
}
//  指定した範囲の乱数を発生
void setComputer(){
computer = rand() % 3;
}

void Judge(){
printf("プレイヤー:%s¥n",results[player]);
printf("コンピューター:%s¥n",results[computer]);
if((player == 0 && computer == 1)|| (player == 1 && computer == 2) || (player == 2 && player == 0)){
printf("プレイヤーの勝ち¥n");
}else if((player == 1 && computer == 0) || (player == 2 && computer == 1) || (player == 0 && computer == 2)){
printf("コンピュータの勝ち¥n");
}else{
printf("あいこです。¥n");
}
}

ファイルと関数・グローバル変数の対応一覧

ヘッダーファイルソースファイル関数グローバル変数
logic.hlogic.cinit(),setPlayer(),setComputer()player,computer
showResult.hshowResult.cJudge()results