编程语言
首页 > 编程语言> > C/C++ c/c++ 给一个正整数, 要求:①求出它是几位数; ②分别打印出每一位数字; ③按逆序打印出各位数字, 例如原数为321, 应输出123。

C/C++ c/c++ 给一个正整数, 要求:①求出它是几位数; ②分别打印出每一位数字; ③按逆序打印出各位数字, 例如原数为321, 应输出123。

作者:互联网

这个问题有一个很笨很直接的方法 就是设定很多变量来存放整数的各位数字  且原题目是不超过5位的正整数   这样效率低的没边  不过一般也没有人用这种方法  但是很神奇的是书上的答案就是这种方法    下面给出通解方法

int main()
{
	int weishu(int n);
	void meiyiwei(int n);
	void nixu(int n);
	int a = 0;
	cin >> a;
	int tmp = a;              //储存下a  因为在下面的函数中会改变a 这样在下一个函数中就不再是原来的那个了
	cout << "这是一个" << weishu(a) << "位数" << endl;
	a = tmp;
	meiyiwei(a);
	a = tmp;
	nixu(a);
	return 0;
}

int weishu(int n)
{
	int a = 0;
	while (n)
	{
		n /= 10;
		a++;    
	}
	return a;
}

void nixu(int n)
{
	cout << "逆序为:";
	while (n)            //每次输出它的最后一位 然后把最后一位消去 当等于0的时候就不会进入循环了
	{
		cout << n % 10;
		n /= 10;
	}
	cout << endl;
}

void meiyiwei (int n)
{
	int weishu(int n);
	// 1234 1234
	//  先算他是几位数  因为不知道几位数的话 很难解决 
	int tmp = n;
	int a = weishu(n);
	int chushu = 1;   //如果它是4位 则chushi变为1000  为了得到第一位 
	a -= 1;    
	while (a)
	{
		chushu *= 10;   //4位 乘3次
		a--;
	}
	n = tmp;    //因为上面函数weishu里把n改变了
	cout << "正序为:";
	while (chushu)   //此时1234 除数是1000
	{
		cout << n / chushu<<" ";
		//  1234 
		n %= chushu;  //把最高位消去
		chushu /= 10; 
	}
	cout << endl;
}

标签:正整数,数字,int,void,打印,几位数,方法
来源: https://blog.csdn.net/i777777777777777/article/details/122023106