身につくC言語-演習問題2回目 解答と解説-

問題1 画面に「おはよう」と入力し出力しなさい


#include<stdio.h>
int main(void)
{
	int a[30];
	
	scanf("%s",a);
	
	
	printf("%s",a);
	
	return 0;
	
}

配列は予想される数よりも多く確保した方がいいです。

もし、確保した数よりも入力した数の方が多ければ、予期しないエラーにつながる可能性があります。

 

問題2 整数を入力して、入力された数が正なら「正」、負なら「負」と出力しなさい


#include<stdio.h>
int main(void)
{
	int a;
	
	scanf("%d",&a);
	
	if(a>0)
	{
		printf("正\n");
	}
	else if(a<0)
	{
		printf("負\n");
	}
	else
	{
		printf("0です。\n");
	}
	
	return 0;
}

これは、if文で条件分岐して出力しています。

 

問題3 整数を入力して、その数が、1なら「おはよう」、2なら「こんにちは」3なら「こんばんは」それ以外なら「もう一度入力してください。」と出力しなさい。


#include<stdio.h>
int main(void)
{
	int a;
	
	scanf("%d",&a);
	
	switch(a)
	{
		case 1:
		printf("おはよう\n");
		break;
		
		case 2:
		printf("こんにちは\n");
		break;
		
		case 3:
		printf("こんばんは\n");
		break;
		
		default:
		printf("もう一度入力してください。\n");
		break;
	}
	
	return 0;
}

これは、if文で書いてもいいですが、今回はswitch文で書いた方が効率がいいでしょう。

問題4 5人の数学のテストの点数を入力し(点数は任意)、合計と平均を出力しなさい


#include<stdio.h>
int main(void)
{
	int a[5];
	int goukei=0;
	double heikin;
	int i;
	
	for(i=0;i<5;i++)
	{
		scanf("%d",&a[i]);
		goukei+=a[i];
	}
	
	heikin=goukei/5.0;
	
	printf("合計は%dで、平均は%lfです。\n",goukei,heikin);
	
	return 0;
}

注意する場所は、「int goukei=0;」という場所と、

「heikin=goukei/5.0;」という場所でしょう。

 

「int goukei=0;」の注意

なぜ、ここでは宣言と同時に0を代入しているかというと

「goukei+=a[i];」

という文を使っているからです。

 

訳すと、

 

goukeiにa[i]を足していく

 

という意味です。

 

前提条件は「goukei」に何かしらの値が入っていることです。

 

値が入っていない状態だと、エラーがおきます。

 

+=を使うときは注意しましょう。

 

「heikin=goukei/5.0;」の注意

heikinはdouble型、goukeiはint型、5.0はdouble型です。

 

int型どうしの計算の結果はint型、double型どうしの計算の結果はdouble型になります。

 

そして、int型とdouble型の計算は、容量が大きい方すなわちdouble型になります。

 

ということはgoukei/5と書いてしまうと、結果はint型になり、double型のheikinに代入できなくなります。

 

ですので、ここでは、どちらかをdouble型にする必要があるのです。

 

問題5 整数を3つ入力し、最大値と最小値を出力しなさい。


#include<stdio.h>
int main(void)
{
	int a[3];
	int i;
	int max;
	int min;
	
	for(i=0;i<3;i++)
	{
		scanf("%d",&a[i]);
	}
	
	max=a[0];
	min=a[0];
	
	for(i=0;i<3;i++)
	{
		if(max<a[i])
		{
			max=a[i];
		}
		if(min>a[i])
		{
			min=a[i];
		}
	}
	
	printf("最大値は%dで最小値は%dです。\n",max,min);
	
	return 0;
}

ここで注意してほしいのは、else ifやelseを使っていないことです。

 

最大と最小の「2パターン」を判別するわけですから、ifは2つ使います。

まとめ

for文と配列は密接な関係にあります。

 

これらを自在に使うことができると「プログラム」をしていると実感できるでしょう。

 

繰り返しの練習が大切です。