おさえておきたいプログラミングの基本
この問題を解くためには…
以下のプログラムは、さまざまな計算を行うプログラムです。このプログラムの関数を、以下に指定したファイルに分割しなさい。
prob7-1:main.c#include <stdio.h>
// 整数の割り算を行う関数
int div(int,int);
// 整数の割り算の余りを計算する関数
int mod(int,int);
int main(int argc,char** argv){
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);
return 0;
}
// 整数の割り算を行う関数
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:main.c#include <stdio.h>
#include <stdlib.h>
#include <time.h>
// 乱数の初期化
void init_rand();
// 指定した範囲の乱数を発生
int getRand(int,int);
int main(int argc,char** argv){
int i,num;
init_rand();
for(i = 0; i < 100; i++){
num = getRand(-10,10); // -10から10までの乱数発生
printf("乱数:%d\n",num);
}
return 0;
}
// 乱数の初期化
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:main.c#include <stdio.h>
#include <string.h>
// 生徒の名前(10名まで登録可能)
char names[10][256];
// データの初期化
void init();
// 生徒の名前の設定
void setName(int,char*);
// 生徒の名前の表示
void showName(int);
int main(int argc,char** argv){
init();
setName(0,"山田太郎");
setName(1,"太田花子");
setName(2,"徳川家康");
showName(1);
showName(2);
showName(0);
return 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 |
以下のプログラムは、さまざまな計算を行うプログラムです。このプログラムの関数を、以下に指定したファイルに分割しなさい。グローバル変数ansの実体は、calculation.cに持たせ、外部でも利用できるようにしなさい。
prob7-4:main.c#include <stdio.h>
// 計算結果を入れる変数の値
int ans;
// 初期値の設定
void init(int);
// 加算
void add(int);
// 減算
void sub(int);
// 値の表示
void showNum();
int main(int argc,char** argv){
init(100);
showNum();
add(10); // 10加算
showNum();
sub(100); // 100減算
showNum();
return 0;
}
// 初期値の設定
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:main.c#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();
int main(int argc,char** argv){
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(); // 判定
}
}
return 0;
}
// 初期化
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 |
一週間でわかるC言語・C++言語がオンライン講座になりました!動画と音声によってさらにわかりやすくなりました!! 1講座で2つの言語を学ぶことができる上に、練習問題の回答もダウンロードできます。
Read →本講座が「1週間でC言語の基礎が学べる本」として書籍化されました!サイトの内容プラスアルファでより学習しやすくなっています!Impressより発売中です!!
Read →