【指针】打印数组各行的和

描述

实现一个函数PrintSum,能够打印二维数组指定区间内的各行之和。

主函数里的代码已经给出,请补充完整,提交时请勿包含已经给出的代码。

int main()
{
int n, m, i, j, a[20][20];
scanf("%d%d", &n, &m);
for(i=0;i<n;i++)
for(j=0;j<m;j++)
scanf("%d", &a[i][j]);
int (*p)[20] = a;
while(scanf("%d%d", &i, &j)!=EOF)
{
PrintSum(p+i, p+j, m);
}
return 0;
}
输入

输入数据的第一行为n和m,表示二维数组的行数和列数,接下来有n行,每行有m个整数,表示数组的n个元素,接下来有若干行,每行两个整数i和j(0<=i, j<20),表示给定数组的行下标,直到文件结束为止。

输出

针对每对行下标i和j,输出第i行到第j行(注意下标从0开始)各行的元素和,每行一个。

样例输入

3 4
1 2 3 4
2 3 4 5
3 4 5 6
0 1
0 2

样例输出

10
14
10
14
18

扫描二维码关注公众号,回复: 8971228 查看本文章

题目来源

TZOJ

分析:
复习一下指针,二维数组的指针运用,具体可以参考代码。

代码:
#include<bits/stdc++.h>
using namespace std;
void PrintSum(int (*a)[20],int (*b)[20],int m)
{
int sum=0;
int i=0,j;
while(a[i]<=*b)
{
sum=0;
for (j=0;j<m;j++)
{
sum+=a[i][j];
}
printf("%d\n",sum);
i++;
}
}
int main()
{
int n, m, i, j, a[20][20];
scanf("%d%d", &n, &m);
for(i=0;i<n;i++)
for(j=0;j<m;j++)
scanf("%d", &a[i][j]);
int (*p)[20] = a;
while(scanf("%d%d", &i, &j)!=EOF)
{
PrintSum(p+i, p+j, m);
}
return 0;
}

发布了122 篇原创文章 · 获赞 0 · 访问量 4664

猜你喜欢

转载自blog.csdn.net/Skynamer/article/details/104152415
今日推荐