循环的深入理解

在处理数据的时候经常会遇到判断一个数是几位数,并且有的时候需要输出他的百位或者其他位上的数字,这时候我们就需要一种方法来让它按照我们的要求输出,今天就是介绍这种方法。

       得到一个数的时候要判断这个数是一个几位数,对于这个问题我们可以对这个数除10,然后对除10后的这个数进行判断是否为0,如果是零,它就是一位数,如果不为0,那么就一直重复执行这个步骤,我们定义一个变量来保存执行这个步骤的次数,那么这个变量的值是几,这个数字就是个几位数。

#include <stdio.h>  
int GetFig(int n)//  
{  
    int Num = 0;  
    do  
    {  
        Num++;  
        n /= 10;//丢弃个位     
    }while(n != 0);  
    printf("判断此数的位数:%d\n",count);  
    return Num;  
} 

那么下一步就是要输出这个数字的,每一位上的数字:

     由于第一步求出了该数是几位数,直接调用,对n除以10的(count-1)次方 ,并且输出其值,然后对n求10的(count-1)次方的余数,然后进入循环,直到n=0时,结束循环。就得到每位数的值!

void PrintOrder(int n)//分别输出每位数   
{  
    int Num;  
    Num = GetFig(n);  
    int power = 1;    
    for(int i=0;i<count-1;i++)  
    {  
        power *= 10;  
    }  
     printf("分别输出该数:");  
    do  
    {  
        printf(" %d",n/power);//得到最高位  
        n %= power;//丢弃最高位  
        power /= 10;  
    }while(n!=0);  
    printf("\n");  
}  

如果要让这个数,进行逆序输出,如123,逆序321. 

      我们可以对该数进行求余数,n%10(得到个位数字,并且输出该数字),让后n除以10,判断是否为零,如果不为零,进入循环,直到n=0时,结束循环,然后就得到了逆序数。

int  PReverse(int n)//使该数逆序输出   
{  
    printf("逆序输出该数:");   
    do  
    {  
        printf("%d ",n%10);//得到个位数字  
        n /= 10;//丢弃个位数字  
    }while(n!=0);  
    printf("\n");  
    return 0;  
}
解决这个问题还可以使用递归和栈排序的方法,这两种方法我们日后再说。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值