函数原型为: void fun(int **p,int m, int n); 根据下面的说明,编写该函数。 (1)函数功能:求出二维数组首行元素之和,然后将其加到数组所有

急!函数原型为: 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的值,然后输入二维数组的值,最后输出运算结果):

img

代码:

#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;
    }
}