c - 使用数组时出现意外结果

标签 c

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

#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/

相关文章:

c - IEEE 754 : How exactly does it work?

c - 那么这2种socket处理方式有什么区别呢?

c - 在没有哨兵的情况下反转循环双端队列

c++ - 如何通过程序扫描系统内存?

c - 为什么 int 可以容纳 10 位数字,但不能容纳另一个整数的 9 位数字?

c - 如何使用一维数组在 C 中存储多个字符串或创建一个字符串数组?

c - 我的代码中出现运行时错误

c - 如何计算 ls 多列显示所需的列宽?

c - 如何防止 Windows WriteConsole() 默认使用宽字符

c - C 中的嵌套结构访问