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;
    }
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥120 目前wxid加好友的渠道都被和谐了吗
  • ¥15 关于#网络#的问题:网络是从楼上引一根网线下来,接了2台傻瓜交换机,也更换了ip还是不行
  • ¥15 资源泄露软件闪退怎么解决?
  • ¥15 CCF-CSP 2023 第三题 解压缩(50%)
  • ¥30 comfyui openpose报错
  • ¥20 Wpf Datarid单元格闪烁效果的实现
  • ¥15 图像分割、图像边缘提取
  • ¥15 sqlserver执行存储过程报错
  • ¥100 nuxt、uniapp、ruoyi-vue 相关发布问题
  • ¥15 浮窗和全屏应用同时存在,全屏应用输入法无法弹出