输入一个整数,要求输出对应字母,举例: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分钟面试时间,白板的情况下,考虑所有的边界情况,写出完整的答案,还是非常有难度的,平时要多准备才能以不变应万变。

【算法】十进制转换成二十六进制相关推荐

  1. Go语言实现十进制转换成二、八、十六进制

    原文地址声明:https://blog.csdn.net/qq_23179075/article/details/87085435 package mainimport ("errors&q ...

  2. C语言十进制转换成二进制、八进制、十六进制

    一.绪论 十六进制(Hexadecimal):在数学中是一种逢16进1的进位制.一般用数字0到9和字母A到F(或a~f)表示,其中:A~F表示10~15. 十进制(Decimal System):每相 ...

  3. 通过代码实现将十进制转换成十六进制

    通过代码求50的十六进制 上一篇博客已经介绍了十进制转换成十六进制的方法,因此我们可以得到50的二进制为00110010,十六进制为32.下面我将介绍两种方法求出50的十六进制. 方法一:自动实现 思 ...

  4. c语言十进制转换成二进制八进制十六进制,十进制数转换成二进制,八进制,十六进制(c语言)...

    利用一个函数实现十进制数转换成二进制,八进制,十六进制.利用的是栈的后进先出的思想.算法简单. #include #include #include #define STACK_INIT_SIZE 1 ...

  5. c语言的十进制转十六进制字符串,用c语言写一个函数把十进制转换成十六进制,该如何处理...

    用c语言写一个函数把十进制转换成十六进制 用c语言写一个函数把十进制转换成十六进制 网上找到一些,感觉有占乱 分享到: ------解决方案-------------------- #include ...

  6. C语言:十进制转换成十六进制字符串和数组

    1.十进制转换成十六进制字符串 #include<stdio.h> /*函数: 将十进制数字转换为十六进制,并将转换后的数字存储在字符串中并输出 */ void dec2hex(int n ...

  7. 蓝桥杯C/C++每日一练之十进制转换成十六进制

    第十三届蓝桥杯大赛个人赛省赛比赛将于2022年4月9日(星期六)举办,趁现在寒假的时间抓紧时间备战一下.因为博主本人报名是C/C++组,所以更新所有内容都是C/C++相关知识.题目全部都是蓝桥杯官网题 ...

  8. 十进制转换成二进制和十六进制的方法

    十进制转换成二进制和十六进制的方法 十进制数转换成二进制数-般分为两个步骤,即整数部分的转换和小数部分的转换. (1 )整数部分的转换 *除2取余法:*这种方法是由于D10=N2 =dn-1x2n-1 ...

  9. c语言中如何将字符串转成16进制,用c语言写一个函数把十进制转换成十六进制,该如何处理...

    用c语言写一个函数把十进制转换成十六进制 用c语言写一个函数把十进制转换成十六进制 网上找到一些,感觉有占乱 分享到: ------解决方案-------------------- #include ...

最新文章

  1. 湖南科技学院计算机科学与技术分数,湖南科技学院计算机科学与技术专业2016年在河南理科高考录取最低分数线...
  2. leangoo敏捷开发工具应用场景
  3. 程序人生:提高编程逻辑的 10 种最“疯狂”的方法
  4. Spark入门(一)单主standalone安装
  5. 天天说常识推理,究竟常识是什么?
  6. ajax实现多级联动菜单,jquery 实现二级/三级/多级联动菜单的思路及代码
  7. 字节流复制视频比拼效率
  8. 【转载】Katalon Studio 基本用法--录制脚本并查看测试报告
  9. golang使用pprof检查goroutine泄露
  10. jquery1.6.2源码拆分一
  11. 【FPGA】05_按键消抖
  12. WP下载,WP源码下载,WP模板主题下载
  13. 28岁学Java晚不晚?快30学java还来得及吗?
  14. 【软件测试】Fiddler拦截+京东登陆练习
  15. Python爬虫实战:分析《战狼2》豆瓣影评
  16. pdf的base64转成jpg的base64
  17. 突发!继22岁拼多多女员工猝死后,又一悲剧:拼多多员工家中跳楼自杀!公司紧急通告!...
  18. 关于java用JDBC连接数据库的代码
  19. python3调用新浪微博API 报HTTP Error 403: Forbid、400 Bad Request错误
  20. MATLAB小波变换

热门文章

  1. 中国的姓氏的日语表达
  2. 20. 挖掘机技术哪家强
  3. Tomcat架构解析之HTTP/2.0
  4. Halcon 获取内圆环圆心|半径
  5. 手机鸿蒙尝鲜版,华为鸿蒙2.0手机开发者Beta版发布,这些设备可优先尝鲜鸿蒙...
  6. Terminal capability cm required
  7. pycharm安装第三方库速度慢解决方法
  8. SpringAOP专题之6、Spring AOP中@Pointcut 12种用法
  9. Flink SQL:Queries(Windowing TVF)
  10. JavaScript保存cookie