===== 🧮 練習問題 =====
==== 第1問:平均点と評価を返す関数 ====
3科目の点数を入力し、平均点を返す関数と、その平均に応じて評価(A〜D)を返す関数を作れ。
* getAverage() … 平均値を計算して返す
* getRank() … 80点以上→A、60点以上→B、40点以上→C、それ以下→D
**例**
入力: 80 70 90
出力: (平均値と評価)
----
==== 解答 ====
#include
#include
#include // std::setprecision
// 関数のプロトタイプ宣言
float getAverage(float score[], int num); //平均値を計算して返す
char getRank(float score[], int num); //80点以上→A、60点以上→B、40点以上→C、それ以下→D
int main() {
//std::vector scores(3); //(N)ってやればN個の要素を持つ配列が作れる
float scores[3];
std::cout << "3科目の点数を入力してください(例: 80 70 90)> ";
for (int i = 0;i < 3; i++)
std::cin >> scores[i];
double avg = getAverage(scores, 3);
char rank = getRank(scores, 3);
std::cout << std::fixed << std::setprecision(1);//小数点以下1桁まで表示
std::cout << "平均点: " << avg << " 点" << std::endl << "評価: " << rank << std::endl;
}
//関数の定義
float getAverage(float score[3], int num)
{
double sum = 0;
for (int i = 0; i < num; ++i) {
sum += score[i];
}
return sum / num;
}
char getRank(float score[3], int num)
{
float avg = getAverage(score, num);
if (avg >= 80) {
return 'A';
}
else if (avg >= 60) {
return 'B';
}
else if (avg >= 40) {
return 'C';
}
else {
return 'D';
}
}
==== 第2問:配列の最大値と最小値を求める関数 ====
配列とその要素数を受け取り、最大値と最小値をポインタ経由で返す関数を作れ。
* ループで配列を走査し、*min, *max に代入
* mainで表示する
**例**
入力: {3, 9, 2, 5}
出力: 最大値=9, 最小値=2
----
==== 解答 ====
解答がここに出るよ
==== 第3問:配列の平均値より大きい値を表示 ====
整数配列と要素数を引数に受け取り、平均値を求めて、その平均より大きい要素だけを出力する関数を作れ。
* 関数内で平均値を計算
* 平均より大きい要素をすべて表示
**例**
入力: {60, 80, 70, 90}
出力: 平均より大きい値 → 80, 90
----
==== 解答 ====
解答がここに出るよ
==== 第4問:文字列中の特定文字を数える関数 ====
文字列と文字を受け取り、その文字がいくつ含まれているか数える関数を作れ。
* for文で str[i] != '\\0' まで走査
* 一致したらカウントを増やす
**例**
入力: "banana", 文字 'a'
出力: 文字 'a' は 3 個含まれています
----
==== 解答 ====
解答がここに出るよ
==== 第5問:関数を組み合わせて統計出力 ====
以下の関数を組み合わせて、5人の点数から平均・最高・最低を出力するプログラムを作れ。
* mainで配列を作り、関数を順に呼び出す
* 結果を整形して表示
**例**
入力: {70, 85, 60, 90, 75}
出力: 平均=76, 最高=90, 最低=60
----
==== 解答 ====
解答がここに出るよ