- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
* * * BToD()函数的实现 /*函数的功能是计算k进制的字符串str对应的十进制数*/ int BToD(char str[], int k); 假设str: ”3456”, 进制为10, 将十进制的”3456”转换为十进制整数3456 //d将不断左移(乘10),再加上个位 d=0; 扫描字符串”3456”: i=0: d=d*10+3=3; i=1:d=3*10+4=34; i=2:d=34*10+5=345; i=3: d=345*10+6=3456 假设str: ”1101”, 进制为2, 将二进制的”1101”转换为十进制整数 //d将不断左移(乘2),再加上个位 d=0; 扫描字符串”1101”: i=0: d=d*2+1=1; i=1:d=1*2+1=3; i=2:d=3*2+0=6; i=3: d=6*2+1=13 程序7-6的main() int main(void) { char str1[N], str2[N], str3[N]; int a, b, c, temp; scanf(%s%s%s, str1, str2, str3); /* 输入三个二进制数 */ a = BToD(str1); /* 函数调用三次,得到三个十进制数 */ b = BToD(str2); c = BToD(str3); if(a b) { temp = a; a = b; b = temp; } if(a c) { temp = a; a = c; c = temp; } if(b c) { temp = b; b = c; c = temp; } printf(%d %d %d\n, a, b, c); return 0; } 程序7-6的BToD() /* 把一个二进制数转换成对应的十进制数 */ int BToD(char str[]) { int i, d; d = 0; for(i = 0; str[i] != \0 ; i++) d = d * 2 + (str[i] - 0); return d; } 7.4.3 最大值——多种进制 解决问题:输入n个非负整数,每个数的进制由其后面的数字k指定,k=2且k=10,输出最大的数对应的十进制数。 思路分析: (1)k进制数要用字符串来存储 (2)借鉴、将上一节的函数BToD()改写为函数KToD(),将一个K进制数转化为十进制整数。 (3)利用第四章所学的求最大值的方法求出其中的最大值。 程序7-7 int main(void) { 读入个数n; max = 0; for i=1,2,…, n { 读入数字串存入a,读入进制存入k; 将k进制的a转换为十进制,存入d; 如果 d max, 更新max } 输出max; } scanf(%s%d, a, k); d = KToD(a, k); int KToD(char str[], int k); int main(void) { int i, n, k, d, max; char a[50]; scanf(%d, n); max = 0; /*所有输入为非负数*/ for(i=1; i=n; i++) { scanf(%s%d, a, k); d = KToD(a, k); if(d max) max = d; } printf(%d\n, max); return 0; } 程序7-7的KToD() /*将k进制数str转换为十进制*/ int KToD(char str[], int k) { int i, sum; sum = 0; for(i = 0; str[i] != \0; i++) sum = sum * k + (str[i] - 0); return sum; } 课堂练习 改写BToD函数,将k(k = 16)进制转换为10进制。 7.4.4 十进制转换为r进制 问题1:将一个十进制n(0n109)转换为16进制数输出。 问题2:将一个十进制n(0n109)转换为二进制数存入字符串str。 问题3:将一个十进制n(0n109)转换为r(1r17)进制数存入字符串str。 问题1的求解 分析: 以十进制格式读
文档评论(0)