程序的功能是:有一递推数列,满足f(0)=0,f(1)=1,f(2)=2, f(n+1)=2f(n)+f(n-1)f(n-2
时间: 2023-12-15 14:04:03 浏览: 156
好的,这是一个 C 语言程序,可以计算递推数列,满足f(0)=0,f(1)=1,f(2)=2,f(n+1)=2f(n)+f(n-1)f(n-2)。程序中包含三个自定义函数的设计,分别是:
1. readArray:读取大小为 n 的数组 arr,并计算数组元素的和 sum,以及大于 70 的元素个数 cnt。
2. calculateSequence:计算递推数列中第 n 项的值。
3. printResults:输出数组 arr 的第 n 个元素的值,以及数组元素的和 sum 和大于 70 的元素个数 cnt。
以下是完整的 C 语言程序代码:
```c
#include <stdio.h>
// 自定义函数之原型声明
void readArray(float arr[], int n, float *sum, int *cnt);
float calculateSequence(int n);
void printResults(float x, float sum, int cnt);
int main(void) {
float arr1[6], arr2[8], arr3[12], sumA, sumB, sumC;
int gt70A, gt70B, gt70C;
// 调用函数读 6 个数到 arr1 中,并计算和及大于 70 的个数
readArray(arr1, 6, &sumA, >70A);
// 调用函数读 8 个数到 arr2 中,并计算和及大于 70 的个数
readArray(arr2, 8, &sumB, >70B);
// 调用函数读 12 个数到 arr3 中,并计算和及大于 70 的个数
readArray(arr3, 12, &sumC, >70C);
// 输出计算结果
printResults(calculateSequence(5), sumA, gt70A);
printResults(calculateSequence(7), sumB, gt70B);
printResults(calculateSequence(11), sumC, gt70C);
return 0;
}
// 自定义函数之实现
void readArray(float arr[], int n, float *sum, int *cnt) {
*sum = 0;
*cnt = 0;
for (int i = 0; i < n; i++) {
scanf("%f", &arr[i]);
*sum += arr[i];
if (arr[i] > 70) {
(*cnt)++;
}
}
}
float calculateSequence(int n) {
float f[100] = {0, 1, 2};
for (int i = 3; i <= n; i++) {
f[i] = 2 * f[i-1] + f[i-2] * f[i-3];
}
return f[n];
}
void printResults(float x, float sum, int cnt) {
printf("\narr[n] = %4.1f, sum(arr) = %5.1f, cnt(arr) = %d\n", x, sum, cnt);
}
```
阅读全文