林惜城


私信TA

用户名:reminder

访问量:31297

签 名:

等  级
排  名 91
经  验 9070
参赛次数 0
文章发表 95
年  龄 0
在职情况 学生
学  校 西安电子科技大学
专  业

  自我简介:

哈姆

TA的其他文章


解题思路:

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

注意事项:

计算指数的话,可以先#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 人评分

  评论区

  • «
  • »