C言語を基礎から順に学びたい場合は、C言語 学習ロードマップ を参照してください。
C言語の基礎練習問題集|入力・条件分岐・繰り返し・配列の最大値まで
基本記事で学んだ、変数、条件分岐、繰り返し、配列、関数を使って解く練習問題です。
問題文を読んだら、すぐに答えを見ず、次の順番で考えてください。
入力は何か
↓
結果として表示したいものは何か
↓
途中で覚える値は何か
↓
if / for / 配列のどれが必要か
↓
小さく動かして確認する
このページの到達点は、配列から最大値を探すプログラムを、自分で組み立てられることです。
1. 表示と変数
問題1:自己紹介を表示する
名前と好きな食べ物を変数へ入れ、次のように表示してください。
私は Yamada です。
好きな食べ物は curry です。
例を見る
#include <stdio.h>
int main(void)
{
char name[] = "Yamada";
char favorite_food[] = "curry";
printf("私は %s です。\n", name);
printf("好きな食べ物は %s です。\n", favorite_food);
return 0;
}
問題2:合計金額を表示する
quantityに4、unit_priceに150を入れ、合計金額を表示してください。
期待する表示です。
合計金額: 600円
考え方を見る
quantity * unit_priceの結果を、total_priceへ入れます。
2. 入力と条件分岐
問題3:偶数・奇数を判定する
キーボードから整数を1つ入力し、偶数か奇数かを表示してください。
整数を入力してください: 7
奇数です。
ヒントです。
number % 2 == 0
例を見る
#include <stdio.h>
int main(void)
{
int number = 0;
printf("整数を入力してください: ");
if (scanf("%d", &number) != 1)
{
printf("整数を入力してください。\n");
return 1;
}
if (number % 2 == 0)
{
printf("偶数です。\n");
}
else
{
printf("奇数です。\n");
}
return 0;
}
問題4:点数を判定する
キーボードから点数を入力し、次のルールで表示してください。
| 条件 | 表示 |
|---|---|
| 80点以上 | よくできました。 |
| 60点以上80点未満 | 合格です。 |
| 60点未満 | 不合格です。 |
80、60、59を入力して、境目の結果を確認してください。
3. 繰り返し
問題5:1から入力した数までの合計
キーボードから整数を入力し、1からその数までを足した合計を表示してください。
たとえば10を入力した場合は、次の表示にします。
1から10までの合計は55です。
考え方を見る
total を 0 で用意する
↓
number を 1 から入力値まで繰り返す
↓
total に number を足す
例を見る
#include <stdio.h>
int main(void)
{
int limit = 0;
int total = 0;
printf("整数を入力してください: ");
if (scanf("%d", &limit) != 1)
{
printf("整数を入力してください。\n");
return 1;
}
for (int number = 1; number <= limit; number++)
{
total = total + number;
}
printf("1から%dまでの合計は%dです。\n", limit, total);
return 0;
}
4. 配列
問題6:配列の合計と平均を求める
次の配列に入っている点数の合計と平均を表示してください。
int scores[] = { 72, 88, 65, 91, 77 };
期待する表示です。
合計: 393点
平均: 78.6点
ヒントです。
配列の要素を1つずつ取り出すには for を使う
平均を小数で出すには (double) を使う
問題7:配列から最大値を探す
次の配列に入っている数値のうち、最も大きい値を表示してください。
int values[] = { 18, 42, 9, 77, 35 };
期待する表示です。
最大値: 77
考え方です。
最初の値を最大値として覚える
↓
次の値と最大値を比べる
↓
次の値の方が大きければ、最大値を更新する
↓
最後の値まで繰り返す
例を見る
#include <stdio.h>
int main(void)
{
int values[] = { 18, 42, 9, 77, 35 };
int value_count = sizeof(values) / sizeof(values[0]);
int maximum = values[0];
for (int index = 1; index < value_count; index++)
{
if (values[index] > maximum)
{
maximum = values[index];
}
}
printf("最大値: %d\n", maximum);
return 0;
}
ここまでできれば
- 入力した値を
ifで判定できる -
forで合計を求められる - 配列を先頭から最後まで確認できる
- 条件に合う値を覚え直し、最大値を探せる
この後は、変数の値だけでなく、変数が置かれている場所を扱うポインタを学びます。