题目:
利用指针数组求数组各行元素之和,并分别输出每行的求和结果。
测试输入:
54 21 36 58 4 78 46 2 35 47 69 28 91 51 32
预期输出:
第0行和为:173
第1行和为:208
第2行和为:271
参考代码:
#include<stdio.h>
int main()
{
int N,M;
scanf("%d%d",&N,&M);
int a[N][M];
int *p[N] ;
int i,j,sum;
for(i=0;i<N;i++)
{
for(p[i] = a[i] ; p[i] < a[i]+M ; p[i]++)//p[i] = a[i] 将指针 p[i] 初始化为指向二维数组 a[i] 的首地址。这里的 a[i] 表示二维数组的第 i 行的首地址。p[i] < a[i] + M 是循环的条件,它判断指针 p[i] 是否还在当前行的有效范围内。a[i] + M 表示当前行的末尾地址,M 是二维数组每行的元素个数
{
scanf("%d",p[i]);//在循环体中,scanf("%d", p[i]) 用于输入一个整数,并将其存储到指针 p[i] 指向的位置。这样就实现了逐个输入二维数组的元素。
}
}
for(int i=0;i<N;i++)
{
int sum=0;
for(p[i]=a[i];p[i]<a[i]+M;p[i]++)
{
sum+=*p[i];
}
printf("第%d行和为:%d\n",i,sum);
}
return 0;
}