快速提升代码能力(8)itoa(num,str,d);

从零起步看算法(第八天 4.13)

//q10 进制转换

1.本题不知道为什么在DEv中可以通过,在网页一直ac不了

2.本题的知识点 进制转换

https://blog.csdn.net/wangjunchengno2/article/details/78690248 

3.本题的老师提了一个建议,了解一下sprintf()

可以转换16进制和8进制

https://blog.csdn.net/u011317840/article/details/47808235

4.用栈结构,vector可解决

ac代码

#include <iostream>
#include <cstdio>
#include <vector>
#include <cmath>
using namespace std;
int main()
{
    int a,b;
    int f=0;
    cin>>a>>b;
    if(a<0)f=1;
    vector <int> ans;
    for(;;)
    {
    ans.push_back(a%b);
    a=a/b;
    if(a==0)break;
    }
    if(f==1)cout<<"-";
    vector<int> ::iterator it;
    for(it=ans.end()-1;it!=ans.begin()-1;it--)
    {
        int x=abs(*it);
        switch (x)
        {
        case 10 :cout<<"A";break;
        case 11 :cout<<"B";break;
        case 12 :cout<<"C";break;
        case 13 :cout<<"D";break;
        case 14 :cout<<"E";break;
        case 15 :cout<<"F";break;
        default :cout<<x;break;
        }
    }
    return 0;
}

 

5.itoa(num,str,d);转换的数据类型为char

 

#include<cstdlib>
#include<cstdio>
#include<stdio.h>
#include<string>
#include<cstring>
#include<iostream> 
#include<assert.h>
#include<cmath>
#include<algorithm>
using namespace std;
char z[25+5];

void fun(int x,int y){
	//它的功能是将一个10进制的数转化为n进制的值、其返回值为char型。
	memset(z,-1,sizeof(z));
	itoa(x,z,y);
	for(int i=0;i<30;i++){
		if(z[i]=='b')z[i]='B';
		if(z[i]=='a')z[i]='A';
		if(z[i]=='c')z[i]='C';
		if(z[i]=='d')z[i]='D';
		if(z[i]=='e')z[i]='E';
		if(z[i]=='f')z[i]='F';
		if(z[i]=='-1')break;
	}
	cout<<z<<endl;//字符数组的输出 
	
}
using namespace std;
int main(){
	int N,R;
	while(cin>>N>>R){

	assert(N<=10000);
	assert(R>=2&&R<=16);
	fun(N,R);
}
	return 0;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值