吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 7782|回复: 11
收起左侧

[C&C++ 转载] 初学C++之十进制转任意进制!

[复制链接]
qq8533549 发表于 2013-10-20 01:59
之前发过一个易语言转任意进制的源码, 看了几天的C++的视频教程。 于是把源码翻译过来了。
由于英文比较差,所以代码的可读性差。。。 大牛勿喷!
[C++] 纯文本查看 复制代码
#include<iostream>
#include <string>
#include <cstdio>
using std::cin;
using std::cout;
using std::string;
void  reverse(string &txt)//字符串反转函数。
{
	int len=txt.length();
	for (int i = 0; i<len/2; i++)
	{
		//前后交换
		char temp = txt[i];
		txt[i] = txt[len-i-1];
		txt[len-i-1] = temp;
	 }
}

int main()
{
	int decimal;
	int N_price;
	char tmpstr[10];
	string StrRet;
mark:
	StrRet="";
	cout<<"请输入需要转换的十进制整数:";
	cin>>decimal;
	cout<<"请输入需要转换到的进制:";
	cin>>N_price;
	if(N_price>1&&N_price<17)
	{
	
		for (int i=0,fo=true;fo;i++)
		{
			int tmp;
			int surpuls;
			char Csurpuls;
			tmp=decimal/N_price;
			surpuls=decimal%N_price;
			
			switch (surpuls)//对数值进行文本处理
			{
			case 10:StrRet=StrRet+'A';
				break;
			case 11:StrRet=StrRet+'B';
				break;
			case 12:StrRet=StrRet+'C';
				break;
			case 13:StrRet=StrRet+'D';
				break;
			case 14:StrRet=StrRet+'E';
				break;
			case 15:StrRet=StrRet+'F';

				break;
			default: sprintf( tmpstr, "%d", surpuls );
				//cout<<surpuls;
				StrRet=StrRet+tmpstr;
				break;
			
			}	
			if (tmp!=0)//判断是否除尽! 
			{
				decimal=tmp;
			}
			else
				fo=false;
		}
				
	}
	reverse(StrRet);//字符串反转
	cout<<"10进制转换到"<<N_price<<"进制后的值为:"<<StrRet<<std::endl;
	goto mark;


}


发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

li6574833 发表于 2013-10-20 02:30
XXXXXX,这个方便多少能???>
 楼主| qq8533549 发表于 2013-10-20 05:27
li6574833 发表于 2013-10-20 02:30
XXXXXX,这个方便多少能???>

能说句我能看懂的人话吗? 请不要灌水

liuhongyu 发表于 2013-10-20 08:49
zhanglangabce 发表于 2013-10-20 17:22
liuhongyu 发表于 2013-10-20 08:49
沙发说的什么语言啊?看不明白

#include<iostream>
#include <string>
#include <cstdio>
没仔细看,一开始就有问题。。
九零-鑫鑫 发表于 2013-10-20 18:13
二进制数字中每个数位都有编号,最右边的数位编号为0,向左依次递增
二进制数字中每个数位上的1相当于2的位数次方
我这个是十进制转二进制的
 楼主| qq8533549 发表于 2013-10-20 20:49
zhanglangabce 发表于 2013-10-20 17:22
#include
#include  
#include  

什么问题。。 求指点{:1_930:}
 楼主| qq8533549 发表于 2013-10-20 20:51
九零-鑫鑫 发表于 2013-10-20 18:13
二进制数字中每个数位都有编号,最右边的数位编号为0,向左依次递增
二进制数字中每个数位上的1相当于2的位 ...

我这个算法理论上可以转换任何进制。。   
 楼主| qq8533549 发表于 2013-10-20 20:52
qq8533549 发表于 2013-10-20 20:51
我这个算法理论上可以转换任何进制。。

用十进制数不断的除以要转换的进制。 取其余数。 然后反转!
mmEXP 发表于 2013-10-26 01:38
没来得急看,应该不错,先帮你顶
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-1 08:04

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表