输入 多组数据,每次输入是一个正整数,当输入为0时结束 输出 对于每个输入的正整数,输出对应的逆序数

2024-11-25 21:36:48
推荐回答(2个)
回答1:

#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;
    }
}

回答2:

用二个循环就可以的。