c语言完成,禁止使用外部函数:圆盘上有 n 个格子,每个格子存了一个正整数,找出 4 个相邻的数,使其相加之和 最大。并给出它们这 4 个数中最左侧数的起始位置,位置编号从 1 开始。 请使用函数实现。 [输入] 输入包含两行: 第一行是 n(5 <= n <= 1000)。 第二行是 n 个正整数,邻近两数之间用一个空格隔开。 [输出] 输出这 4 个数中最左侧数的位置编号,位置编号从 1 开始。 [输入示例] 13 1 2 3 4 5 6 7 8 9 10 11 12 13 [输出示例] 10
时间: 2023-02-06 11:30:50 浏览: 96
您可以使用以下代码来实现这个功能:
```
#include <stdio.h>
// 计算最大和的四个数的起始位置和最大和
void max_sum(int n, int *arr, int *start, int *sum)
{
// 初始化起始位置和最大和
*start = 0;
*sum = 0;
// 遍历所有可能的起始位置
for (int i = 0; i < n - 3; i++)
{
// 计算当前四个数的和
int temp_sum = arr[i] + arr[i + 1] + arr[i + 2] + arr[i + 3];
// 如果当前和更大,则更新最大和和起始位置
if (temp_sum > *sum)
{
*start = i;
*sum = temp_sum;
}
}
}
int main()
{
// 读入数组的大小
int n;
scanf("%d", &n);
// 读入数组
int arr[n];
for (int i = 0; i < n; i++)
{
scanf("%d", &arr[i]);
}
// 计算最大和
int start, sum;
max_sum(n, arr, &start, &sum);
// 输出起始位置
printf("%d", start + 1);
return 0;
}
```
该代码中包含了一个名为 `max_sum` 的函数,它接受数组的大小 `n` 和数组本身 `arr` 作为输入,并计算最大和和起始位置。在 `main` 函数中,我们读入数组的大小和数组元素,然后调用 `max_sum` 函数计算最大和和起始位置。最后,我们输出起始位置。
阅读全文