添加 58. 区间和 C语言版本

This commit is contained in:
Leehouc
2024-08-30 21:31:45 +08:00
committed by GitHub
parent 830caef122
commit 2c52c3c363

View File

@ -263,3 +263,45 @@ if __name__ == "__main__":
main() main()
``` ```
### C
```C
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
int num;
// 读取数组长度
scanf("%d", &num);
// 使用动态内存分配而不是静态数组,以适应不同的输入大小
int *a = (int *)malloc((num + 1) * sizeof(int));
// 初始化前缀和数组的第一个元素为0
a[0] = 0;
// 读取数组元素并计算前缀和
for (int i = 1; i <= num; i++)
{
int mm;
scanf("%d", &mm);
// 累加前缀和
a[i] = a[i - 1] + mm;
}
int m, n;
// 循环读取区间并计算区间和,直到输入结束
// scanf()返回成功匹配和赋值的个数,到达文件末尾则返回 EOF
while (scanf("%d%d", &m, &n) == 2)
{
// 输出区间和注意区间是左闭右开因此a[n+1]是包含n的元素的前缀和
printf("%d\n", a[n+1] - a[m]);
}
// 释放之前分配的内存
free(a);
return 0;
}
```