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


发表评论