输入 M 和 N,通过 alloc_mem 子函数动态申请一片内存,定义一个 MXN 的二维数
组,并通过 console 口输入,通过指针的方式对二维数组进行访问,找出其中最大 值,以及所有数据的平均值
其中,
仅供参考,谢谢!
#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>
#include <limits.h>
bool alloc_mem(int **p, int length)
{
return (*p = (int *)malloc(length * sizeof(int))) != NULL ? true : false;
}
int main(int argc, char *argv[])
{
int M, N, max = INT_MIN, sum = 0;
do
{
scanf("%d%d", &M, &N);
} while (M <= 0 || N <= 0);
int *p = NULL;
_Bool result = alloc_mem(&p, M * N);
if (result == true)
puts("内存申请成功!");
else
{
puts("内存申请失败!");
exit(-1);
}
int i, j;
for (i = 0; i < M; i++)
{
for (j = 0; j < N; j++)
{
scanf("%d", &p[i * M + j]);
if (p[i * M + j] > max)
max = p[i * M + j];
sum += p[i * M + j];
}
}
printf("\n\n最大值:%d\n平均值:%.1f\n\n", max, 1.0 * sum / (M * N));
free(p);
p = NULL;
return 0;
}
望采纳!!点击该回答右侧的“采纳”按钮即可采纳!!
你需要按照以下步骤来完成这道题:
1.在main函数中,首先输入M和N,然后调用alloc mem函数动态申请一片内存。
2.在alloc mem函数中,使用malloc函数申请一片内存。
3.在alloc mem函数中,如果申请内存成功,则将申请的内存地址赋给p,并返回true。
如果申请内存失败,则返回false。
4.在mai函数中,如果申请内存成功,则使用指针的方式对二维数组进行访问,找出其中
最大值,以及所有数据的平均值。