急!函数原型为: void fun(int **p,int m, int n); 根据下面的说明,编写该函数。
(1)函数功能:求出二维数组首行元素之和,然后将其加到数组所有元素上。
例如 m=3 n=3
1 2 3
4 5 6
7 8 9
交换后:
7 8 9
10 11 12
13 14 15
(2)入口参数:函数形参p、m和n表示:p是 mxn 的二维数组首地址(可能是动态分配获得)。
(3)出口值: 无
如下:
void fun(int **p,int m, int n)
{
int i,j;
int sum = 0;
//计算第一行的和
for(i=0;i<n;i++)
sum += p[0][i];
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
p[i][j] += sum;
}
}
运行示例(先输入m和n的值,然后输入二维数组的值,最后输出运算结果):
代码:
#include <stdio.h>
#include <stdlib.h>
void fun(int **p,int m, int n);
int main()
{
int **a;
int i,j;
int m,n;
//输入数组的行和列
scanf("%d %d",&m,&n);
a = (int**)malloc(m*sizeof(int*));
for(i=0;i<m;i++)
a[i] = (int*)malloc(n*sizeof(int));
//输入数据
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
{
scanf("%d",&a[i][j]);
}
}
fun(a,m,n);
//输出
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
{
if(j<n-1)
printf("%d ",a[i][j]);
else
printf("%d\n",a[i][j]);
}
}
return 0;
}
void fun(int **p,int m, int n)
{
int i,j;
int sum = 0;
//计算第一行的和
for(i=0;i<n;i++)
sum += p[0][i];
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
p[i][j] += sum;
}
}