如何将一个int类型的数据拆分和倒装

MagicFuzzX 2014-04-21 03:07:10
这样的,比如
int a = 12345678;
如何将它拆分为
int b = 1234;
int c = 56;
int d = 78;

然后就是倒序下变成 int e = 87654321;

不要转成字符创处理。。
...全文
897 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
AndyStevens 2014-04-21
  • 打赏
  • 举报
回复
仅供参考:
#include <iostream>
using namespace std;
#include <math.h>

class Num
{
public:
	Num(int a);
	int reserve() const;
	int value() const;
	int subNum(int b, int e) const;//分割整数
private:
	int _a;
};

Num::Num(int a):_a(a){}

int Num::value() const
{
	return _a;
}
int Num::reserve() const
{
	int ra = 0;
	int a = _a;
	do	
	{
		ra *= 10;
		ra += a%10;
	}while((a/=10)!=0);
	return ra;
}

int Num::subNum(int b, int e) const//个位是0,十位是1 ,以此类推
{
	if(b>e || b<0 )return 0;
	int n = _a;
	n %= (int)pow(10.0, e+1.0);
	n /= (int)pow(10.0, b);
	return n;
}
int main()
{
	Num n(123456789);
	cout<< n.value() <<endl
		<< n.subNum(2,4)<<endl
		<< n.reserve()<<endl
		<< Num(n.subNum(2,4)).reserve() <<endl;
	return 0;
}
於黾 2014-04-21
  • 打赏
  • 举报
回复
还是建立1个数组比较方便
gz_qmc 2014-04-21
  • 打赏
  • 举报
回复
引用 2 楼 MagicFuzzX 的回复:
[quote=引用 1 楼 gz_qmc 的回复:] 不要转成字符创处理 那个地方需要这样用呢?
有的啊,起码我见过这样的面试题[/quote] 我突然发现 中国真强大 楼主很坚强
赵4老师 2014-04-21
  • 打赏
  • 举报
回复
int a = 12345678;
//如何将它拆分为
int b = a/10000; //1234;
int c = a/100%100; // 56;
int d = a%100; // 78;

//然后就是倒序下变成
int e = a%10               *10000000
       +a%100     /10      *1000000
       +a%1000    /100     *100000
       +a%10000   /1000    *10000
       +a%100000  /10000   *1000
       +a%1000000 /100000  *100
       +a%10000000/1000000 *10
       +a/10000000; // 87654321;
a824326817 2014-04-21
  • 打赏
  • 举报
回复
这样的,比如 int a = 12345678; 如何将它拆分为 int b = 1234; int c = 56; int d = 78; int b = a & 0xffff0000 >> 32; //==1234 int c = a& 0xff00 >> 8; ///.... int d = a & 0xff;//..... 瞎搞。。。。。。。。。。。。。
shlvshe00 2014-04-21
  • 打赏
  • 举报
回复
	int a = 1357965482;
	long long b,sum=0;
	while(a!=0)//倒序
	{
		b = a%10;
		a = a/10;
		sum = sum*10+b;
	};
截取也差不多这样把每一位给取出来
PDD123 2014-04-21
  • 打赏
  • 举报
回复
int a=12345678;
int b=a/10000;//1234
int c=a%10000;//5678
int d=c%100;//78
c=c/100;//56
int e=0;
while(a>0)
{
       e=e*10;
       e=e+a%10;
       a=a/10;
}
MagicFuzzX 2014-04-21
  • 打赏
  • 举报
回复
引用 3 楼 Qyee16 的回复:
这样的,比如 int a = 12345678; 如何将它拆分为 int b = 1234; int c = 56; int d = 78; int b = a & 0xffff0000 >> 32; //==1234 int c = a& 0xff00 >> 8; ///.... int d = a & 0xff;//.....
错了吧..
MagicFuzzX 2014-04-21
  • 打赏
  • 举报
回复
引用 3 楼 Qyee16 的回复:
这样的,比如 int a = 12345678; 如何将它拆分为 int b = 1234; int c = 56; int d = 78; int b = a & 0xffff0000 >> 32; //==1234 int c = a& 0xff00 >> 8; ///.... int d = a & 0xff;//.....
倒序呢..
Qyee16 2014-04-21
  • 打赏
  • 举报
回复
这样的,比如 int a = 12345678; 如何将它拆分为 int b = 1234; int c = 56; int d = 78; int b = a & 0xffff0000 >> 32; //==1234 int c = a& 0xff00 >> 8; ///.... int d = a & 0xff;//.....
MagicFuzzX 2014-04-21
  • 打赏
  • 举报
回复
引用 1 楼 gz_qmc 的回复:
不要转成字符创处理 那个地方需要这样用呢?
有的啊,起码我见过这样的面试题
gz_qmc 2014-04-21
  • 打赏
  • 举报
回复
不要转成字符创处理 那个地方需要这样用呢?

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧