#include
#include
//反置函数,将数据反置,不包括开头的0,存入静态数组
void reverse(int data)
{
static size_t flag=0; //一个标识,记录递归调用的次数,控制后面代码的运行次数
flag++;
static char buf[100]={0}; //反向数据的存储数组
int n=data/10; //商
int m=data%10; //余数
static int i=0; //buf的下标
if(!(m==0&&buf[0]==0&&i==0)) //只有满足条件才会给数组赋值
buf[i++]=m;
if(n>0) //商不为0,递归
reverse(n);
else
return;
if(--flag==1) //判断是不是最外层递归
{
flag=0;
for(int j=0;j printf("%d",buf[j]);
printf("\n");
i=0; //这两个是静态变量,所以需要重新置位,之所以不用全局变量,是因为全局变量不安全,尽量少用
bzero(buf,100);
}
return;
}
int main()
{
int data;
while(1)
{
printf("输入数据:");
scanf("%d",&data);
while(getchar()!='\n');
if(data!=0)
reverse(data);
else
break;
}
}
用二个循环就可以的。