关于c语言数组逆序问题

为什么数组逆序第一个for循环中要从i=0开始?i为什么要小于数组长度?
第二个for循环要从i=9开始?i为什么要大于等于0?
#include <stdio.h>
#define N 10

int main() {
int i;
int a[N];//数组长度为10

/*
int n;
scanf("%d",&n);//可以随意定义输入元素的数量,N只是数组元素的上限。
*/
for (i = 0; i < 10; i++) {
    scanf("%d", &a[i]);
}

printf("逆序输出:");

for (i = 9; i >= 0; i--) {
    printf("%d ", a[i]);
}

return 0;

}

你在问i的取值范围之前,不应该先问i是干什么的吗,你都不知道i是干什么的,那它是多少跟你有什么关系呢
i是用来作为数组下标使用的,数组下标从0开始,到n-1结束(n是数组长度),那么i的取值范围自然也是从0开始,到n-1,i<n不就是最大能取到n-1吗
如果是逆序遍历,i从最大值开始取,取到0结束,那么如果n是10,i不就从9开始到0结束吗

把问题背景写出来,直接问?咋回答
你得理解数组的下标访问。

img


所以第一个for循环是,你将一些值按照正序的方式存入数组中。例如将7存入a[0],将4存入a[1],直到存进了十个数,你数数0-9是十个数,还是0-10为十个数,就明白为什么i<10了,当然也可以写成i<=9
第二个for循环是,你将已经存好的值按照逆序的方式输出。例如,第一个输出a[9]中的数,第二个输出a[8]中的数,直到输出第十个a[0]中的数
够详细了吧,望采纳

看你把初始数据存在哪里,
如果你把第一个数据存在 下标为0的位置,那么对于数据长度为10的数组来说,下标最大当然 是9,所以要小于10

同理第二个for循环 肯定要大于等于0