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

問題1 回答と解説

ソースコード


#include
int main(void)
{
	int a;
	
	printf("整数を入力してください。\n");
	
	scanf("%d",&a);
	
	printf("%d",a*a);
	
	return 0;
}

注意が必要なのはscanfに&をつけることです。
出力をするときに2乗しています。


問題2 回答と解説


#include
int main(void)
{	
	int kokugo;
	int sugaku;
	int rika;
	int syakai;
	int eigo;
	
	int goukei;
	
	printf("国語:");
	scanf("%d",&kokugo);
	
	printf("数学:");
	scanf("%d",&sugaku);
	
	printf("理科:");
	scanf("%d",&rika);
	
	printf("社会:");
	scanf("%d",&syakai);
	
	printf("英語:");
	scanf("%d",&eigo);
	
	goukei=kokugo+sugaku+rika+syakai+eigo;
	
	printf("合計は%dです。\n",goukei);
	
	printf("平均は%lfです。\n",goukei/5.0);
	
	return 0;
}

整数は%dを使うが小数には使えない。よって%lfをつかう。

大事→ 整数÷整数=整数しか表現できない
整数÷小数=整数と小数を表現できる
小数÷小数=整数と小数を表現できる

よって「÷5」は「÷5.0」とすることで、小数も表現できる。


問題3 回答と解説


#include
int main(void)
{	
	int a[5];
	int i;
	
	for(i=0;i<5;i++)
	{
		scanf("%d",&a[i]);
	}
	
	for(i=0;i<5;i++)
	{
		if(a[i]%2==0)
		{
			printf("%dは偶数です。\n",a[i]);
		}
		else
		{
			printf("%dは奇数です。\n",a[i]);
		}
	}
	
	return 0;
}


問題4 回答と解説


#include
int main(void)
{	
	int kokugo;
	int sugaku;
	int rika;
	int syakai;
	int eigo;
		
	printf("国語:");
	scanf("%d",&kokugo);
	
	printf("数学:");
	scanf("%d",&sugaku);
	
	printf("理科:");
	scanf("%d",&rika);
	
	printf("社会:");
	scanf("%d",&syakai);
	
	printf("英語:");
	scanf("%d",&eigo);
	
	if(kokugo<=60)
	{
		printf("国語は合格です。\n");
	}
	else
	{
		printf("国語は不合格です。\n");
	}
	if(sugaku<=60)
	{
		printf("数学は合格です。\n");
	}
	else
	{
		printf("数学は不合格です。\n");
	}
	if(rika<=60)
	{
		printf("理科は合格です。\n");
	}
	else
	{
		printf("理科は不合格です。\n");
	}
	if(syakai<=60)
	{
		printf("社会は合格です。\n");
	}
	else
	{
		printf("社会は不合格です。\n");
	}
	if(eigo<=60)
	{
		printf("英語は合格です。\n");
	}
	else
	{
		printf("英語は不合格です。\n");
	}
	
	return 0;
}

5つの教科ごとに判別するのでif文は5回使われます。


問題5 回答と解説


#include
int main(void)
{	
	int i,ix;
	
	for(i=0;i<9;i++)
	{
		for(ix=0;ix<9;ix++)
		{
			printf("%d\t",(i+1)*(ix+1));
		}
		printf("\n");
	}
	
	return 0;
}

iで回っているfor文は縦の列を、ixで回っているfor文は横の列を表しています。
printf(“\n”);がixのfor文の外に出ているのは、そのためです。

ixのfor文の中身が肝です。
iのfor文1回目、ixのfor文1回目のループを見てみるとi=0,ix=0ですから、(i+1)*(ix+1)は1となります。
iのfor文1回目、ixのfor文2回目のループを見てみるとi=0,ix=1ですから、(i+1)*(ix+1)は2となります。

iのfor文9回目、ixのfor文9回目のループを見てみるとi=8,ix=8ですから、(i+1)*(ix+1)は81となります。


最後の方は応用問題になっていました。%d,%lfなどの細かいところがまちがっていてもプログラムは実行されません。

「わからない」があった場合は「わかる」まで考える事が大切です。