对数字的常规处理
在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的位数。