問題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文と配列は密接な関係にあります。
これらを自在に使うことができると「プログラム」をしていると実感できるでしょう。
繰り返しの練習が大切です。