C语言 通过从用户获取输入创建一个二维数组,写一个显示函数在屏幕上打印这个二维数组的内容?

sdnqo3pr  于 2023-04-11  发布在  其他
关注(0)|答案(3)|浏览(140)

我写的代码没有给出用户提供给它的标记输入,而是打印所有随机垃圾值。请帮助解决这个问题。

#include <stdio.h>

void display(int number_1, int number_2)
{
    int marks[number_1][number_2];

    for (int i = 0; i < number_1; i++)
    {
        for (int j = 0; j < number_2; j++)
        {
            printf("The marks of student %d in subject %d is: %d\n", i + 1, j + 1, marks[i][j]);
        }
    }
}

int main()
{
    int a;
    printf("The number of student:\n");
    scanf("%d", &a);
    int b;
    printf("The subject:\n");
    scanf("%d", &b);
    int i;
    int j;
    int marks[i][j];

    for (i = 0; i < a; i++)
    {
        for (j = 0; j < b; j++)
        {
            printf("Enter The marks of student %d in subject %d : \n", i + 1, j + 1);
            scanf("%d", &marks[i][j]);
        }
    }

    display(a, b);

    return 0;
}
0yg35tkg

0yg35tkg1#

数组在文件范围中的此声明

int marks[number_1][number_2];

无效且没有意义。请将其删除。
数组中元素的数量主要由变量ab指定。
所以你需要写

int marks[a][ b];

而不是

int marks[i][ j];

要调用数组marks的函数,需要声明一个接受数组的函数参数。
函数声明可以如下所示

void display( int number_1, int number_2, int marks[number_1][number_2] )
{
    for (int i = 0; i < number_1; i++)
    {
        for (int j = 0; j < number_2; j++)
        {
            printf("The marks of student %d in subject %d is: %d\n", i + 1, j + 1, marks[i][j]);
        }
    }
}

在main中,函数的调用方式如下

display( a, b, marks );
pgpifvop

pgpifvop2#

#include <stdio.h>
int display(int students, int subjects, int marks[students][subjects])
{
    for (int i = 0; i < students; i++)
    {
        for (int j = 0; j < subjects; j++)
        {
            printf("The marks of student %d in subject %d is %d\n", i + 1, j + 1, marks[i][j]);
        }
    }
}

int main()
{
    int m = 2;
    int n = 3;
    int marks[2][3];
    for (int i = 0; i < m; i++)
    {
        for (int j = 0; j < n; j++)
        {
            printf("Enter the marks of student %d in subject %d\n", i + 1, j + 1);
            scanf("%d", &marks[i][j]);
        }
    }
    display(m, n, marks);
    return 0;
}
l0oc07j2

l0oc07j23#

通过从用户获取输入创建一个二维数组。编写一个显示函数来打印此二维数组的内容enter image description here

相关问题