编写完整的程序。
- 程序应该从键盘上读取两个整数: m 和 n 。
- 为动态2D m * n 双精度数组分配内存。
- 根据公式
A[i][j]=(i-5)/(j+1)
初始化数组。
我的代码:
#include <stdio.h>
#include <math.h>
int main() {
int m,n;
scanf ("%d %d",&m &n);
double**A=(double**) malloc (m*size of (double*));
double*B=(double*) malloc (m*n * size of (double));
for (int i=0;i<n;i++){
A[i]=B+i*m;
}
for (int i=0;i<n;i++){
for (int j=0;i<m;j++){
A[i][j]=(i-5)/(j+1);
}
}
free (A);
free (B);
return 0;
}
答案 0 :(得分:4)
几乎没有错:
size
未定义。#include <math.h>
。#include <stdlib.h>
声明malloc()
和朋友。,
中缺少scanf ("%d %d",&m &n);
。malloc()
返回值。}
太多了。检查this section of the C-FAQ,看看您是否正确完成了分配。
想法:通过上面提到的C-FAQ,它将教会你很多,并将成为宝贵的时间投资。
**这是一个很好的代码缩进的示例&amp;格式化(没有修复):
int main()
{
int m;
int n;
scanf("%d %d", &m, &n);
double** A = malloc(m * size of (double*));
double* B = malloc(m * n * size of (double));
for (int i = 0; i < n; i++)
{
B[i] = B + i * m;
}
for (int i = 0; i < n; i++)
{
for (int j = 0; i < m; j++)
{
A[i][j] = (i - 5) / (j + 1);
}
}
free(A);
free(B);
return 0;
}
好吧,我修复了多余的}
。