(1)キーボードから長方形の二辺の長さ(整数)を入力すると,面積を計算し画面に出力するプログラムを作成せよ.
#include<stdio.h>
void main(){
int a,b,S;
printf("長方形の面積を計算します¥n");
printf("2辺の長さを入力してください¥n");
printf("a:");
scanf("%d",&a);
printf("b:");
scanf("%d",&b);
S = a * b ;
printf("長方形の面積S:%d¥n",S);
}
(2) (1)を利用して,面積を計算し画面に出力するプログラムを関数を用いて作成せよ.
ただし,引数2つ,戻り値ありとする.
#include<stdio.h>
int menseki(int a, int b){
int S;
S = a * b;
return S;
}
void main(){
int a,b,S;
printf("長方形の面積を計算します¥n");
printf("2辺の長さを入力してください¥n");
printf("a:");
scanf("%d",&a);
printf("b:");
scanf("%d",&b);
S = menseki(a,b);
printf("長方形の面積S:%d¥n",S);
}
(3) (2)を利用して,二辺の長さを実数にしたときのプログラムを作成せよ.
#include<stdio.h>
float menseki(float a, float b){
printf("a*b:%f¥n",a*b);
return a*b;
}
void main(){
float a,b,S;
S = 0.0;
printf("長方形の面積を計算します¥n");
printf("2辺の長さを入力してください¥n");
printf("a:");
scanf("%f",&a);
printf("b:");
scanf("%f",&b);
printf("長方形の面積S:%f¥n", menseki(a,b));
}
(4) (2)を利用して,戻り値なしで計算結果を表示するプログラムを作成せよ.
#include<stdio.h>
void menseki(float a, float b){
printf("長方形の面積S:%f¥n",a*b);
}
void main(){
float a,b;
printf("長方形の面積を計算します¥n");
printf("2辺の長さを入力してください¥n");
printf("a:");
scanf("%f",&a);
printf("b:");
scanf("%f",&b);
menseki(a,b);
}
(5)自然数 n の階乗 n! を求めるプログラムを,関数を用いて作成せよ.但し,0! = 1 である.(注:C言語では「!」は否定を表す演算子)
ヒント:まず作成する関数の引数の「型」と「個数」,戻り値の「有無」,「型」を検討しよう.
#include<stdio.h>
int kaijou(int a)
{
int x, i;
x = 1;
for(i=1;i<=a;i++){
x *= i;
}
return x;
}
void main()
{
int n, answer;
printf("自然数n=");
scanf("%d", &n);
answer = kaijou(n);
printf("n!は%dです。¥n",answer);
}
別解
#include<stdio.h>
int kaizyou(int a,int b){
if(a != 0){
b = b*a;
return kaizyou(a-1,b);
}else{
b = b * 1;
return b;
}
}
void main(){
int a,b;
b = 1;
printf("階乗の計算します¥n");
printf("数を入力してください¥n");
printf("a:");
scanf("%d",&a);
printf("階乗値a!:%d¥n",kaizyou(a,b));
}
(6)上の関数を利用して,キーボードから自然数 n, r を入力すると,n 枚のカードから r 枚選ぶ組み合わせの数を求めるプログラムを作成せよ.
ヒント:(1)まず, n >= r である必要がある.(2) nCr = n! / (n-r)! r!
#include<stdio.h>
int kaijou(int a)
{
int x, i;
x = 1;
for(i=1;i<=a;i++){
x *= i;
}
return x;
}
void main()
{
int n, r, answer;
printf("自然数n=");
scanf("%d", &n);
printf("自然数r=");
scanf("%d", &r);
if(n>=r){
answer = kaijou(n)/kaijou(n-r)/kaijou(r);
printf("n枚のカードからr枚選ぶ組合せの数は%dです。¥n",answer);
} else{
printf("入力エラーです。¥n");
}
}