定义一个长度为10的数组a,从键盘输入10个数后逆序输出数组元素。注释:程序调用自定义invert函数,invert函数实现按逆序重新放置数组a中,元素的值( invert函数要实现用递归调用逆序放置数组元素)。数组a中元素的值在main函数中读入,输出重新排序后的数组a。
是否正确,错误的话,那里错了呢?
又如何改正呢?
谢谢回答
定义一个长度为10的数组a,从键盘输入10个数后逆序输出数组元素。注释:程序调用自定义invert函数,invert函数实现按逆序重新放置数组a中,元素的值( invert函数要实现用递归调用逆序放置数组元素)。数组a中元素的值在main函数中读入,输出重新排序后的数组a。
验证运行了下,结果如图
错误的地方显然是循环多了一次,减少一次循环即可,如下图
然后,留意到题目是要自定义函数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;
}
运行结果如图
希望有用,祝你顺利