首页 > 解决方案 > 如何使用函数扫描二维数组而不删除其内容

问题描述

作为家庭作业,我需要扫描 N 个矩阵和一个用户输入的整数,并在不使用指针的情况下扫描是否有任何矩阵值包含该数字。

一旦我完成扫描数组并退出函数,数组的内容就会重置为零,或者如果我不初始化数组,则将其丢弃。

#pragma warning(disable:4996)

#include<stdio.h>

#define N 2

int exist(int matrix[][N], int elem);

void input_matrix(int matrix[][N], int size);


void main()
{
    int matrix_1[][N] = { 0 }, matrix_2[][N] = { 0 }, matrix_3[][N] = { 0 };

    int elem;
    printf("please enter values of squared matrix:\n");
        input_matrix(matrix_1[][N], N);
        //(input_matrix(&matrix_2[N][N]));
    //  (input_matrix(&matrix_3[N][N]));
    printf("please enter number to search for in the matrix:\n");
    scanf("%d", &elem);
    if (exist(matrix_1,elem))
        //printf("exist.");//the next part of h.w to be written when input func works

}

void input_matrix(int matrix[][N], int size)//something here fishy
{
    int i, j;
    for (i = 0; i < size; i++)
    {
        for (j = 0; j < size; j++)
        {
            scanf("%d", &matrix[i][j]);
        }
    }
}
int exist(int matrix[][N], int elem)
{
    int i, j;
    int flag = 0;
    for (i = 0; i < N; i++)
    {
        for (j = 0; j < N; j++)
        {
            if ((matrix[i][j]) == elem)
            {
                flag = 1;
                break;
            }
        }
    }
    return flag;
}

标签: carraysfunction

解决方案


  1. 在主函数内部,在调用中input_matrix(matrix_1[][N], N)传递了无效参数。相反应该传递整个矩阵,比如input_matrix(matrix_1, N).
  2. 正如评论中所指出的,最好将矩阵声明为matrix_1[N][N].

推荐阅读