函数与数组
填充数组或修改数组:由于接受数组名参数的函数访问的是原始数组(使用指针访问),而不是其副本,因此可以通过调用该函数将值赋给数组元素,或是修改数组元素的值。
显示数组以及保护数组:为了确保显示函数不修改原始数组,可在声明形参时使用关键字const。
二维数组:int sum(int ar2[][4],int size);
填充cin
#include <iostream>
#include <string>
using namespace std;
int sum_arr(const int arr[], int n);
void fill_arr(int arr[], int n);
void ratio(int arr[], int n, int sum);
void print_arr(const int arr[], int n);
int main()
{
const int size = 6;
int student1[size] = { 120,110,100,90,85,95 };
int totalScore = sum_arr(student1, size);
cout << "该名学生的总成绩为:" << totalScore << endl;
int student2[size]= {};
fill_arr(student2, size);
totalScore = sum_arr(student2, size);
cout << "该学生的各科成绩为:" << endl;
print_arr(student2, size);
ratio(student2, size, totalScore);
cout << "各科成绩所占百分比(%):" << endl;
print_arr(student2, size);
return 0;
}
//arr时一个指针,指向数组的第一个元素,const int类型,所以不能修改数组内的值。
//n是数组的大小
//在函数体内,可以将arr直接当做数组名用,*arr和arr[]的意义相同。
int sum_arr(const int arr[], int n)
{
int res = 0;
//arr[1] = 1; //出错
for (int i = 0; i < n; i++)
{
res += arr[i];
}
return res;
}
void fill_arr(int arr[], int n)
{
cout << "请输入该学生的成绩(语数外物化生):" << endl;
int temp;
for (int i = 0; i < n; i++)
{
cin >> temp;
arr[i] = temp;
}
}
void ratio(int arr[], int n, int sum)
{
for (int i = 0; i < n; i++)
{
arr[i] = arr[i] * 100 / sum;
}
}
void print_arr(const int arr[], int n)
{
for (int i = 0; i < n; i++)
{
cout << arr[i] << " ";
}
cout << endl;
}
习题3
完成程序:射击分数显示
要求:
1.要求用户输入最多10个射击分数,并将它们存储在一个数组中。
2.输入负数提前完成输入。
3.使用3个数组处理函数分别进行输入、显示和计算平均分数的操作。
4.显示所有分数和平均分数。