对数字的处理,得到位数,逆序输出,顺序输出

来源:互联网 发布:linux dr.com客户端 编辑:程序博客网 时间:2024/06/05 05:25

#include <stdio.h>
#include <math.h>

/*

给一个整数数字num(正负都可以)

    求出它是几位数;

    分别输出每一位数字;

    按逆序输出各位数字;

例如原数为:321,应输出123.

*/


int GetPlace(int num)   //得到位数
{
 int count=0;
 while( num!=0 )
 {
  count ++ ;   //循环次数与数字位数相等
  num/=10;    //每次循环整除一次减少一位,num=0,循环结束
 }
 return count ;   //将值返回给函数
}
void PrintReverse(int num)   //逆序输出
{
 printf("逆序数字为 ");
 while(num!=0)
 {
  printf("%d ",num%10);   //对数取余可得到某一位数
  num/=10;    //取余之后,再整除10可得到原数字除个位以外的数字,直到num=0,循环结束
 }
 printf("\n");
}

 //两个顺序输出,所用循环不同,思路相同。while ,for ,do …while三种混合使用

void PrintOrder1(int num)
{
 int a=GetPlace(num);   //a接收位数,根据位数决定取余和整除
 int power = 1;
 int i=1;
 while( i<a )   //顺序输出:此循环决定被整除的数,12345/10000=1;2345/1000=2....从而得到第一位数...等等
 {
  power *= 10;   //累乘
  i++;
 }
 printf("顺序输出方法1:数字为 ");
 for( ; num!=0 ; power /= 10)  
 {
  printf("%d ",num/power);    //顺序输出每一位数
  num %= power;   //每次减少num的某位数
 }
 printf("\n");
}

void PrintOrder2(int num)  //方法2
{
 int a=GetPlace(num);
 int power = 1 ;
 for( int i = 1 ; i < a ; i++)
 {
  power *= 10 ;
 }
 printf("顺序输出方法2:数字为 ");

 do
 {
  printf("%d ",num/power);
  num %= power;
  power /= 10;
 }while(num!=0);

 printf("\n");
}
int main()
{
 PrintReverse(123456);
 PrintOrder1(123456);
 PrintOrder2(123456);
 return 0;
}

*/
阅读全文
0 0
原创粉丝点击