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