c - 我不明白我的代码中发生了什么

标签 c arrays for-loop

这是我的代码。我想反转 array1 中的数字。我除了给定100,90,80,70,60,50,40,30,20,10这个编程之外。但我的程序显示了这个结果:100,90,80,70,60,70,80,90,100。我真的不知道为什么这段代码显示这个结果。我不明白我的代码中发生了什么。

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

最佳答案

循环中的第一次迭代您交换了元素 09,对吗?然后交换元素 18273645。和我走到这一步了?

然后循环继续交换刚刚交换过一次的元素 54,然后是 637281 最后是 90

如果你中途停止循环,它就会起作用。当然,当我说“交换”时,我是自由派,因为正如 lkrabbe 所指出的,你实际上并没有交换元素。你需要做例如

temp = ara1[j];
ara1[j] = ara1[i];
ara1[i] = temp;

如果您尝试在调试器中单步执行代码,上述两个问题都会非常明显,因此这里的教训不是如何修复循环,而是学习如何使用调试器自己找出这些东西。

关于c - 我不明白我的代码中发生了什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36232978/

相关文章:

C printf char以连续方式打印大于等于8个字符

c - 列出 Linux/*nix 上的所有真实用户以及与他们相关的数据

javascript - 将前面的总和添加到数组 - javascript

javascript - 如何循环遍历单选/复选框输入并将所选输入的 id 推送到数组

powershell - 在for循环中循环遍历多个变量

c - 为什么 readdir () 系统调用没有按应有的方式工作(意外输出)?

c - 二叉搜索树插入不与根相关联

c - 如何在C中输入char*?

python - for 循环对其表达式列表求值多少次?

python - 使用 for 循环 Python 为数组赋值