华为笔试——C++进制转换
题目:2-62进制转换
题目介绍:输入一个n1 进制的整数(包括负数),将其转换成n2 进制,其中n1 、n2 的范围是 [ 2,62 ] 。每个数字的范围是0-9、a-z、A-Z。不用考虑非法输入。
输入:
n1 n2
n1 进制整数
输出:
n2 进制整数
例:
输入:
8 16
-1352460
输出:
-5d530
分析:
这道题目需要考虑几点:负整数的输入;将输入的n1 进制的数转换成10 进制的数,再用长除法将这个10 进制的数转换成 n2 进制的数;a-z和A-Z与其代表的整数的相互转换(char 类型的ASC||码与整数的变换)。
代码如下:
#include <iostream>
#include <string>
#include <math.h>
#include <conio.h>
using namespace std;
int main()
{
string str;
int size;
int i = ;
int result = ;
int n = ;
int r[];//长除法
char q[];
int n1, n2;
cout << "n1.n2" << endl;
cin >> n1 >> n2;
cout << "str" << endl;
cin >> str;
size = str.size();
char *p = new char[size];
strcpy(p, str.c_str());
if (p[] == '-') { p[] = ''; }//考虑到负数
for (i = ; i < size; i++)
{
if (p[i] >= 'a'&&p[i] <= 'z')
{
p[i] = p[i] - ;
}
if (p[i] >= 'A'&&p[i] <= 'Z')
{
p[i] = p[i] + ;
}
}//将a-z的字符意义化a=10、···
for (i = ; i < size; i++)
{
result += int(p[i] - ) * int(pow(n1, size - - i));
}
cout << result << endl;//计算十进制值
while ((result / n2) >= n2)
{
r[n] = result % n2;
result = result / n2;
n++;
}
r[n] = result % n2;
n++;
r[n] = result / n2;//取余取除值
for (i = ; i < (n + ); i++)
{
if (r[i] >= &&r[i]<=) { q[i] = r[i]+; }//a-z的输出转换
else if (r[i] >=&&r[i]<=) { q[i] = r[i]+; }//A-Z的输出转换
else { q[i] = char(r[i] + ); }//0-9转换
}
if (p[] == '') { cout << "-"; }//负数还原
for (i = ; i < (n + ); i++)
{
cout << q[n - i];
}
}
结果如图:其中输出的第二行为10 进制的该数。

华为笔试——C++进制转换的更多相关文章
- SQL Server 进制转换函数
一.背景 前段时间群里的朋友问了一个问题:“在查询时增加一个递增序列,如:0x00000001,即每一个都是36进位(0—9,A--Z),0x0000000Z后面将是0x00000010,生成一个像下 ...
- [No000071]C# 进制转换(二进制、十六进制、十进制互转)
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...
- JS中的进制转换以及作用
js的进制转换, 分为2进制,8进制,10进制,16进制之间的相互转换, 我们直接利用 对象.toString()即可实现: //10进制转为16进制 ().toString() // =>&q ...
- 结合stack数据结构,实现不同进制转换的算法
#!/usr/bin/env python # -*- coding: utf-8 -*- # learn <<Problem Solving with Algorithms and Da ...
- 进制转换( C++字符数组 )
注: 较为简便的方法是用 整型(int)或浮点型(long.double 注意:该类型不一定能够准确存储数据) 来存放待转换的数值,可直接取余得到每一位数值 较为稳定的方法是用 字符数组储存待转换的数 ...
- JS 进制转换
十进制转换成其他进制 objectname.toString([radix]) objectname 必选项.要得到字符串表示的对象. radix 可选项.指定将数字值转换为字符串时的进制. 例如 ...
- php的进制转换
学习了php的进制转换,有很多的知识点,逻辑,也有最原始的笔算,但是我们还是习惯使用代码来实现进制的转换,进制的转换代码有如下:二进制(bin)八进制( oct)十进制( dec)十六进制( hex) ...
- C++ 中数串互转、进制转换的类
/******************************************************************** created: 2014/03/16 22:56 file ...
- 【String与基本类型之间的转换】以及【进制转换】
1. 基本数据类型---->字符串类型: 方法一:使用连接一个空字符串,例如 基本数据类型+“” : 方法二:静态方法 String.valueOf(),具体有: String.valueOf ...
随机推荐
- 部分用户间接性访问不了linux服务器解决方法
linux的/etc/sysctl.conf中应设置 net.ipv4.tcp_tw_reuse = net.ipv4.tcp_tw_recycle = 参考文章: https://ieevee.co ...
- iOS:小技巧(19-02-12更)
记录下一些不常用技巧,以防忘记,复制用. 1.UIImageView 和UILabel 等一些控件,需要加这句才能成功setCorn _myLabel.layer.masksToBounds = YE ...
- Request和Response中文乱码问题的解决方案和区分
首先,在刚接触这个中文乱码问题的时候,还是比较混乱的,因为针对request和response各自都有自己的解决方案,而且思路相似,方法也很相似,又针对get和post两种提交方式,分两种解决中文乱码 ...
- python3>日期和时间
阅读目录 1.python3日期和时间 2.时间元组 3.获取格式化的时间 4.格式化日期 5.获取月日历 6.Time模块 7.datetime模块 回到顶部 1.python3日期和时间 Pyth ...
- Windows10系统在VMware中安装CentOS7操作系统并实现图形化用户界面Gnome
由于操作系统课程需要,我尝试在windows10环境下安装linux虚拟机,最终采用centOS7和Gnome图形用户界面,在安装和使用过程中出现一些问题,在这里将其记录下来,以便后续查阅. 第一部分 ...
- 一起来学大数据——走进Linux之门,学习大数据的重中之重
昨天我们看了有关大数据Hadoop的一些知识点,但是要在学习大数据之前,我们还是要为大数据的环境做一些的部署. 那么,今天我们就来讲讲开启我们大数据之路的Linux,跟上我们的脚步yo~ Linux介 ...
- HIve数据存储
表 Table 内部表 Partition 分区表 External Table 外部表 Bucket Table 桶表 内部表 分区表 parttion对应于数据库中的Partition列的密集索引 ...
- 数据立方体(Cube)
如上图所示,这是由三个维度构成的一个OLAP立方体,立方体中包含了满足条件的cell(子立方块)值,这些cell里面包含了要分析的数据,称之为度量值.显而易见,一组三维坐标唯一确定了一个子立方. 多位 ...
- 回文词 (Palindromes,Uva401)
例题 3-3 回文词 (Palindromes,Uva401) 输入一个字符中,判断它是否为回文串以及镜像串.输入字符串保证不含数字0.所谓回文串,就是反转以后和原串相同,如abba和madam.所有 ...
- C语言/C++编程学习:栈的代码实现之数组方案
C语言是面向过程的,而C++是面向对象的 C和C++的区别: C是一个结构化语言,它的重点在于算法和数据结构.C程序的设计首要考虑的是如何通过一个过程,对输入(或环境条件)进行运算处理得到输出(或实现 ...