先生,我是一名新程序员。所以我面临着一些我真正需要解决的新问题。就像我写了一段代码

#include<stdio.h>
 main(){
  int ara[] ={10,20,30,40,50,60,70,80,90,100},i,temp,j;
  for(i=0,j=9;i<10;i++,j--){
      ara[i]=ara[j];
      printf("%d\n",ara[i]); }
    }

我以为结果会是 100,90,80,70,60,50,40,30,20,10 但结果不是这样的......有没有人请告诉我为什么结果显示 100,90,80, 70,60,60,70,80,90,100

最佳答案

在打印值 60 后,即当您尝试进一步访问元素时数组的一半,实际上您将访问那些位于数组中间位置之后的元素。因为您使用 ara[i] = ara[j].. 分配它们,所以您最终会在数组的一半之后重复。
作为:-

ara[0] = ara[9]
ara[1] = ara[8]
ara[2] = ara[7]
ara[3] = ara[6]
ara[4] = ara[5]
ara[5] = ara[4]

最简单的解决方案可能是创建一个临时数组:-
#include<stdio.h>
 main(){
  int ara[] ={10,20,30,40,50,60,70,80,90,100},i,temp[10],j;
  for(i = 9, j = 0; i >= 0; i--, j++){
      temp[j]=ara[i];
   }
  for(i = 0; i < 10; i++){
      printf("%d\n", temp[i]);
  }

}

关于c - 使用数组时出现意外结果,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45946544/

10-11 16:46