习题3
完成程序:射击分数显示
要求:
1.要求用户输入最多10个射击分数,并将它们存储在一个数组中。
2.输入负数提前完成输入。
3.使用3个数组处理函数分别进行输入、显示和计算平均分数的操作。
4.显示所有分数和平均分数。
//老师代码:
#include <iostream>
using namespace std;
int fill_scores(int arr[], const int n);
void print_scores(int arr[], int n);
float average(int arr[], int n);
int main()
{
const int maxSize = 10;
int scores[maxSize] = {};
//调用函数,填充数组并得到数组的元素的个数
int size = fill_scores(scores, maxSize);
print_scores(scores, size);
float ave = average(scores, size);
cout << "平均分数为:" << ave;
return 0;
}
int fill_scores(int arr[], const int n)
{
int temp;
int i = 0;
cout << "请输入最多10个射击成绩(输入负数则提前结束输入):" << endl;
//1,判断输入的数字的个数是否小于等于10个
while (i < n)
{
cin >> temp;
//判断数据是否大于0,大于0的话,继续接受,小于0的话,停止接收
if (temp >= 0)
{
arr[i] = temp;
i++;
}
else
{
break;
}
}
if (i == 9)
{
cout << "已输入10个分数。" << endl;
}
//将输入的数字的个数返还
return i;
}
void print_scores(int arr[], int n)
{
for (int i = 0; i < n; i++)
{
cout <<"分数"<< i + 1 << ":" << arr[i] << endl;
}
}
float average(int arr[], int n)
{
float res = 0;
for (int i = 0; i < n; i++)
{
res += arr[i];
}
return res / n;
}
//自写代码
#include <iostream>
using namespace std;
void InputShootScore(int arr[], int size, int&inputRightNum);
void PrintShootScore(const int arr[], int inputRightNum);
float CalculateShootAverageScore(const int arr[], int inputRightNum);
int main()
{
const int size = 10;
int inputRightNum = 0;
int arr[size] = {};
cout << "请输入最多10个射击成绩(输入负数提前结束输入):" << endl;
InputShootScore(arr, size,inputRightNum);
cout << "射击分数为:" << endl;
PrintShootScore(arr, inputRightNum);
cout<<"平均分数为:"<<CalculateShootAverageScore(arr, inputRightNum);
return 0;
}
void InputShootScore(int arr[],int size,int&inputRightNum)
{
int temp;
inputRightNum = 0;
for (int i = 0; i < size; i++)
{
cin >> temp;
if (temp < 0)
{
break;
}
arr[i] = temp;
inputRightNum++;
}
}
void PrintShootScore(const int arr[], int inputRightNum)
{
for (int i = 0; i < inputRightNum; i++)
{
cout << "分数" << (i + 1) << ":" << arr[i] << endl;
}
}
float CalculateShootAverageScore(const int arr[], int inputRightNum)
{
int totalScore = 0;
for (int i = 0; i < inputRightNum; i++)
{
totalScore += arr[i];
}
return float(totalScore) / inputRightNum;
}