关于#c语言#的问题

定义一个长度为10的数组a,从键盘输入10个数后逆序输出数组元素。注释:程序调用自定义invert函数,invert函数实现按逆序重新放置数组a中,元素的值( invert函数要实现用递归调用逆序放置数组元素)。数组a中元素的值在main函数中读入,输出重新排序后的数组a。

img


是否正确,错误的话,那里错了呢?
又如何改正呢?
谢谢回答

验证运行了下,结果如图

img

错误的地方显然是循环多了一次,减少一次循环即可,如下图

img

然后,留意到题目是要自定义函数invert,并且递归的方式实现,
所以上述虽然功能实现了但是不符合题意要求
下面代码是递归的方式实现

#include <stdio.h>
#define N 10
void invert(int *arr,int n,int i){
    if(i>=n/2){
        return;
    }
    int    t=arr[i];
    arr[i]=arr[n-1-i];
    arr[n-1-i]=t;
    i++;
    invert(arr,n,i);
}
int main()
{
    int arr[N];
    int t,i;
    for(i=0;i<N;i++)
    scanf("%d",&arr[i]);
    invert(arr,N,0);
    for(i=0;i<N;i++)
    printf("%d ",arr[i]);
    
    return 0;
} 

运行结果如图

img

希望有用,祝你顺利