Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
两种C语言数组的比较_C_Arrays - Fatal编程技术网

两种C语言数组的比较

两种C语言数组的比较,c,arrays,C,Arrays,我正在解决一个学校的问题。我应该比较两个数组,找出不匹配和完全匹配的数目。示例:我有Array[4]={8,4,8,8}和ArrayB[4]={4,8,8,4}。它应该打印出1个完全匹配和3个不匹配。我的代码如下:。完美匹配有效,但不匹配无效。请帮助:Mis_match表示它具有相同的值,但在数组中的不同位置。完全匹配意味着它在两个数组中具有相同的值和相同的位置 int m,n,j; int perfect = 0; int mis_match=0; for (m=0;m<4;m++) {

我正在解决一个学校的问题。我应该比较两个数组,找出不匹配和完全匹配的数目。示例:我有Array[4]={8,4,8,8}和ArrayB[4]={4,8,8,4}。它应该打印出1个完全匹配和3个不匹配。我的代码如下:。完美匹配有效,但不匹配无效。请帮助:Mis_match表示它具有相同的值,但在数组中的不同位置。完全匹配意味着它在两个数组中具有相同的值和相同的位置

int m,n,j;
int perfect = 0;
int mis_match=0;
for (m=0;m<4;m++)
{
  if(A[m]=B[m])
     perfect++;
     A[m]==B[m]=-1;
  else 
     for (n=0;n<4;n++)
     {
        for (j=0;j<4;j++)
        {
           if(A[n]== B[j])
           mis_match++;
           break;
         }
     }
    printf("we have %d perfect matches, %d mismatches", perfect,mis_match);
    return 0;
intm,n,j;
int-perfect=0;
int mis_match=0;

对于(m=0;m,您在这里似乎有一些错误。首先:

int perfect, mis_match; // need to be intialized.
因此,您必须将它们设置为
0

int perfect = 0;
int mis_match = 0;
您还必须注意:
if(A[m]=B[m])
(在第一个循环中)应该是
if(A[m]==B[m])
(您的比较运算符错误)

在第二个不匹配集中,如果数组大小相同,则只需执行
数组长度-matches=不匹配
,因为如果不匹配,则为不匹配。

代码:

int a[4] = {8,4,8,8};
int b[4] = {4,8,8,4};
int mc = 0;
for(int i=0; i < 4; ++i)
  if (a[i] == b[i])
    ++mc;
printf("we have %d perfect matches, %d mismatches", mc, 4 - mc);
inta[4]={8,4,8,8};
int b[4]={4,8,8,4};
int mc=0;
对于(int i=0;i<4;++i)
如果(a[i]==b[i])
++mc;
printf(“我们有%d个完全匹配,%d个不匹配”,mc,4-mc);

据我所知,您不需要使用任何嵌套循环,这会增加时间复杂性。我认为这很简单。
这是密码--

intmain(){
int A[4]={8,4,8,8};
int B[4]={4,8,8,4};
int-perfect=0;
int mis_match=0;
对于(int i=0;i<4;i++){
如果(A[i]==B[i])
完美++;
其他的
mis_match++;
}
printf(“我们有%d个完全匹配,%d个不匹配”,完美,不匹配);

首先,您需要将变量
mis_match
初始化为
0
。实际上您甚至不需要这个变量。您只需将第一个数组的每个元素与第二个数组的每个元素进行检查,如果匹配,则递增
perfect
。然后计算数组大小与之间的差异ode>perfect
。这是不匹配的数量。 修改后的代码应该如下所示

int perfect=0,m=4;
int A[4]={8,4,8,8},B[4]={4,8,8,4};
for(i=0;i<m;i++)   
{
    if(A[i]==B[i])  
        perfect++;
}
printf("We have %d perfect matches and %d mismatches",perfect,m-perfect);
int-perfect=0,m=4;
int A[4]={8,4,8,8},B[4]={4,8,8,4};

对于(i=0;i不应该仅仅是数组长度的不匹配-完美匹配吗?1.比较运算符是
=
,而不是
=
。2.您尚未初始化
完美
。这是一个无法读取的混乱。正确设置格式和缩进。递归版本如何?您误解了不匹配。不匹配意味着它具有相同的值,但在dif堆栈中的不同位置。@trunguyenhuu在这种情况下,我想。但我假设问题的措辞是匹配还是不匹配。不管怎样,代码的第一位仍然需要修复。
int perfect=0,m=4;
int A[4]={8,4,8,8},B[4]={4,8,8,4};
for(i=0;i<m;i++)   
{
    if(A[i]==B[i])  
        perfect++;
}
printf("We have %d perfect matches and %d mismatches",perfect,m-perfect);