加载中...

浙江理工大学入队200题——11D

问题 D: 零基础学C/C++119——矩阵整理

题目描述

输入一个m×n的矩阵,计算每行的和。将行号最高的行与矩阵的第一行进行位置交换,输出调整后的矩阵以及每行的和。

输入

输入为多组测试数据。

先输入矩阵的行数、列数n和m(M,N均不超过10),另起一行后再输入一个m×n的整数矩阵,每列数据用空格隔开;每行数据用回车隔开。

输出

整理后的数据以及每行的和。

样例输入 Copy

3 4
1 3 6 2
2 4 11 1
4 5 6 7

样例输出 Copy

4 5 6 7 22
2 4 11 1 18
1 3 6 2 12

题解

直接在列上多加一行,在每一行计算sum填充到a[m]内(行列初始为0)
然后输出时先输出最后一行,然后是n-2行,然后是第一行

代码(AC)

点击查看代码
#include <stdio.h>
int main (){
	int n,m;
	while(scanf("%d%d",&n,&m)!=EOF)
	{
		int a[n][m+1];//行n 列m 
		for(int i=0;i<n;i++)
		{
			a[i][m]=0;
		}
		for(int i=0;i<n;i++)
		{
			for(int j=0;j<m;j++)
			{
				scanf("%d",&a[i][j]);
				a[i][m]=a[i][m]+a[i][j];
			}
		}
		for(int i=0;i<m+1;i++)
		{
			printf("%d",a[n-1][i]);
			if(i<m) printf(" ");
			if(i==m) printf("\n");
		}//最后一行
		for(int i=1;i<n-1;i++)
		{
			for(int j=0;j<m+1;j++)
			{
				printf("%d",a[i][j]);
				if(j<m) printf(" ");
				if(j==m) printf("\n");
			}
		}//中间
		for(int i=0;i<m+1;i++)
		{
			printf("%d",a[0][i]);
			if(i<m) printf(" ");
			if(i==m) printf("\n");
		}//第一行
	}
	return 0;
}
posted @ 2022-10-29 10:21  shany212  阅读(35)  评论(0编辑  收藏  举报