【发布时间】:2015-11-17 01:03:02
【问题描述】:
我正在尝试在 C 中编写获取两个二维数组的函数,然后它检查数组 2 中对于数组 1 中的每一行是否有相等的列。 每次有匹配时我都需要打印,以及数组 1 中与数组 2 中匹配最多的行号。
必须使用简单的数组来完成(例如arr[][m])。
我的代码不起作用:
void main()
{
int i, j,k, flag = 0,count = 0,max_r,max = 0;
int arr[M][M] = {1,2,3,4,5,6,7,8,9}, arr1[M][M]={4,4,6,5,5,4,8,6,9};
i = 0;
while (i < M)
{
j = 0;
k = 0;
while (j < M)
{
if (arr[i][j] == arr1[j][k])
flag = 1;
else
flag = 0;
j++;
if (j == M)
{
if (flag == 1)
{
printf("row %d in arr eqauls to calm %d in arr1\n", i+1, k+1);
count++;
}
k++;
k = 0;
}
}
if (count > max)
{
max = count;
max_r = i;
}
count = 0;
i++;
}
printf("the max row is:%d\n", max_r+1);
getche();
}
【问题讨论】:
-
请说明您的程序应该做什么,以及它正在做什么。
-
看来你的数组声明有问题...cboard.cprogramming.com/c-programming/…
-
程序需要在每次数组2中的列等于数组1中的行时打印。最后打印数组1中与数组2中的列匹配最多的行数。跨度>
-
欢迎来到 Stack Overflow。请尽快阅读About 页面。您的代码几乎是 MCVE (How to create a Minimal, Complete, and Verifiable Example?),但缺少诸如
enum { M = 3 };(或者您是否使用#define M 3)之类的详细信息。还缺少对出了什么问题以及您如何遇到问题的解释。你的while循环应该是for循环;将循环控件保持在循环的顶部会更干净。您可能应该在内部循环之前将flag设置为 1,如果不匹配则将其设置为 0,并在循环之前将其设置为break。