Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.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_Linux_Compare_String Comparison - Fatal编程技术网

如何比较数组在C中是否相反?

如何比较数组在C中是否相反?,c,arrays,linux,compare,string-comparison,C,Arrays,Linux,Compare,String Comparison,C语言 我想比较一个数组和它的反向形式,并检查它是否相同 例如,arr1=5 5 8 5 反向arr1=5 5 8 5 5 5 然后输出结果将是:数组反过来是相同的 出于某种原因,当我尝试比较我的两个阵列时,它总是说它是相同的,即使它不是。 例如:输入7 8 9。相反的是9 8 7,这与输入的不同。然而,我的代码说它是 我如何修正比较,使结果准确?请告知,谢谢 我尝试使用goto显示结果。这是我的代码(函数): void函数(int*arr) { 内部j、c、温度、尺寸; 尺寸=尺寸(arr);

C语言
我想比较一个数组和它的反向形式,并检查它是否相同

例如,arr1=5 5 8 5
反向arr1=5 5 8 5 5 5

然后输出结果将是:数组反过来是相同的

出于某种原因,当我尝试比较我的两个阵列时,它总是说它是相同的,即使它不是。

例如:输入7 8 9。相反的是9 8 7,这与输入的不同。然而,我的代码说它是

我如何修正比较,使结果准确?请告知,谢谢

我尝试使用goto显示结果。这是我的代码(函数):

void函数(int*arr)
{
内部j、c、温度、尺寸;
尺寸=尺寸(arr);
int old[大小];
int新[大小];
/*从用户输入打印原始数组*/
printf(“输入数组:”);

对于(j=0;j您无法使用sizeof获得数组的大小。您应该打印出size并查看该值给出的值,而不是数组的大小

你总是得到“相同”的原因是你实际上没有比较值。你是在给temp分配arr[j]。if(temp=arr[j])应该是if(temp==arr[j])。我想你会发现它不再是相同的了

解决此问题的更简单方法是:

void checkReverse(int* arr, int arrSize)
{
   // Loop through the array until you have hit the middle
   for (int i = 0; i < (arrSize - i); i++)
   {
      // Check the element to the element in the same place counting from the back
      if (arr[i] != arr[arrSize - i - 1])
      {
         // If we find any that don't match, we know it's not the same and can return
         printf("Array is NOT the same in reverse.\n");
         return;
      }
   }

   // If we made it this far, they are the same
   printf("Array is the same in reverse.\n");
   return;
}
void checkReverse(int*arr,int arrSize)
{
//在阵列中循环,直到击中中间
对于(int i=0;i<(arrSize-i);i++)
{
//从后面计数时,检查同一位置的元件
如果(arr[i]!=arr[arrSize-i-1])
{
//如果我们发现任何不匹配的,我们知道它是不一样的,可以返回
printf(“数组反过来不一样。\n”);
回来
}
}
//如果我们能做到这一点,他们是一样的
printf(“数组反向相同。\n”);
回来
}

无法使用sizeof获取数组的大小。您应该打印出大小,然后查看该值给您的值,它不会是数组的大小

你总是得到“相同”的原因是你实际上没有比较值。你是在给temp分配arr[j]。if(temp=arr[j])应该是if(temp==arr[j])。我想你会发现它不再是相同的了

解决此问题的更简单方法是:

void checkReverse(int* arr, int arrSize)
{
   // Loop through the array until you have hit the middle
   for (int i = 0; i < (arrSize - i); i++)
   {
      // Check the element to the element in the same place counting from the back
      if (arr[i] != arr[arrSize - i - 1])
      {
         // If we find any that don't match, we know it's not the same and can return
         printf("Array is NOT the same in reverse.\n");
         return;
      }
   }

   // If we made it this far, they are the same
   printf("Array is the same in reverse.\n");
   return;
}
void checkReverse(int*arr,int arrSize)
{
//在阵列中循环,直到击中中间
对于(int i=0;i<(arrSize-i);i++)
{
//从后面计数时,检查同一位置的元件
如果(arr[i]!=arr[arrSize-i-1])
{
//如果我们发现任何不匹配的,我们知道它是不一样的,可以返回
printf(“数组反过来不一样。\n”);
回来
}
}
//如果我们能做到这一点,他们是一样的
printf(“数组反向相同。\n”);
回来
}

您需要使用以下两点修改代码:

  • 在代码中,size表示数组中的元素数是否正确?因此,要正确计算它,请替换
  • size=sizeof(arr)/sizeof(int);

    sizeof
    提供数组占用的内存大小,因此对于三个整数的数组,它提供3*int大小。要计算数组的元素,需要使用sizeof(数组)并将其与数据类型的大小相除

  • 您需要遍历循环并比较原始数组和反向数组的每个元素,以确认它们是否相同
  • 因此,您需要将比较逻辑替换为:

    /* Compare original array with reversed array */
      for(i=0;i < size;i++)
      {
          if(new[i] != old[i]){
              printf("Array is not the same in reverse\n");
              return;
          }
      }
      printf("Array is the same in reverse\n");
      return;
    
    /*将原始数组与反向数组进行比较*/
    对于(i=0;i
    您需要使用以下两点修改代码:

  • 在代码中,size表示数组中的元素数是否正确?因此,要正确计算它,请替换
  • size=sizeof(arr)/sizeof(int);

    sizeof
    提供数组占用的内存大小,因此对于三个整数的数组,它提供3*int大小。要计算数组的元素,需要使用sizeof(数组)并将其与数据类型的大小相除

  • 您需要遍历循环并比较原始数组和反向数组的每个元素,以确认它们是否相同
  • 因此,您需要将比较逻辑替换为:

    /* Compare original array with reversed array */
      for(i=0;i < size;i++)
      {
          if(new[i] != old[i]){
              printf("Array is not the same in reverse\n");
              return;
          }
      }
      printf("Array is the same in reverse\n");
      return;
    
    /*将原始数组与反向数组进行比较*/
    对于(i=0;i
    如果要使用递归解决此问题

    #include <stdio.h>
    
    int compare(int *arr, int p, int q)
    {
        /* base case, if we are at or pass the middle point */
        if (p >= q)
            return 1;
    
        if (arr[p] != arr[q]) {
            return 0;
        } else {
            return compare(arr, p + 1, q - 1);
        }
    }
    
    int main(int argc, char *argv[])
    {
        int arr1[] = {5, 5, 8, 8, 5, 5};
    
        size_t array_size = sizeof(arr1) / sizeof(int);
    
        int first = 0;
        int last = array_size - 1;
    
        if (compare(arr1, first, last)) {
            printf("Array is same in reverse\n");
        } else {
            printf("Array is not same in reverse\n");
        }
    
        return 0;  
    }
    
    
    #包括
    int比较(int*arr,int p,int q)
    {
    /*基本情况,如果我们处于或通过中间点*/
    如果(p>=q)
    返回1;
    if(arr[p]!=arr[q]){
    返回0;
    }否则{
    返回比较(arr、p+1、q-1);
    }
    }
    int main(int argc,char*argv[])
    {
    int arr1[]={5,5,8,8,5,5};
    大小数组大小=sizeof(arr1)/sizeof(int);
    int first=0;
    int last=数组大小-1;
    if(比较(arr1、第一个、最后一个)){
    printf(“数组反向相同\n”);
    }否则{
    printf(“数组反向不相同\n”);
    }
    返回0;
    }
    
    如果要使用递归解决此问题

    #include <stdio.h>
    
    int compare(int *arr, int p, int q)
    {
        /* base case, if we are at or pass the middle point */
        if (p >= q)
            return 1;
    
        if (arr[p] != arr[q]) {
            return 0;
        } else {
            return compare(arr, p + 1, q - 1);
        }
    }
    
    int main(int argc, char *argv[])
    {
        int arr1[] = {5, 5, 8, 8, 5, 5};
    
        size_t array_size = sizeof(arr1) / sizeof(int);
    
        int first = 0;
        int last = array_size - 1;
    
        if (compare(arr1, first, last)) {
            printf("Array is same in reverse\n");
        } else {
            printf("Array is not same in reverse\n");
        }
    
        return 0;  
    }
    
    
    #包括
    int比较(int*arr,int p,int q)
    {
    /*基本情况,如果我们处于或通过中间点*/
    如果(p>=q)
    返回1;
    如果(arr[p]!=arr[q]){
    返回0;
    }否则{
    返回比较(arr、p+1、q-1);
    }
    }
    int main(int argc,char*argv[])
    {
    int arr1[]={5,5,8,8,5,5};
    大小数组大小=sizeof(arr1)/sizeof(int);
    int first=0;
    int last=数组大小-1;
    如果(比较