对数字的常规处理
在c语言的学习中,对数字的处理尤为重要。其中有以下几种常规处理数字的方法:
1、统计数字的位数; 2.、顺序输出每一位数字; 3、逆序输出每一位数字;
接下来我们可以根据这个例子,来理解c语言对整形数字的处理流程:
给出一个不多于5位的正整数,要求:
(1)求出它是几位数; (2)分别输出每一位数字; (3)按逆序输出各位数字,例如原数为321,应输出123。
统计数字的位数
int
Count(int n
)
{
int temp
=0;
if(n
==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)
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的位数。