在数组上循环,然后向后循环。[C]

问题描述 投票:0回答:1

我想做一个程序在数组上循环,然后反向循环。如何用更少的代码在C语言中让它变得更好?数组有8个元素!我想做一个在数组上循环然后向后循环的程序。

while (1) {
    if (i == 0) {
        direction = 0; // RIGHT DIRECTION
    }
    if (i == 7) {
        direction = 1; // LEFT DIRECTION
    }
    PORTD = array[i]; // NEEDED ARRAY ELEMENT

    if (direction == 0) {
        i++;
    } else {
        i--;
    }
}
c algorithm
1个回答
2
投票

你可以简化你的代码,让 direction 下一个指数的增量。1-1.

下面是一个修改后的版本。

int i = 0, direction = 1;
for (i = 0;; i += direction) {
    if (i == 0) {
        direction = 1; // RIGHT DIRECTION
    } else
    if (i == 7) {
        direction = -1; // LEFT DIRECTION
    }
    PORTD = array[i]; // NEEDED ARRAY ELEMENT
}

0
投票

正如其他人所指出的,你需要把增量变量的符号反过来, 然后你需要使用一个适当的条件来终止循环。

#include <stdio.h>

int main()
  {
  int i = 0, direction = 1;
  int PORTD, array[8] = {10, 11, 12, 13, 14, 15, 16, 17};

  for (i = 0 ; i >= 0 ; i += direction)
    {
    PORTD = array[i];

    printf("i=%d array[%d]=%d\n", i, i, array[i]);

    if(i == (sizeof(array)/sizeof(array[0]))-1 )
      direction = -1;
    }
  }
© www.soinside.com 2019 - 2024. All rights reserved.