解题思路:
分成了三个函数,写得非常繁琐。逆序输出的思路是建一个大小为位数的数组,按位存进去,再逆序输出,因此需要传入的参数有两个,原数字和它的位数。感觉这么写会浪费大量的空间和时间……大家笑一笑就好。
注意事项:
计算指数的话,可以先#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语言训练-角谷猜想 (C++代码)(3N+1问题)浏览:1850 |
【数组的距离】 (C语言代码)浏览:787 |
小明A+B (C语言代码)浏览:1317 |
printf基础练习2 (C语言代码)浏览:826 |
C语言程序设计教程(第三版)课后习题5.7 (C语言代码)浏览:606 |
WU-输出九九乘法表 (C++代码)浏览:1853 |
WU-拆分位数 (C++代码)浏览:819 |
C语言程序设计教程(第三版)课后习题7.2 (C语言代码)浏览:818 |
【计算直线的交点数】 (C语言代码)浏览:1501 |
C语言程序设计教程(第三版)课后习题5.4 (C语言代码)浏览:903 |