#include <stdio.h>
#include <stdlib.h>
const int n = 101;
int main() {
int arr[n];
int i,cnt = 0;
while(i != 0){
scanf("%d",&i);
arr[cnt++] = i;
// 把每次输入的数字存给数组中,用次数来代表元素位置
}
for (int i = cnt - 2 ; i >= 0; i--) {
// 这里对cnt-2的解释可以看我文字的解释
printf("%d ", arr[i]);
}
return 0;
}
假设你输入了1,2,3,4,5,0六个数字,对while循环中的cnt而言,可以理解为开始cnt是由1-->6了(while循环中),然后输入的每一个i(元素)在数组中被存入从0开始的位置上,所以cnt-1代表每一个元素在数组的下标,而cnt-2(for循环中)代表除去最后一位输入的数字,之前的每一位数字所对应的下标。这样在for循环中i从cnt-2的位置开始遍历,每一次i--,最后就可以逆序输出除了最后一位数字(如果i最后输入0)的其余每一个数字。

京公网安备 11010502036488号