#include <stdio.h> #define N 6 void input(int *p,int n); void ouput(int *p,int n); int main(){ int a[N]; input(a,N); ouput(a,N); return 0; } void input(int *p,int n){ if(n==0) return; scanf("%d",p); input(++p,--n); } void ouput(int *p,int n){ //while(n--){ // printf("%d ",*p++); //} if(n==0) return; printf("%d ",*p); ouput(++p,--n); }
废话:又好久没碰C了,看到有人问输入几个数字的问题,想了下怎么输入n个数字。
循环写得太多了,为增加一点难度,想用递归写。
把输入一行数分成,输入单个数,要递归实现要保存数组下一个位置的指针,总数减1
input(++p,--n)
起始p指向a(第一个元素),n为数组元素总数
每次调用让 p+1,n-1
当 n=0 时,即已经输入n次时,返回函数
输出也以同样方式递归调用。
原文:https://www.cnblogs.com/zokf7cc/p/14363097.html