第1回演習:解答例


演習課題

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

/*1.電圧と温度の関係*/


#include <stdio.h>
void main()
{
	float V;					/*変数の定義*/

	printf("電圧値:V="); scanf("%f",&V);	/*変数への入力*/

	if(V>=0.0&&V<=5.0){			/*条件の判定*/
		printf("温度は%.2f℃です.",100.0/5.0*V);
	}else{
		printf("電圧は0.0~5.0Vで入力してください.");
	}
}

(2)次に,電圧と温度の関係が下表のようなセンサーを用いる.隣接する各温度差10℃の間では,電圧と温度の関係が直線的に変化するものとする. 測定された電圧値(例えば,2.3等)をキーボードから入力すると,温度を計算して画面に表示するプログラムを作成せよ.

/*2.温度変換プログラム*/


#include <stdio.h>
void main()
{
	float V;
	int i;						/*カウンター変数の定義*/
	float thre[12]={0.0, 0.389, 0.787, 1.194, 1.61, 2.035, 2.467, 2.908, 3.357, 3.813, 4.277, 5.0};/*電圧測定点の入力*/

	printf("電圧値:V="); scanf("%f",&V);
	if(V>=0.0 && V<=4.277){				/*動作範囲の確認*/
		for(i=0; i<11; i++){
			if(V>=thre[i] && V<thre[i+1]){	/*温度の計算*/
				printf("温度は%.2f℃です.",10*i+10/(thre[i+1]-thre[i])*(V-thre[i]));
			}
		}
	}else{
		printf("動作範囲を超えています.");		/*動作範囲の確認*/
	}
}


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

/*3.2つの整数の積*/


#include <stdio.h>
void main()
{
	int a,b,i,s;				/*変数の定義*/
	s=1;					/*計算変数の初期化*/

	printf("a="); scanf("%d",&a);		/*変数の入力*/
	printf("b="); scanf("%d",&b);

	if(a-b==0){				/*大小の判定*/
		printf("答えは0です.¥n");		/*答えの出力*/
	}else if(a-b>0){				/*大小の判定*/
		for(i=b;i<=a;i++){
			s *= i;			/*積の計算*/
		}
		printf("答えは%dです.¥n",s);		/*答えの出力*/
	}else{					/*大小の判定*/
		for(i=a;i<=b;i++){
			s *= i;
		}
		printf("答えは%dです.¥n",s);		/*答えの出力*/
	}
}

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

/*4.平均値以下を出力*/


#include <stdio.h>
void main()
{
	int i;
	float n[20];
	float ave, sum;

	for(i=0;i<20;i++){
		printf("実数を20個入力して下さい:");		/*変数への入力*/
		scanf("%f",&n[i]);
	}

	sum = 0.0;					/*変数の初期化*/

	for(i=0;i<20;i++){
		sum += n[i];				/*合計値の計算*/
	}
	
	ave = sum / 20.0;					/*平均値の計算*/
	
	while(n[i]<=ave){
		printf("%f¥n",n[i]);			/*平均値以下の出力*/
	}

}