基于数字处理的几种问题的解决方法

在对前面学习的数字处理中,主要遇到以下三种问题:
1:输出给定数字的位数;
2:将给定数字按顺序输出;
3:将给定数字逆序输出。

解决:
1:给定数字除以10,去掉个位,计数器加一,依次直到处于结果为0
2:按顺序输出。
a:计算给定数字位数,目的以及关键点寻找与数字位数相同的取余整数例如:给定12345,与其位数相同的整数即为1000,只需要调用第一问的计算位数的函数。
b:计算除余以及除以的数字,此时只需调用库函数pow,即pow(10,c-1),其中c定义为数字的位数。计算其目的是为了弃掉高位。
c:循环打印高位并且取余弃掉高位,同时位数除以10,保证和数字的位数相同。
3:第一步取余得到个位数并且打印,第二步弃掉个位即可,依次循环直到结束。

以下为代码段:

//求给定数字的位数 
int GetFigure(int n)
{ 
	int i;
	for(i=0;n!=0;i++)       
	{
	    n/=10;
	}
	return i;
}
//计算位数的第二种循环方法
int GetFigure(int n)
{
    int count=0;
	
	if(n==0)
	{
	  return 1;
	}//判断当数字为0时,输出1
	while(n!=0)
	{
	  count++;//满足时位数加一
	  n/=10;//弃掉个位
	}
return count;
}

//替换第二种方法中的while语句
do
	{
	  count++;
	  n/=10;//弃掉个位
	}
	while(n!=0);
	
//按顺序输出各个数字
void PrintfOrder(int n)
{
	//得到数字的位数
	int c=GetFigure(n); 
	//得到除以和取余的数字
	int m=(int)pow(10.0,c-1);
	//顺序输出每位数字
	do
	{
		printf("% d",n/m);//得到高位数字并输出
		n%=m;//丢弃高位
		m/=10;
	}while(n!=0);
	printf("\n");
}

//按逆序输出各个数字
void PrintfReverse(int n)
{
	/*if(n<0)
	{
		printf("-");
		n=-n;
	}*/
	do
	{
		printf("%d",n%10);//打印个位数字 
		n/=10;//弃掉个位
	}
	while(n!=0);
	printf("/n");
}

设置主函数,在其中调用各个函数打印即可。
完成

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值