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做
  • ¥15 phython如何实现以下功能?查找同一用户名的消费金额合并—
  • ¥15 ARIMA模型时间序列预测用pathon解决
  • ¥15 孟德尔随机化怎样画共定位分析图
  • ¥18 模拟电路问题解答有偿速度
  • ¥15 CST仿真别人的模型结果仿真结果S参数完全不对
  • ¥15 误删注册表文件致win10无法开启
  • ¥15 请问在阿里云服务器中怎么利用数据库制作网站
  • ¥60 ESP32怎么烧录自启动程序,怎么查看客户esp32板子上程序及烧录地址
  • ¥50 html2canvas超出滚动条不显示