Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何创建二维阵列,其尺寸由用户指定?(C)中_C_Arrays_2d - Fatal编程技术网

如何创建二维阵列,其尺寸由用户指定?(C)中

如何创建二维阵列,其尺寸由用户指定?(C)中,c,arrays,2d,C,Arrays,2d,这是我的尝试。我不能完全确定我对指针的操作。也许这就是我错的原因,也许还有别的情况。我想从用户那里获取尺寸,创建一个方形矩阵,对其元素进行一些操作,并向用户显示原始数据和结果。上一次我通过创建一个100x100数组并指定每行的结束,以及通过常量指定行的结束来完成这项工作。然后我将打印所有元素,直到这个常数。但为4x4矩阵创建100x100阵列似乎并不正确。我可以创建一个更小的数组,但这似乎不是解决问题的正确方法。在C语言中,是否有一种方法可以创建一个与用户指定的大小完全相同的二维数组(它将是一个

这是我的尝试。我不能完全确定我对指针的操作。也许这就是我错的原因,也许还有别的情况。我想从用户那里获取尺寸,创建一个方形矩阵,对其元素进行一些操作,并向用户显示原始数据和结果。上一次我通过创建一个100x100数组并指定每行的结束,以及通过常量指定行的结束来完成这项工作。然后我将打印所有元素,直到这个常数。但为4x4矩阵创建100x100阵列似乎并不正确。我可以创建一个更小的数组,但这似乎不是解决问题的正确方法。在C语言中,是否有一种方法可以创建一个与用户指定的大小完全相同的二维数组(它将是一个正方形数组)。谢谢

#包括
#包括
双*创建矩阵(整数维);
空隙率矩阵(双*矩阵);
内部主(空)
{
int n,i,j;
系统(“cls”);
系统(“70色”);
系统(“暂停”);
puts(“输入矩阵的维度”);
scanf(“%i”和“&n”);
double*pmatrix=createMatrix(n);
对于(i=0;i
您可以直接创建矩阵;你不需要一个函数。替换代码

double * pmatrix = createMatrix(n);
通过声明二维数组的常规方式:

double matrix[n][n];

还有一种使用指针的方法

#include <stdio.h>
#include <stdlib.h>
int main (int argc, char *argv[])
{
    double **pmatrix;
    int rowsize, colsize, i, j;

    printf("Enter the number of rows: ");
    scanf("%d",&rowsize);
    printf("Enter the number of columns: ");
    scanf("%d",&colsize);

    //Allocate memory for 2D array
    pmatrix = malloc(rowsize*sizeof(double*));
    for(i=0;i<rowsize;i++)
    {
        pmatrix[i] = malloc(colsize*sizeof(int));
    }

    //Accepting the values
    for(i=0;i<rowsize;i++)
    {
        for(j=0;j<colsize;j++)
        {
            printf("A %i %i: ", i + 1, j + 1);
            scanf("%lf",&pmatrix[i][j]);
        }
    }

    //Printing the values
    for(i=0;i<rowsize;i++)
    {
        for(j=0;j<colsize;j++)
        {
            printf("%lf\t",pmatrix[i][j]);
        }
        printf("\n");
    }

    //Free the memory
    for(i=0;i<rowsize;i++)
        free(pmatrix[i]);
    free(pmatrix);

    return 0;
}
#包括
#包括
int main(int argc,char*argv[])
{
双**pmatrix;
int rowsize,colsize,i,j;
printf(“输入行数:”);
scanf(“%d”、&rowsize);
printf(“输入列数:”);
scanf(“%d”、&colsize);
//为2D阵列分配内存
pmatrix=malloc(行大小*大小(双*);

对于(i=0;在C中无法创建具有运行时维度的标准二维数组。它必须动态完成。@wallyk type arr[a][b]2501,这是什么问题,你有什么当前代码?这不工作在C。只有C++等,这不工作在C。只有C++等-沃利克1分钟前,它在C工作:我正在考虑这个,现在我会尝试它,我想一开始它,但我读到某处,这不是POS损坏。或者我的老师告诉我的。下次我要测试新的信息。
#include <stdio.h>
#include <stdlib.h>
int main (int argc, char *argv[])
{
    double **pmatrix;
    int rowsize, colsize, i, j;

    printf("Enter the number of rows: ");
    scanf("%d",&rowsize);
    printf("Enter the number of columns: ");
    scanf("%d",&colsize);

    //Allocate memory for 2D array
    pmatrix = malloc(rowsize*sizeof(double*));
    for(i=0;i<rowsize;i++)
    {
        pmatrix[i] = malloc(colsize*sizeof(int));
    }

    //Accepting the values
    for(i=0;i<rowsize;i++)
    {
        for(j=0;j<colsize;j++)
        {
            printf("A %i %i: ", i + 1, j + 1);
            scanf("%lf",&pmatrix[i][j]);
        }
    }

    //Printing the values
    for(i=0;i<rowsize;i++)
    {
        for(j=0;j<colsize;j++)
        {
            printf("%lf\t",pmatrix[i][j]);
        }
        printf("\n");
    }

    //Free the memory
    for(i=0;i<rowsize;i++)
        free(pmatrix[i]);
    free(pmatrix);

    return 0;
}