■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.h | calculation.c | div(),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.h | randLib.c | init_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.h | nameDB.c | init(),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.h | calculation.c | init(),add(),sub() | ans |
| showResult.h | showResult.c | showNum() | なし |
■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.h | logic.c | init(),setPlayer(),setComputer() | player,computer |
| showResult.h | showResult.c | Judge() | results |
