原题链接:[编程入门]数字的处理与判断
解题思路:
分成了三个函数,写得非常繁琐。逆序输出的思路是建一个大小为位数的数组,按位存进去,再逆序输出,因此需要传入的参数有两个,原数字和它的位数。感觉这么写会浪费大量的空间和时间……大家笑一笑就好。
注意事项:
计算指数的话,可以先#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分
1 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复