qq_41933131 2021-06-06 18:22 采纳率: 85.7%
浏览 164
已采纳

实验7-2-2 矩阵运算

#include<stdio.h>
int main() {
	int n;
	int sum;
	scanf("%d", &n);
	int a[n][n];
	sum = 0;
	for (int i = 0; i < n; i++) {
		for (int j = 0; j < 0; j++) {
			scanf("%d", &a[i][j]);
			if ((i != j) && (i < (n - 1)) && (j < (n - 1))) {
				sum = sum + a[i][j];
			}
		}
	}
	printf("%d", sum);

	return 0;
}

给定一个n×n的方阵,本题要求计算该矩阵除副对角线、最后一列和最后一行以外的所有元素之和。副对角线为从矩阵的右上角至左下角的连线。

输入第一行给出正整数n(1<n≤10);随后n行,每行给出n个整数,其间以空格分隔。

在一行中给出该矩阵除副对角线、最后一列和最后一行以外的所有元素之和。

样例输入:

4 2 3 4 1 5 6 1 1 7 1 8 1 1 1 1 1

样例输出:

35

 

求问,为什么上述代码不能运行???

每当运行时,输入第一个数字后,自动跳到printf“0”,为啥,中间的for循环呢?为啥被吃了?

  • 写回答

1条回答 默认 最新

  • qfl_sdu 2021-06-06 18:42
    关注

    第6行 int a[n][n]不能这么写。代码修改如下:

    #include<stdio.h>
    int main() {
    	int n,i;
    	int sum;
    	scanf("%d", &n);
    	int** a = new int*[n];
    	sum = 0;
    	for (int i = 0; i < n; i++) {
    		a[i] = new int[n];
    		for (int j = 0; j < n; j++) {
    			scanf("%d", &a[i][j]);
    			if ((i != n-j-1) && (i < (n - 1)) && (j < (n - 1))) 
    			{
    				sum = sum + a[i][j];
    			}
    		}
    	}
    	printf("%d", sum);
    	for (i = 0; i < n; i++)
    	{
    		delete[] a[i];
    	}
    	delete[] a;
    	return 0;
    }
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 matlab 用yalmip搭建模型,cplex求解,线性化处理的方法
  • ¥15 qt6.6.3 基于百度云的语音识别 不会改
  • ¥15 关于#目标检测#的问题:大概就是类似后台自动检测某下架商品的库存,在他监测到该商品上架并且可以购买的瞬间点击立即购买下单
  • ¥15 神经网络怎么把隐含层变量融合到损失函数中?
  • ¥15 lingo18勾选global solver求解使用的算法
  • ¥15 全部备份安卓app数据包括密码,可以复制到另一手机上运行
  • ¥20 测距传感器数据手册i2c
  • ¥15 RPA正常跑,cmd输入cookies跑不出来
  • ¥15 求帮我调试一下freefem代码
  • ¥15 matlab代码解决,怎么运行