首页 / 日志 / 我的编程学习日志(2)
我的编程学习日志(2)
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了我的编程学习日志(2),小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1368字,纯文字阅读大概需要2分钟。
内容图文
![我的编程学习日志(2)](/upload/InfoBanner/zyjiaocheng/534/2dd4f50d2ea743dbafceea639447d55e.jpg)
继续1中的进制转换问题,上一个程序以及实现了一个简单的进制转换,不过他却还可以改进,下面就来谈谈他的改进思路及实现。 一、省略数字转字母的过程 上个程序中用一个if判断来把10以上的数字用字母输出,即: for(i=i-1;i=0;i--) { if(yu[i]10) { yu[i]=yu
继续1中的进制转换问题,上一个程序以及实现了一个简单的进制转换,不过他却还可以改进,下面就来谈谈他的改进思路及实现。
一、省略数字转字母的过程
上个程序中用一个if判断来把10以上的数字用字母输出,即:
for(i=i-1;i>=0;i--) { if(yu[i]>10) { yu[i]=yu[i]+55; cout<<(char)yu[i]; } else cout<<yu[i]; }
这个做法显然增加了程序执行的时间,因为没有要求转换的数字要用于计算,就可以在保存余数是把余数保存为字符,省略数字转字母的过程:
char list[]="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmn"; int main() { char yu[100]; int n,m,i; i=0; cin>>n; cin>>m; while(n) { yu[i]=list[n%m]; n=n/m; i++; } }
这样就不用判断直接输出了!
二、用递归代替循环
想想我们的转换思路,我们先用n/m取余数,再用他的商除以m取余,即:(n/m)/m,这样一直循环下去,那么我们就可以用递归来代替循环了,同时也省略了输出的for循环,只要在主函数输入n,m即可,实现过程如下:
void solve(int n,int m) { if(n) { solve(n/m,m); cout<<n%m; } } int main() { int n,m; cin>>n; cin>>m; solve(n,m); }
当然,这里没做数字变成字母的转换。
关于改进,我能想到的就这么多,还有其他方法的人可以提出来一起讨论。
内容总结
以上是互联网集市为您收集整理的我的编程学习日志(2)全部内容,希望文章能够帮你解决我的编程学习日志(2)所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。