输出整数的位数、按位输出及逆序按位输出

题目

给一个整数,要求:
①求出它是几位数
②分别输出每一位数字
③按逆序输出各位数字

首先,求出它是几位数

这里我们采用“末位丢弃法”,也就是每一次丢弃最后一位数,例如“45698”丢弃末位变成“4569”(只需要 45698 /10即可),每次丢弃的末位用一个临时变量来保存丢弃次数并输出。

主要代码如下:

int count(int n)
{
	int i;
	for(i=0;n > 0;i++)
	{
		n /= 10;
	}
	return i;
}

逆序输出每一位数字

先说逆序输出位数字,思想和上边输出位数一样,临时变量保存每次丢弃的“末位”然后输出即可。
主要代码如下:

void reversePrint(int n)
{
	int tmp;
	int i;
	for(i=0;n > 0;i++)
	{
		tmp = n%10;
		printf("%d ",tmp);
		n /= 10;
	}
	return ;
}

分别输出每一位数字

有了上边的求位数和逆序按位输出,那么按位输出也就变的容易起来。只需要逆置它再将其用上边的的逆序按位输出即可
代码如下:

void printDigit(int n)
{
	int tmp=0;
	int i;
	for(i=0;n > 0;i++)
	{
		tmp = tmp*10 + n%10;
		n /= 10;
	}
	reversePrint(tmp);
	return ;
}

总体打印一下:

int main()
{ 
	int n;
	printf("Enter a integr:\n");
	scanf("%d",&n);
	printf("This is a %d digit number.\n",count(n));
	printf("\nEach digit is: ");
	printDigit(n);
	printf("\nThe reverse order is: ");
	reversePrint(n);
	return 0;
}
Enter a integr:
12345678
This is a 8 digit number.

Each digit is: 1 2 3 4 5 6 7 8
The reverse order is: 8 7 6 5 4 3 2 1

你可能感兴趣的:(输出整数的位数、按位输出及逆序按位输出)