第14回演習の解答例


(1)2つの整数a, bを入力すると,その数を含めて,2つの数の間の整数の和を求めるプログラムを作成せよ.
  ただし,a, b どちらが大きいかは,わからない.また,aとbは同じ値でないとする.


#include <stdio.h>

void main()
{
	int a, b, i, sum;
	sum = 0;

	printf("a=");
	scanf("%d", &a);
	printf("b=");
	scanf("%d", &b);

	if(a < b){
		for(i=a;i<=b;i++){
			sum += i;
		}
	} else {
		for(i=b;i<=a;i++){
			sum += i;
		}
	}
	
	printf("2つの数の間の整数の和は%dです.¥n", sum);
}

(2)m枚のカードからn枚選んで順に並べる場合の数(順列)を,自然数m,nを入力すると答えるプログラムを作成せよ.


#include <stdio.h>

void main()
{
	int m, n, i, junretsu;
	junretsu = 1;

	printf("m=");
	scanf("%d", &m);
	printf("n=");
	scanf("%d", &n);

	for(i=m-n+1;i<=m;i++){
		junretsu *= i;
	}
	
	printf("m枚のカードからn枚選んで順に並べる場合の数は%dです.¥n", junretsu);
}

(3)キーボードから入力した整数a,bの割り算 a ÷ b の商とあまりを引き算のみを用いて計算し,画面に表示するプログラムを作成せよ.


#include <stdio.h>

void main()
{
	int a, b, i, shou;
	shou = 0;

	printf("a=");
	scanf("%d", &a);
	printf("b=");
	scanf("%d", &b);

	for(i=a;i>=b;i-=b){
		shou++;
	}
	
	printf("a ÷ b の商は%d,あまりは%dです.¥n", shou, i);
}


(4)4*4の二次元配列 { {1, 0, 2, 4 }, 
               {2, 0, 4, 8 },
               {4, 0, 9, 6 },
               {8, 1, 9, 2 } }
  の中身を上下逆転するプログラムを作成せよ.


#include <stdio.h>

void main()
{
	int a[4][4] = { {1, 0, 2, 4 },
	                {2, 0, 4, 8 },
	                {4, 0, 9, 6 },
	                {8, 1, 9, 2 } };
	int i, j, tmp;

	printf("並べ替え前¥n");
	for(i=0;i<4;i++){
		for(j=0;j<4;j++){
			printf("%d ", a[i][j]);
		}
		printf("¥n");
	}

	printf("¥n");

	for(i=0;i<4/2;i++){
		for(j=0;j<4;j++){
			tmp = a[i][j];
			a[i][j] = a[3-i][j];
			a[3-i][j] = tmp;
		}
	}

	printf("並べ替え後¥n");
	for(i=0;i<4;i++){
		for(j=0;j<4;j++){
			printf("%d ", a[i][j]);
		}
		printf("¥n");
	}
}