【问题标题】:Problems with C language code [closed]C语言代码的问题[关闭]
【发布时间】:2018-06-22 21:25:24
【问题描述】:

编写一个完整的程序。

  • 程序应从键盘读取两个整数:mn
  • 为动态二维 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;
}

【问题讨论】:

  • C# 和 C 是两种截然不同的语言
  • 哦,对不起,我标记错了
  • problems with c language code 是一个真正可怕的标题——它可能适用于网站上的每个 c/c++/c# 帖子。请阅读How to Ask 并采取tour
  • 是的,但是 dint compile:( @MarkBenningfield
  • @robertpeterfernandes:好吧,我建议您启用编译器上的所有警告并编辑代码,直到可以编译为止。

标签: c multidimensional-array


【解决方案1】:

很少有问题:

  • size 未定义。
  • #include &lt;math.h&gt; 不需要,因为您不调用任何数学函数。
  • 严格来说,您应该#include &lt;stdlib.h&gt;,因为这声明了malloc() 和朋友。
  • scanf ("%d %d",&amp;m &amp;n); 中缺少 ,
  • 无需转换malloc()返回值。
  • 变量名始终以小写字母开头。
  • 您的} 太多了。
  • 缩进和代码格式真的很糟糕,自找麻烦。**
  • ...

检查this section of the C-FAQ,看看您是否正确完成了分配。

想法:通读上面提到的 C-FAQ,它会教给你很多东西,而且会成为宝贵的时间投资。

**这里是一个很好的代码缩进和格式的例子(没有修复):

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

好吧,我修正了多余的}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-27
    • 2012-05-14
    • 1970-01-01
    • 2011-09-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多