一个互换位子的代码,for语句有疑惑


#include "stdio.h"
main()
{    int a[10]={1,3,5,7,9,11,13,15,17,19},temp,i,j;
    printf("本数据原始的排序顺序为:\n");
    for(i=0;i<10;i++)
        printf("%d    ",a[i]);
    for(i=0;i<(10-1)/2;i++)

    {    j=10-1-i;
        temp=a[i];
        a[i]=a[j];
        a[j]=temp;
        }    
    printf("\n本数据交换后的排序顺序为:\n");
    for(i=0;i<10;i++)
        printf("%d    ",a[i]);
    getchar();
 } 

img


这是一个互换位置的代码;但是第二个for语句是什么意思,为什么0<=i<4.5;而不是一直递增到9呢

  • 互换位置,这就是对半换,【即第一个和最后一个换, 第二个和倒数第二个换,依此类推】,所以条件 应该是 i<= 4(i <=(10 -1) / 2) 或 i < 5 (i < 10 / 2)【不然 9 和 11 就没换】,只要一半就行了

对半交换,左半边与右半边交换,不需要递增到9,另外你写错了,(10-1)/2并不是你想象的4.5,而是 4 ,所以应该改成 i<=(10-1)/2