C语言 二维数组的动态分配
//*********************************************************
//File name : 08.02.c
//Author : 甜不辣
//Date : 11.24
//Student ID :2019217889
//*********************************************************
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(void)
{
srand(time(NULL));
int m, n, i, j, x = 0, y = 0;
float **q, *p, min;
printf("请输入行数和列数:");
scanf("%d%d",&m,&n);
q = (float **)malloc(sizeof(float *) * m);
if(q == NULL)
{
printf("内存分配错误!");
return (1);
}
p = (float *)calloc(m, sizeof(float) * n);
if(p == NULL)
{
printf("内存分配错误!");
free(q);
exit(1);
}
//分配行数
for(i = 0; i < m; i++)
{
*(q + i) = p + i * n;
}
for (i = 0; i < m; i++)
{
for (j = 0; j < n; j++)
{
q[i][j] = (float)rand();
}
}
min = q[0][0];
for (i = 0; i < m; i++)
{
for (j = 0; j < n; j++)
{
if(min > q[i][j])
{
min = q[i][j];
x = i;
y = j;
}
}
}
printf("该数组为:\n");
for (i = 0; i < m; i++)
{
for (j = 0; j < n; j++)
{
printf("%-7f\t",q[i][j]);
}
printf("\n");
}
printf("其中最小值为%7f,其所在行数为%d,所在列数为%d.",min,x,y);
free(p);
free(q);
return 0;
}