C++代码:进制转换

可以将十进制的数字转换成2~9进制,转换不了会提示。也可以自己拓展,将其他进制的数字转换成十进制的。

结果如图所示。

main.cpp

#include"TranStack.h"
#include"TranStack.cpp"
#include<iostream>
using namespace std;

int main(){
	int n,m,a,b;
	cout<<"\n\t请输入一个十进制的整数:";
	cin>>n;
	a=n;
	cout<<"\t转换为几进制(请输入2~9的阿拉伯数字):";
	cin>>m;
	TransStack t; //建立对象
	try{  //异常处理
		if(m<2||m>9) throw"\n\t转换进制异常!\n";
	}catch(char *p){
		cout<<p;
	}
	if(m>1&&m<10){
		for(;;){
			b=a%m;  //取余数
			a=a/m;  //取商
			t.push(b);
			if(!a) break;
		}
		try{
			cout<<"\n\t"<<n<<"转换为"<<m<<"进制为:";
			for(;;){
				cout<<t.pop();
			}
		}catch(...){
			cout<<"\n\n\t\t";
		}
	}
	return 0;
}

TranStack.cpp

#include"TranStack.h"
#include<iostream>
using namespace std;

TransStack::TransStack(){top=NULL;}
TransStack::~TransStack(){}
void TransStack::push(int a){
		Node *s=new Node;
		s->data=a;
		s->next=top;
		top=s; //将接点s插在栈顶
	}
int TransStack::pop(){
		if(top==NULL) throw"\n\t\t下溢!\n\t\t";
		Node *p=top;
		int x=p->data; //暂存栈顶元素
		top=p->next; //将栈顶结点摘链
		delete p;
		return x;
}

TranStack.h

#ifndef TRANSTACK_H
#define TRANSTACK_H

#include<iostream>
using namespace std;

struct Node{     //定义节点
	int data;
	Node *next;
};
class TransStack{
private:
	Node *top;//栈顶指针即链栈的头指针
public:
	TransStack(); //构造函数
	~TransStack(); //析构函数
	void push(int a); //入栈操作,将元素a入栈
	int pop(); //出栈操作,将栈顶元素出栈
};
#endif

  • 9
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值