【入门】c语言----关于统计数字位数,顺序输出和逆序输出

统计数字位数

下面变量均采用long long

这个不难

这里采用do while循环count先++,防止输入0时统计出错。

int main()
{
	long long n;
	scanf_s("%lld", &n);//这里考虑输入值较大,值小的话也可以int n     %d输出。
	int count = 0;
	do
	{
		n /= 10;
		count++;
	} while (n != 0);
	printf("%d", count);
	return 0;
}

逆序输出

这里考虑正数,负数,0三种情况

逆序输出简单,需采用循环,n对10取模得到个位数字后输出,再除以10丢弃个位数字便可。

负数和0时需特殊考虑

******************************************

eg.输入12345

    取模后则是5 4 3 2 1,输出形式为54321;若

int main()
{
    long long n;
    scanf_s("%lld", &n);
    if (n < 0)
    {
        n = -n;//化负为正
        printf("-");//打印出负号
    }
    if (n == 0)
    {
        printf("0\n");
        return 0;
    }
    while (n != 0)
    {
        printf("%d", n % 10);
        n /= 10;
    }

    return 0;
}

顺序输出

这里需要用到统计数字位数count,用输入数字n/pow(10, count - 1)来得到最高位

再用n%pow(long long)(10, count - 1)丢弃最高位

注意:pow这个函数返回值是个double类型,而取余要求的一定是整数对整数取,所以在pow的前面加一个强制类型转换整形,把它强制成整形

eg;n=1234      count=4      n/1000=1并打印     n=n%1000=234

     n=234        count=3      n/100=2并打印       n=n%100=34

...........................

打印结果便为1 2 3 4

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

int main()
{
    long long n;
    scanf_s("%lld", &n);
    int count = 0;
    if (n < 0)
    {
        n = -n;//化负为正
        printf("-");//打印出负号
    }
    if (n == 0)
    {
        printf("0\n");
        return 0;
    }
    long long j = n;
	do
	{
		j /= 10;
		count++;
	} while (j != 0);
 
    long long k = 0;
	while (n != 0)
	{
        k = n / pow(10, count - 1);
        printf("%lld ", k);
        n = n % (long long)pow(10, count - 1);
        count--;
	}
	return 0;
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值