反向打印整数数组

Ric*_*cky 3 c arrays

这是以相反顺序打印整数数组的相当简单的问题.虽然每当我尝试打印时,它最终都会显示垃圾值.以下是我的计划.

#include <stdio.h>
#include <conio.h>
int main()
{
    int temp = { '\0' };
    int num[9];
    int i;
    int j = 8;

    printf("Enter 8 numbers\n");
    for (i = 0; i < 8; i++)
    {
        scanf_s("%d", &num[i], 1);
    }
    for (i = 0; i <= j; i++, j--)
    {
        temp = num[i];
        num[i] = num[j];
        num[j] = temp;  
    }
    printf("\nThe numbers in reverse are\n");
    for (i = 0; i <=8; i++)
    {
        printf("%d\n", num[i]);
    }
    _getch(); 
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

假设我输入的数字从1到8,它会反向打印数字,但它打印的第一个值是垃圾值.我知道我可以使用和If语句来对抗这种情况,但有没有办法在不使用if的情况下解决这个问题?

das*_*ght 6

你在这里犯了两个错误:

  • 对于8个数字,最高项的索引是7,而不是8.设置j7初始化以解决此问题.
  • 当您从索引零处迭代8个数字时,请使用运算符,<或者!=不要<=避免一个一个错误.你的第一个循环正确,但最后一个循环被打破.

此外,您可能希望将数组的大小减小到8,因为第9个元素未使用.