help me
the problem给定一个矩阵,要求计算并输出该数组的每行每列之和。
输入格式:
第一行为一个正整数n(1<=n<10)。后边是n行,为nXn个整数矩阵,整数间均以一个空格分隔。
输出格式:
具体见样例。其中每个整数包含符号占五位,右对齐,两个数之间隔一个空格。行末无空格。测试用例保证所有整数可以用int型存储。
输入样例:
3
1 2 3
-4 -5 -6
7 8 9
输出样例:
1 2 3 6
-4 -5 -6 -15
7 8 9 24
4 5 6
my program
#include<stdio.h>
int main()
{
int n; scanf("%d",&n);//define the n_X_n nums
int nums,sum_line,sum_row;
int i,j;
for(i=0;i<n;i++){//n X n
for(j=0;j<n;j++){
scanf("%d",&nums);
}
}
for(i=0;i<n;i++){//sum_line
sum_line = 0;
for(j=0;j<n;j++){
sum_line += nums;
}
}
for(j=0;j<n;j++){//sum_row
sum_row = 0;
for(i=0;i<n;i++){
sum_row += nums;
}
}
for(i=0;i<n+1;i++){
if(i<n){
for(j=0;j<n;j++){
printf("%5d ",nums);
}
printf("%5d\n",sum_line);
}
else{
for(j=0;j<n;j++){
if(j=0){
printf("%5d",sum_row);
}
else{
printf("%6d",sum_row);
}
}
printf("\n");
}
}
return 0;
}
你的程序基本上是正确的,只有一个小错误需要修复。在判断if(j=0)的时候,你使用了单个等号= ,这是赋值操作,而不是判断相等的操作。应该使用双等号==来判断是否相等。以下是修复后的代码:
#include <stdio.h>
int main()
{
int n;
scanf("%d", &n); //定义 n_X_n 的矩阵
int nums, sum_line, sum_row;
int i, j;
for (i = 0; i < n; i++)
{
//n X n
for (j = 0; j < n; j++)
{
scanf("%d", &nums[ i]);
}
}
for (i = 0; i < n; i++)
{
//sum_line
sum_line[ i] = 0;
for (j = 0; j < n; j++)
{
sum_line[ i] += nums[ i];
}
}
for (j = 0; j < n; j++)
{
//sum_row
sum_row = 0;
for (i = 0; i < n; i++)
{
sum_row += nums[ i];
}
}
for (i = 0; i < n + 1; i++)
{
if (i < n)
{
for (j = 0; j < n; j++)
{
printf("%5d ", nums[ i]);
}
printf("%5d\n", sum_line[ i]);
}
else
{
for (j = 0; j < n; j++)
{
if (j == 0)
{
printf("%5d", sum_row);
}
else
{
printf("%6d", sum_row);
}
}
printf("\n");
}
}
return 0;
}
修复后的代码将会正确输出每行每列之和。 题目描述:给定一个n x n的矩阵,要求计算并输出该数组的每行每列之和。
输入格式: 第一行为一个正整数n(1<=n<10)。后边是n行,为n x n个整数矩阵,整数间均以一个空格分隔。
输出格式: 具体见样例。其中每个整数包含符号占五位,右对齐,两个数之间隔一个空格。行末无空格。测试用例保证所有整数可以用int型存储。
C++代码如下:
#include <iostream>
using namespace std;
int main()
{
int n;
cin >> n;//定义矩阵大小
int nums, sum_row = {0}, sum_column = {0}; //定义矩阵及行、列之和
for (int i = 0; i < n; i++)//读入矩阵
for (int j = 0; j < n; j++)
cin >> nums;
for (int i = 0; i < n; i++)//计算每行的和
for (int j = 0; j < n; j++)
sum_row += nums;
for (int j = 0; j < n; j++)//计算每列的和
for (int i = 0; i < n; i++)
sum_column += nums;
for (int i = 0; i < n; i++)//输出结果
{
for (int j = 0; j < n; j++)
printf("%5d", nums);
printf("%5d\n", sum_row);
}
for (int i = 0; i < n; i++)
printf("%5d", sum_column);
return 0;
}
这个程序实现了对一个n x n的矩阵,计算并输出该数组的每行每列之和。在代码实现中,首先读入矩阵,然后计算每行的和以及每列的和,并以规定格式输出结果。
需要注意的是,如果使用cin和cout进行输入输出时,需要include <iostream>头文件,并在代码开头添加using namespace std;语句。同时,为了保证输出的整数符号占五位,右对齐,两个数之间隔一个空格,需要使用printf()函数进行输出。
球一个最佳答案谢谢啦!这对我非常重要!{:10_254:}{:10_254:}{:10_254:}
页:
[1]