C语言处理数字(判断数字的位数、顺序输出数字、逆序输出数字)

学习了处理数字的办法,如何判断一个数是几位数,如何将他顺序输出,如何将他逆序输出。在生活中,用处特别大。

1、判断数字位数。

首先,我们来看一下如何判断给出的数是几位数。次判断方法由两句核心语句组成:

intcount = 0;
 while(n !=0)                                           //
判断他是一个非零的数
 {
  count++;                                            //
当他为非零数时,位数加一
  n /=10;                                              //
丢弃个位
 }

首先判断数是否为零,若不为零,位数加一,再丢弃个位,直到数为零时,循环结束输出位数。

2、顺序输出这个数。

在顺序输出中,我们要调用判断位数的函数。我们还需要定义一个power数,用来保存10的次方数。首先调用它是一个几位数,再利用循环将power赋值成10的位数减一次方,用数除power,得到最高位,用数余power丢弃最高位,再将power除十去位,再进行循环。直到数为零,循环结束。

核心语句:

int power = 1;
 for(int r = 1;r <= count-1;r++)
 {
  power*=10;
 }
 while(n!=0)
 {
  printf("%d",n/power);                         //
得到最高位
  n %=power;                                        //
丢弃最高位
  power/=10;
 }

3、逆序输出这个数

相比顺序,逆序输出更加简单,首先判断他是否为零,再将它余十得出最小位,输出后再除十,丢弃最小位。

核心语句:

while(n != 0)

      {

            count= n%10;                         //得到最小位

            printf("%d\n",count);                    //输出最小位

            n /=10;                                 //抛弃最小位

      }

以下为源代码:

 

//判断一个数是几位数

#include<stdio.h>

int GetNumbers(int n)

{

      int count =0;

      while(n !=0)                                           //判断他是一个非零的数

      {

            count++;                                           //当他为非零数时,位数加一

            n /=10;                                              //丢弃个位

      }

      returncount;

}

int main()

{

      printf("此数字为%d位数\n",GetNumbers(57777));

      printf("此数字为%d位数\n",GetNumbers(503768));

      return 0;

}

 

 

//逆序输出一个数

 

#include<stdio.h>

int PrintReverse(int n)

{

      int count =0;

      while(n !=0)

      {

            count= n%10;                              //得到最小位

            printf("%d\n",count);                   //输出最小位

            n /=10;                                         //抛弃最小位

      }

      return 0;

}

int main()

{

      PrintReverse(122562);

      return 0;

}

//顺序输出一个数

#include<stdio.h>

int GetNumbers(int n)

{

      int count =0;

      while(n !=0)

      {

            count++;

            n /=10;

      }

      returncount;

}

int PrintOrder(int n)

{

      int count =GetNumbers(n);

      int power =1;

      for(int r =1;r <= count-1;r++)

      {

            power*=10;

      }

      while(n!=0)

      {

            printf("%d",n/power);                          //得到最高位

            n %=power;                                        //丢弃最高位

            power/=10;

      }

      return 0;

}

int main()

{

      PrintOrder(12345);

      return 0;

}

  • 12
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值