#include<stdio.h> #define N 3 #define M 5 int main() { 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]++) { scanf("%d"‚p[i]); } for (i=0;i<N;i++) { sum=0; for (j=0;j<M;j++) { sum+=a[i]ljl; } Pli]=∑ } { for (i=0;i<N;i++){ printf(“第%d行和为:%d\n",i,*p[i]);}}
时间: 2023-06-22 12:20:18 浏览: 64
这是一个C语言程序,目的是计算一个二维数组每行的总和,并将每行的总和存储在一个指针数组中。具体实现过程如下:
1. 定义了一个二维数组a,大小为N行M列,以及一个指针数组p,大小为N。
2. 通过双重循环,从标准输入中读入二维数组a的每个元素。
3. 对于每一行,计算该行的总和,将该行总和的地址存储在指针数组p的对应位置中。
4. 最后再次遍历指针数组p,并输出每行的总和。
需要注意的是,程序中存在一个错误,即第三个for循环的左大括号位置不正确,应该放在第二个for循环的外面。另外,代码中使用了未定义的变量ljl,应该将其改为j。修改后的代码如下:
```c
#include<stdio.h>
#define N 3
#define M 5
int main() {
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]++) {
scanf("%d", p[i]);
}
sum = 0;
for (j=0; j<M; j++) {
sum += a[i][j];
}
p[i] = ∑
}
for (i=0; i<N; i++) {
printf("第%d行和为:%d\n", i, *p[i]);
}
return 0;
}
```