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