算法 统计十进制数字位数[循环],正序,逆序输出该数字的每一位

统计十进制数字位数
顺序输出数字的每一位
逆序输出数字的每一位

(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"); 
} 

猜你喜欢

转载自blog.csdn.net/Gunanhuai/article/details/109262641