使用c语言解决【问题描述】 卡卡同学最近开始学习数的加法运算,一天老师为了测试大家对加法的 掌握情况,让同学们做了一个有趣的加法接力赛游戏。老师在黑板上从左到 右写下了 n 个大于零的整数,老师接下来找出 n 个同学完成下面的计算任务。 第一个同学在黑板上抄下最左边的数字,第二个同学将第一个同学写下的数 字加上老师写的第二个数字所得到的和写在黑板上。以此类推,第 m 个同学 将前面第 m-1 个同学所写下的数字加上老师在黑板上写下的第 m 个数字所得 之和,并将结果写到黑板上。当计算完成这 n 个数字之后,老师又让同学从 最右边开始按相同的方法再次计算出 n 个数值。最后老师让同学们找出这所 有数字当中共有多少个是相同的。 例如:老师在黑板上写下了 7 个数,从左到右依次为:3,6,2,1,4, 5,2,则同学们第一次从左边开始计算所得到的 7 个数值应该是:3,9,11, 12,16,21,23;而第二次从右边开始计算所得到的 7 个数值应该是:2,7, 11,12,14,20,23;于是第一次与第二次计算出的数值中相同的有 3 个, 它们分别是:11、12 与 23。 【输入】 共两行,第一行为 n(1<n<100),第二行为 n 个数,用空格隔开, 每个数 的大小在 0~200 之间。 【输出】 第一次与第二次计算出的数值中相同的个数。 【输入样例】 7 3 6 2 1 4 5 2 【输出样例】 3
时间: 2023-07-16 19:16:23 浏览: 306
以下是使用C语言的解法:
```c
#include <stdio.h>
int main() {
int n, i, j, count = 0;
int nums[100], left[100] = {0}, right[100] = {0};
scanf("%d", &n);
for (i = 0; i < n; i++) {
scanf("%d", &nums[i]);
}
// 从左往右计算
left[0] = nums[0];
for (i = 1; i < n; i++) {
left[i] = left[i - 1] + nums[i];
}
// 从右往左计算
right[n - 1] = nums[n - 1];
for (i = n - 2; i >= 0; i--) {
right[i] = right[i + 1] + nums[i];
}
// 统计相同数字的个数
for (i = 0; i < n; i++) {
for (j = i + 1; j < n; j++) {
if (left[i] == right[j]) {
count++;
}
}
}
printf("%d\n", count);
return 0;
}
```
思路:首先读入n和n个数,然后分别从左往右和从右往左计算出n个数值,最后统计相同数字的个数。
阅读全文