第1回演習:解答例


演習課題

(1)0℃の時0.0 V,100℃の時5.0 Vを出力する温度センサーがある.0℃~100℃の間では電圧と温度の関係が直線的に変化するものとする. 測定された電圧値(例えば,2.3等)をキーボードから入力すると,温度を計算して画面に表示するプログラムを作成せよ. また,範囲外の電圧値が入力されたら「範囲外です」と画面に表示すること.


#include <stdio.h>

void main()
{
	float volt,temperature;

	printf("電圧[V]=");
	scanf("%f",&volt);

	if(0 <= volt && volt <= 5){
		temperature = volt * 100/5;
		printf("この時の温度は%f℃です¥n",temperature);
	} else {
		printf("範囲外です¥n");
	}

}

(2)キーボードから入力した自然数(2以上とする)が素数か否かを判定し,画面に表示する プログラムを作成せよ. 素数とは1とそれ自身以外に約数を持たない数である.


#include <stdio.h>

void main()
{
	int n, i, count;


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

	if(n >= 2){
		count = 0;
		for(i=1;i<=n;i++){
			if(n%i == 0){
				count++;
			}
		}
		if(count == 2){
			printf("%dは素数です¥n",n);
		} else{
			printf("%dは素数ではありません¥n",n);
		}
	} else {
		printf("範囲外です¥n");
	}

}


(3)2つの整数a, bをキーボードから入力すると,その数を含め2つの数の間の整数の積を求めるプログラムを作成せよ.ただし,a, b どちらが大きいかは,わからない. 例:a = 5, b = 2とすると,120と表示する.(2×3×4×5 = 120)


#include <stdio.h>

void main()
{
	int a, b, i, seki;


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

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

	seki = 1;

	if(a == b){
		seki = 0;
	} else if(a < b){
		for(i=a;i<=b;i++){
			seki *= i;
		}
	} else{
		for(i=b;i<=a;i++){
			seki *= i;
		}
	}

	printf("2つの数の間の整数の積は%dです¥n",seki);

}

(4)キーボードから入力された100個の実数を配列に格納し,その平均値を画面に出力するプログラムを作成せよ.


#include <stdio.h>

void main()
{
	float a[100];
	int i;
	float sum, ave;

	sum = 0.0;

	for(i=0;i<100;i++){
		printf("a[%d]=",i);
		scanf("%f",&a[i]);

		sum += a[i];
	}

	ave = sum/100;

	printf("平均値は%fです¥n",ave);

}