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

希望用C语言解答,最好简单一点,因为是初学者题目描述
程序每次读入一个正整数N(N的位数小于10位),然后输出按位逆序的数字。注意:当输入的数字含有结尾的0时,输出不应带有前导的0。比如输入70000,输出应该是7。

输入
多组数据,每次输入是一个正整数,当输入为0时结束

输出
对于每个输入的正整数,输出对应的逆序数

#include<stdio.h>
#include<strings.h>
//反置函数,将数据反置,不包括开头的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<i;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;
    }
}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2017-11-12
用二个循环就可以的。

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网