统计十进制数字位数
顺序输出数字的每一位
逆序输出数字的每一位
(1)统计十进制数字位数[循环]
统计一个整数是个几位数字?整数可以是负数,零或者正数.*
示例 1:
输入:0
输出:1
示例 2:
输入:123456789
输出:9
示例 3:
输入:-123456789
输出:9
算法:每次丢弃个位数字,直到0,统计丢弃的次数即可
int NumofIntBit(int n)
{
int ans = 0;
if (n == 0)
{
ans = 1;
}
while (n != 0)
{
n = n / 10;
ans++;
}
return ans;
}
(2)顺序输出数字的每一位[循环,递归]
给定一个整数,输出数字的每一位,例如123456输出结果为1 2 3 4 5 6.
示例 1:
输入:123456
输出:1 2 3 4 5 6
算法一:利用循环,获取最高位的数字,输出,然后再丢弃,直到为0.
void PrintOrder(int n)
{
if(n == 0)
{
printf("0\n");
return ;
}
int m = n;
int count = 0;//统计n的位数
while(m != 0)
{
m /= 10;//丢弃个位
count++;
}
int power = (int)pow(10.0,count-1);//需要引用math.h
while(n != 0)
{
printf("%d ",n/power);//输出最高位
n %= power; //丢弃最高位
power /= 10;
}
}
算法二:利用递归输出数据
void OutPositiveSequence(int n)
{
if (n < 10)
printf("%d\n", n);
else
{
OutPositiveSequence(n / 10);
printf("%d\n", n % 10);
}
}
(3)逆序输出数字的每一位[循环]
给定一个整数,逆序输出数字的每一位,例如123456输出结果为6 5 4 3 2 1
示例 1:
输入:123456
输出:6 5 4 3 2 1
算法一:得到个位,输出个位,再丢弃个位直到0
void PrintReverse(int n)
{
do
{
printf("%d ",n%10);//得到并输出个位
n /= 10;//丢弃个位
}while(n != 0);
printf("\n");
}