d",&a[i][j]); fo0;i<5;i++) { sum+=a[i][j]; } printf("第%d列的元素之和为:%d\n",j,sum); } }

img

img


#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); } }

是要求图片里面的数列和吗?这个应该不需要获取输入,直接使用循环计算就可以了。

修改如下:


#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);
    
}

img

代码和图片里的题目根本不是一回事,代码是用来求一个二维数组某一列的和的。

#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); 
  } 
}

  • 以下回答由chatgpt基于相关博客总结生成:

    算法实现:

    计算二维数组每一列的元素之和,实际上就是相同列下数组每个元素的累加和。

    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;
}