c - 如何使用函数扫描二维数组而不删除其内容
问题描述
作为家庭作业,我需要扫描 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;
}
解决方案
- 在主函数内部,在调用中
input_matrix(matrix_1[][N], N)
传递了无效参数。相反应该传递整个矩阵,比如input_matrix(matrix_1, N)
. - 正如评论中所指出的,最好将矩阵声明为
matrix_1[N][N]
.
推荐阅读
- django - Django的“请求”不是只有在显式调用时才有效吗?
- react-native - 带有滑块范围和过滤的问题
- pattern-matching - 多模式近似/模糊字符串匹配
- php - 在 Wordpress 中按 ID 隐藏帖子和类别中的内容
- sql - 如何在 MS-Access 中按聚合函数排序?
- discord - 如何在 discord.py 中创建归档命令?
- java - 单例模式 | 代码中 volatile 的用途是什么,因为 synchronized 关键字还根据 java 内存模型提供可见性被授予者
- web-scraping - 我如何从 barchart.com 抓取这些股票代码?
- openssl - 用于在 openssl 中签名算法的自定义 OID
- aws-lambda - 模拟 Lambda.invoke 包装但未被调用