■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 |