Problem D: 二维数组每行求和

Time Limit: 1 Sec  Memory Limit: 128 MB
Submit: 43  Solved: 23
[Submit][Status][Forum]

Description

定义一个二维数组(数组元素为整数),两个维度均不超过20。

从键盘输入m,n的值分别作为二维数组实际存储数据的维度,使用循环从键盘给二维数组赋值。

最后输出二维数组每行元素的和

Input

输入数据:

第一行为数组的两个维度m,n。

第二行为数组的元素(m*n个)。

Output

每行元素的和,所有结果输出在一行上,两个数据之间有空格,最后一个数据的后面没有空格。

Sample Input

2 3
-1 -1 3 4 5 6

Sample Output

1 15

HINT



解题法有很多记录一下这种比较费劲的方法吧。

思路不是我的,我想的是直接在main传递每一行的地址,然后由函数完成一维数组的计算。这样比较简单。

下面记录代码:

#include<stdio.h>

void f(int (*p)[20],int m,int n)
{
	int row_sum_res;
	/*
	还是刚刚的问题,,没看懂你这在干啥 
	题目要求是任意的,不是就两行三列 
	注意下二维数组传参 
	*/ 
	/* 
	for(i=0;i<=m-1;i++)
	c=c+*(p+i);
	for(i=m;i<=m*n-1;i++)
	b=b+*(p+i);
	*/
	for(int i=0;i<m;i++)
	{
		//外层行
		row_sum_res = 0;//置为0 
		for(int j=0;j<n;j++)
		{
			//这里开始计算和了
			row_sum_res+=*((p[i])+j);
			//printf("\nt:%d,%d\n",i,j); 
		}
		printf("%d",row_sum_res); 
		//在这里判断是不是最后一个数输出空格
		if(i!=m-1) printf(" ");
	} 
	
}
int main()
{
	int a[20][20],m,n,i;
	scanf("%d %d",&m,&n);
	/*这里是不是应该嵌套了啊?
	行列两层循环,外层行内层列,或者反过来。。 
	*/ 
	for(i=0;i<m;i++){
		for(int j=0;j<n;j++)
		{
			scanf("%d",&a[i][j]);
		}
		
	}
	
	f(a,m,n);//传递参数的时候传m n完事 
}
以上记录完成,二维数组传参详见上一篇日志 https://mooncn.win/study/430.html 

发表评论

路人甲 表情
看不清楚?点图切换 Ctrl+Enter快速提交

网友评论(0)

sitemap