【算法】十进制转换成二十六进制
输入一个整数,要求输出对应字母,举例:27输出AA。
题目看起来很简单,我们立马能想到的办法是进行 / % 输出对应结果。
可能很快写出这样的错误代码:
注意A的ascial 是65 小写97 ,此处我们是从64开始添加的。
string numberToSystem26Str(int n) {string s = string();int number = n;while (n>0) {s = char(n%26+64) +s;n = n/26;}cout<< number << s<<endl;return s;
}
此时注意: 对于边界情况的考虑,比如26 ,输出就会发生异常,输出A@,很明显不是我们想要的。我们能想到的就是进位的时候对于整数的情况考虑一下。
我们可能会考虑%27 不就是正好了,27 %27 =0 ,会影响我们的输出。最好的办法还是调整一下%26=0,调整对应字母。
然后变成:
对于进位,求下一个大的数我们可能会使用直接/的方法,又会出现问题。
string numberToSystem26Str(int n) {string s = string();int number = n;while (n>0) {int m = n%26;if(m==0) m = 26;s = char(m+64) +s;n = n/26;}cout<< number << s<<endl;return s;
}
输入26的时候,我们会发现输出AZ,多输出了以为,那怎么样才能规避这个问题呢。 能够%=0,且数值n>0,我们调整一下n的大小。
string numberToSystem26Str(int n) {string s = string();int number = n;while (n>0) {int m = n%26;if(m==0) m = 26;s = char(m+64) +s;if(m ==26) n=n-1;n = n/26;}cout<< number << s<<endl;return s;
}
最后给一个精简版的答案。
优化答案
string numberToSystem26Str(int n){string s = string();int temp =n;while (n > 0){int m = n % 26;if (m == 0) m = 26;s = (char)(m + 64) + s;n = (n-m) / 26;}cout<<temp<< s<<endl;return s;
}
可以看到,题目要求一点都不难,但是需要注意的细节特别多。
%的时候,刚好%=0 的情况
/ 的时候,当%=0, 会不会影响循环条件,是否进行进位。导致输出结果有误。
短短的15分钟面试时间,白板的情况下,考虑所有的边界情况,写出完整的答案,还是非常有难度的,平时要多准备才能以不变应万变。
【算法】十进制转换成二十六进制相关推荐
- Go语言实现十进制转换成二、八、十六进制
原文地址声明:https://blog.csdn.net/qq_23179075/article/details/87085435 package mainimport ("errors&q ...
- C语言十进制转换成二进制、八进制、十六进制
一.绪论 十六进制(Hexadecimal):在数学中是一种逢16进1的进位制.一般用数字0到9和字母A到F(或a~f)表示,其中:A~F表示10~15. 十进制(Decimal System):每相 ...
- 通过代码实现将十进制转换成十六进制
通过代码求50的十六进制 上一篇博客已经介绍了十进制转换成十六进制的方法,因此我们可以得到50的二进制为00110010,十六进制为32.下面我将介绍两种方法求出50的十六进制. 方法一:自动实现 思 ...
- c语言十进制转换成二进制八进制十六进制,十进制数转换成二进制,八进制,十六进制(c语言)...
利用一个函数实现十进制数转换成二进制,八进制,十六进制.利用的是栈的后进先出的思想.算法简单. #include #include #include #define STACK_INIT_SIZE 1 ...
- c语言的十进制转十六进制字符串,用c语言写一个函数把十进制转换成十六进制,该如何处理...
用c语言写一个函数把十进制转换成十六进制 用c语言写一个函数把十进制转换成十六进制 网上找到一些,感觉有占乱 分享到: ------解决方案-------------------- #include ...
- C语言:十进制转换成十六进制字符串和数组
1.十进制转换成十六进制字符串 #include<stdio.h> /*函数: 将十进制数字转换为十六进制,并将转换后的数字存储在字符串中并输出 */ void dec2hex(int n ...
- 蓝桥杯C/C++每日一练之十进制转换成十六进制
第十三届蓝桥杯大赛个人赛省赛比赛将于2022年4月9日(星期六)举办,趁现在寒假的时间抓紧时间备战一下.因为博主本人报名是C/C++组,所以更新所有内容都是C/C++相关知识.题目全部都是蓝桥杯官网题 ...
- 十进制转换成二进制和十六进制的方法
十进制转换成二进制和十六进制的方法 十进制数转换成二进制数-般分为两个步骤,即整数部分的转换和小数部分的转换. (1 )整数部分的转换 *除2取余法:*这种方法是由于D10=N2 =dn-1x2n-1 ...
- c语言中如何将字符串转成16进制,用c语言写一个函数把十进制转换成十六进制,该如何处理...
用c语言写一个函数把十进制转换成十六进制 用c语言写一个函数把十进制转换成十六进制 网上找到一些,感觉有占乱 分享到: ------解决方案-------------------- #include ...
最新文章
- 湖南科技学院计算机科学与技术分数,湖南科技学院计算机科学与技术专业2016年在河南理科高考录取最低分数线...
- leangoo敏捷开发工具应用场景
- 程序人生:提高编程逻辑的 10 种最“疯狂”的方法
- Spark入门(一)单主standalone安装
- 天天说常识推理,究竟常识是什么?
- ajax实现多级联动菜单,jquery 实现二级/三级/多级联动菜单的思路及代码
- 字节流复制视频比拼效率
- 【转载】Katalon Studio 基本用法--录制脚本并查看测试报告
- golang使用pprof检查goroutine泄露
- jquery1.6.2源码拆分一
- 【FPGA】05_按键消抖
- WP下载,WP源码下载,WP模板主题下载
- 28岁学Java晚不晚?快30学java还来得及吗?
- 【软件测试】Fiddler拦截+京东登陆练习
- Python爬虫实战:分析《战狼2》豆瓣影评
- pdf的base64转成jpg的base64
- 突发!继22岁拼多多女员工猝死后,又一悲剧:拼多多员工家中跳楼自杀!公司紧急通告!...
- 关于java用JDBC连接数据库的代码
- python3调用新浪微博API 报HTTP Error 403: Forbid、400 Bad Request错误
- MATLAB小波变换
热门文章
- 中国的姓氏的日语表达
- 20. 挖掘机技术哪家强
- Tomcat架构解析之HTTP/2.0
- Halcon 获取内圆环圆心|半径
- 手机鸿蒙尝鲜版,华为鸿蒙2.0手机开发者Beta版发布,这些设备可优先尝鲜鸿蒙...
- Terminal capability cm required
- pycharm安装第三方库速度慢解决方法
- SpringAOP专题之6、Spring AOP中@Pointcut 12种用法
- Flink SQL:Queries(Windowing TVF)
- JavaScript保存cookie