c语言数组逆序问题 求助大佬

程序应用数组存储用户输入的正整数序列(个数不大于20)。并在原数组空间完成逆序存放,要求完善程序代码。

裁判测试程序样例:
#include <stdio.h>
#define N 20
int main(){
int i=0,a[N];
do{
scanf("%d",a+i);
}while(a[i++]>0);
{

/* 请在这里填写答案 */

}
for(i=0; a[i]>0; i++)
printf("%5d",a[i]);
return 0;
}
输入格式:
一行中输入若干正整数,数据间以空格为间隔,负数表示输入结束。

输出格式:
输出逆序后的整数序列,每个数显示格式:占5位,右对齐。。

输入样例:
10 11 12 13 14 15 -5
结尾无空行
输出样例:
15 14 13 12 11 10
结尾无空行

#include <stdio.h>

#define N 20

int main()

{

    int i = 0, a[N];

    do

    {

        scanf("%d", a + i);

    } while (a[i++] > 0);

    {

        int j,t;

        for(j=0,i-=2;j<i;j++,i--)

        {

            t=a[i];

            a[i]=a[j];

            a[j]=t;

        }

        /* 请在这里填写答案 */

    }

    for (i = 0; a[i] > 0; i++)

        printf("%5d", a[i]);

    return 0;

}

追问

大佬那个for循环括号里的是什么意思啊 还有那个为什么是i-=2

温馨提示:答案为网友推荐,仅供参考
第1个回答  2021-11-01
编写一个程序,读入一组整数(不超过20个),并把它们保存在一个整型数组中。当用户输入0时,表示输入结束。然后程序将把这个数组中的值按逆序重新存放,并打印出来。要求:(1)只能定义一个数组;(2)在交换两个数组元素的值时,必须使用单独定义的一个函数swap。例如:假设用户输入了一组数据:7 19 -5 6 2 0,那么程序将会把前五个有效数据保存在一个数组中,即7 19 -5 6 2,然后把这个数组中的值按逆序重新存放,即变成了2 6 -5 19 7,然后把它们打印出来。输入格式:输入只有一行,包括若干个整数,最后一个整数是0。输出格式:输出只有一行,包括若干个整数,即逆序排列后的结果。
第2个回答  2021-10-31
为了实现数组的逆序,在读入循环结束以后,先把变量i的值减2,让它指向最后一个有效的数据。然后再另设一个变量j=0,当i>j时进行循环{交换a[i]和a[j]的值,然后i--;j++;}
第3个回答  2021-10-31
已经有正确的回答了,可以参考1991的回答。
第4个回答  2021-10-31
将一个从键盘输入的整数存放到一个数组中,通过程序的运行按照数组中的逆序输出该整数,利用递归的方法解决问题。 算法思想 设计函数实现数据的逆序存放,设定形参数组接收实参数组的地址,来存储数据.