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
发表评论