对数字的常规处理

对数字的常规处理

在c语言的学习中,对数字的处理尤为重要。其中有以下几种常规处理数字的方法:

1、统计数字的位数;
2.、顺序输出每一位数字;
3、逆序输出每一位数字;

接下来我们可以根据这个例子,来理解c语言对整形数字的处理流程:

给出一个不多于5位的正整数,要求:

(1)求出它是几位数;
(2)分别输出每一位数字;
(3)按逆序输出各位数字,例如原数为321,应输出123。

统计数字的位数

int Count(int n)  //统计一位正整数的位数
{
	int temp=0;  //计数器
	if(n==0)     //统计0的位数
		return 1;  
	while(n!=0)
	{
		temp++;
		n/=10;   //丢弃个位数字
	}
	return temp;
}

运行结果:

在这里插入图片描述

分析如下:

统计整形数字,我们采取循环方式,连续丢弃个位数字操作(n/=10),利用计数器统计(temp++),直到n==0时,结束统计。

顺序输出每一位数字

void Print(int n)    //顺序输出
{
	int c=Count(n);  //调用计数函数
	int power=pow(10.0,c-1);
	while(n!=0)
	{
		printf("%d ",n/power);  //得到最高位
		n=n%power;              //丢弃最高位
		power/=10;
	}
	printf("\n");
}

运行结果:
在这里插入图片描述

分析如下:

首先,我们调用上述Count()函数,得到该整形数字的位数;利用函数pow()得到最高位的位数,输出得到的最高位数据,之后在进行最高位的丢弃;最后,对变量power进行处理。依次循环遍历,得到每一位数字。

逆序输出每一位数字

void ReversePrint(int n)  //逆序输出
{
	while(n!=0)
	{
		printf("%d ",n%10);  //得到个位数字
		n/=10;               //丢弃个位数字
	}
	printf("\n");
}

运行结果:

在这里插入图片描述

分析如下:

逆序输出,我们直接可以得到个位数字,在进行丢弃;依次循环遍历,就会得到每一数字。

总体代码如下:

#include<stdio.h>
#include<math.h>
int main()
{
	int Count(int n);
	void Print(int n);
	void ReversePrint(int n);
	int a;
	printf("请输入一位整型数据:\n");
	scanf("%d",&a);
	printf("这一位正整数的位数是:\n");
	printf("%d\n",Count(a));
	printf("顺序输出每一位数字:\n");
	Print(a);
	printf("逆序输出每一位数字:\n");
	ReversePrint(a);
	return 0;
}

int Count(int n)  //统计一位正整数的位数
{
	int temp=0;  //计数器
	if(n==0)     //统计0的位数
		return 1;  
	while(n!=0)
	{
		temp++;
		n/=10;   //丢弃个位数字
	}
	return temp;
}
void Print(int n)    //顺序输出
{
	int c=Count(n);  //调用计数函数
	int power=pow(10.0,c-1);
	while(n!=0)
	{
		printf("%d ",n/power);  //得到最高位
		n=n%power;              //丢弃最高位
		power/=10;
	}
	printf("\n");
}
void ReversePrint(int n)  //逆序输出
{
	while(n!=0)
	{
		printf("%d ",n%10);  //得到个位数字
		n/=10;               //丢弃个位数字
	}
	printf("\n");
}

运行结果:
在这里插入图片描述

总结:

C语言编程上,对数字进行以上常规处理。我们需要掌握以下技巧:

1、如何得到该整形数字的最高位;
2、如何实现数字丢弃;
3、掌握特殊条件的数字处理,如0的位数。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值