解题思路:

分成了三个函数,写得非常繁琐。逆序输出的思路是建一个大小为位数的数组,按位存进去,再逆序输出,因此需要传入的参数有两个,原数字和它的位数。感觉这么写会浪费大量的空间和时间……大家笑一笑就好。

注意事项:

计算指数的话,可以先#include <math.h>再用pow()函数,"^"是按位异或运算符,不是指数。

参考代码:

#include <iostream>
#include <math.h>

using namespace std;

int numOrder(int num); //求位数
void printEachOrder(int num, int order); //按位输出
int reverseNum(int num, int order); //逆序输出
int main() {
	int num = 0;
	cin >> num;
	cout << numOrder(num) << endl;
	printEachOrder(num, numOrder(num));
	cout << reverseNum(num, numOrder(num)) << endl;
	return 0;
}
int numOrder(int num) {
	int order = 1;
	while(num / 10) {
		order++;
		num /= 10;
	}
	return order;
}
void printEachOrder(int num, int order) {
	int arr[order] = {0};
	for(int i = 0; i < order; i++) {
		arr[i] = num % 10;
		num /= 10;
	}
	cout << arr[order - 1]; //最后一个数后面不带空格,所以先输出第一个,之后先输出空格再输出数字
	for(int i = order - 2; i >= 0; i--) {
		cout << " " << arr[i];
	}
	cout << endl;
}
int reverseNum(int num, int order) {
	int rvs = 0; //要返回的值
	int temp = 0; //最低位的数
	while(num) {
		temp = num % 10;
		rvs += (temp * pow(10, (--order))); //注意^是按位异或,pow()函数要加库文件
		num /= 10;
	}
	return rvs;
}


点赞(0)
 

0.0分

1 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 0 条评论

暂无评论