用C++写一个程序:定义数组类Arr,包含私有成员int a[10]。在形参为指针的构造函数中初始化数组a,使元素值分别为11, 12, 13, ..., 20。在Arr中声明友元函数Accumulate,将数组成员a[10]的值累加并将结果返回。编写main函数并进行测试。
时间: 2023-03-04 14:21:07 浏览: 133
以下是用C语言编写的满足题目要求的程序:
```
#include <stdio.h>
// 定义数组类Arr
typedef struct {
int a[10]; // 私有成员int a[10]
} Arr;
// 形参为指针的构造函数,初始化数组a
void init(Arr* arr) {
for (int i = 0; i < 10; i++) {
arr->a[i] = i + 11;
}
}
// 声明友元函数Accumulate,将数组成员a[10]的值累加并将结果返回
int Accumulate(Arr arr) {
int sum = 0;
for (int i = 0; i < 10; i++) {
sum += arr.a[i];
}
return sum;
}
int main() {
Arr arr;
init(&arr); // 初始化数组a
printf("数组元素为:");
for (int i = 0; i < 10; i++) {
printf("%d ", arr.a[i]);
}
printf("\n数组元素的累加和为:%d\n", Accumulate(arr)); // 调用友元函数Accumulate
return 0;
}
```
程序中先定义了数组类`Arr`,包含私有成员`int a[10]`。然后用形参为指针的构造函数`init`初始化数组`a`,使元素值分别为11, 12, 13, ..., 20。在`Arr`中声明友元函数`Accumulate`,将数组成员`a[10]`的值累加并将结果返回。最后编写`main`函数进行测试,初始化数组`a`并输出元素值,再调用友元函数`Accumulate`计算累加和并输出结果。
阅读全文