调用1函数生成2个不同的2D数组

时间:2016-04-14 11:17:49

标签: c arrays function

#include<stdio.h>
#include<stdlib.h>

void generate_matrices(int a[5][5], int b[5][5]);
void print_matrix(int a[5][5]);
void multiply_matrices(int a[5][5], int b[5][5], int c[5][5]);
void calc_trace(int a[5][5]);

int main()
{
    int a[5][5],b[5][5];
    generate_matrices(a,b);
    print_matrix(a);

    return 0;
}

void generate_matrices(int a[5][5], int b[5][5])
{
    int seed,i,j;
    printf("Enter seed integer value: ");
    scanf("%d",&seed);
    printf("\n\nSeed Value is %d\n\n",seed);
    srand(seed);
    for(i=0;i<5;i++) {
        for(j=0;j<5;j++) {
            a[i][j]=rand() %51 + (-25);
            b[i][j]=rand() %51 + (-25); }
    }
}

void print_matrix(int a[5][5])  {

    int i,j;
    printf("Matrix A:\n");
    for(i=0;i<5;i++){
        for(j=0;j<5;j++){
            printf("%d  ",a[i][j]); }
    printf("\n");
    }
    printf("\nMatrix B:\n");
    for(i=0;i<5;i++){
        for(j=0;j<5;j++){
            printf("%d  ",a[i][j]); }
    printf("\n");
    }

}

这是我的一段代码。 generate_matrices函数工作正常,但我需要帮助的函数是print_matrix函数。我需要调用此函数两次,并生成2个不同的数组。目前我在函数中调用了两次a [i] [j],但是我的第二个a [i] [j]需要是b [i] [j]。

问题是,我不明白如何调用1个函数来生成2个不同的数组?如果我还没有说清楚,例如:

(...)

    print_matrix(a)
    print_matrix(b)

(...)


void print_matrix(int a[5][5])
{
(...)
}

所以我调用两次相同的函数来打印2个不同的数组,但是我不明白你怎么能在第一次调用函数时只产生1个数组,然后用另一个变量再次调用同一个函数生产第二个阵列?当然第一次调用函数会产生函数本身创建的所有东西???

仅供参考:我无法更改函数名称,也无法在函数名称等中创建指针。

我希望我已经相对清楚,欢呼。

1 个答案:

答案 0 :(得分:1)

转动此部分代码:

    void print_matrix(int a[5][5])  {

    int i,j;
    printf("Matrix A:\n");
    for(i=0;i<5;i++){
        for(j=0;j<5;j++){
            printf("%d  ",a[i][j]); }
        printf("\n");
        }
    printf("\nMatrix B:\n");
    for(i=0;i<5;i++){
        for(j=0;j<5;j++){
            printf("%d  ",a[i][j]); }
    printf("\n");
    }

}

进入这个:

void print_matrix(int a[5][5])  {

    int i,j;
    for(i=0;i<5;i++){   //removed matrix dependent line
        for(j=0;j<5;j++){
            printf("%d  ",a[i][j]); }
        printf("\n");
        }                 //removed the bottom section of code.

}

然后在主要你这样称呼它:

int main()
{
    int a[5][5],b[5][5];
    generate_matrices(a,b);
    printf("Matrix A:\n");   // tells you which matrix
    print_matrix(a);    // Pass in matrix a
    printf("Matrix B:\n");  // tells you which matrix
    print_matrix(b);  // Pass in matrix b
    return 0;
}

这将彼此独立地打印每个矩阵。这可以通过改变你传递到'print_matrix()&#39;中的矩阵来进一步扩展到N矩阵。功能