是要求图片里面的数列和吗?这个应该不需要获取输入,直接使用循环计算就可以了。
修改如下:
#include <stdio.h>
int main() {
int a[5][6];
int i,j;
int firstNumerator=2; // 第一项的分子
int secondNumerator=3; // 第二项的分子
int firstDenominator=1; //第一项的分母
int secondDenominator=2; // 第二项的分母
int thisNumerator; // 当前项的分子
int thisDenominator; // 当前项的分母
double single; // 当前项
// 存储数列前和的变量,初始值设置为前两项的和
double sum=2.0/1+3.0/2;
// 再将第3项到第30项的数列之和累加到 总和sum中
for(i=3;i<=30;i++){
// 当前项分子为前两项的分子之和
thisNumerator= firstNumerator+secondNumerator;
// 当前项分母为前两项分母之和
thisDenominator = firstDenominator+secondDenominator;
// 当前项的值即为 当前项分子除以分母的值
single= thisNumerator*1.0/thisDenominator;
// 将当然项累加到和中
sum+=single;
// 将前面第一项的分子赋值为第二项的分子
firstNumerator= secondNumerator;
// 将前面第二项的分母赋值为当前项的分子
secondNumerator = thisNumerator;
// 将前面第一项的分母赋值为第二项的分母
firstDenominator=secondDenominator;
// 将前面第二项的分母赋值为当前项的分母
secondDenominator=thisDenominator;
}
// 打印结果
printf("前%d项数列之和为:%f。\n ",i-1,sum);
}
代码和图片里的题目根本不是一回事,代码是用来求一个二维数组某一列的和的。
#include <stdio.h>
void main() {
int a[5][6];
int i,j;
for(i=0;i<5;i++)
for(j=0;j<6;j++)
scanf("%d",&a[i][j]);
for(j=0;j<6;j++) {
int sum=0;
for(i=0;i<5;i++) {
sum+=a[i][j];
}
printf("第%d列的元素之和为:%d\n",j,sum);
}
}
算法实现:
计算二维数组每一列的元素之和,实际上就是相同列下数组每个元素的累加和。
C++代码如下:
// 定义计算二维数组列和的函数 vector calculateColumnSum(vector> &nums) { vector res(nums[0].size(), 0); for(int i = 0; i < nums.size(); i++) { for(int j = 0; j < nums[0].size(); j++) { res[j] += nums[i][j]; } } return res; }
// 测试 int main() { vector> nums = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}}; vector res = calculateColumnSum(nums); for(int i = 0; i < res.size(); i++) { cout << res[i] << " "; } return 0; }
输出结果:
12 15 18
这样就完成了计算二维数组每一列的元素之和的操作。
数列的前30项之和,供参考:
#include <stdio.h>
int main()
{
int a, b, i;
double s = 0;
for (i = 0, a = 2, b = 1; i < 30; a += b, b = a - b, i++)
s += a * 1.0 / b;
printf("S=%f", s);
return 0;
}