- 1、本文档共25页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
C语言-进制转化及高精度加法
ACM程序设计 福州大学至诚学院 冯新 第七讲 进制转化 及高精度加法 数制概念 数制,是使用一组数字符号来表示数的体系。一个理想的记数系统能够:有效地描述一组数(例如,整数、实数);所有的数对应唯一的表示(至少有一个标准表示法)。 记数系统可以按照进位制,可分为十进制、二进制、八进制等 问题一 输入一个不大于2^31的10进制正整数,将其转化为2进制。 输入数据有多组,以EOF结束。 演示(将十进制250转化为2进制) 250 / 2 = 125 … 0 ↑ =125 / 2 = 62 … 1 │ 62 / 2 = 31 … 0 │ 31 / 2 = 15 … 1 │ 15 / 2 = 7 … 1 │ 7 / 2 = 3 … 1 │ 3 / 2 = 1 … 1 │ 1 / 2 = 0 … 1 │ 举一反三 输入两个整数n,m,其中2=m10,n为十进制数,将n转化为m进制数。 输入数据有多组,以EOF结束。 问题二 输入一个不大于2^31的10进制正整数,将其转化为16进制。 以A表示10 B表示11 ..... F表示15 输入数据有多组,以EOF结束。 问题三 输入一个长度不大于32位的二进制正整数,将其转化为十进制。(转化后的十进制数范围不会超过int型) 输入数据有多组,以EOF结束。 问题分析 二进制数转换为十进制数 二进制数第0位的权值是2的0次方,第1位的权值是2的1次方,第2位的权值是2的2次方…… 演示(将二进制数:0110 0100,转换为10进制) 第0位 0 * 2^0 = 0 第1位 0 * 2^1 = 0 第2位 1 * 2^2 = 4 第3位 0 * 2^3 = 0 第4位 0 * 2^4 = 0 第5位 1 * 2^5 = 32 第6位 1 * 2^6 = 64 第7位 0 * 2^7 = 0 对等式右边求和得: 0110 0100(2)=100(10) #includestdio.h #includestring.h int main() { char s[33]; int i,ans,t; while(scanf(%s,s)!=EOF) { ans=0; for(i=strlen(s)-1,t=1;i=0;i--,t*=2) ans+=t*(s[i]-0); printf(%d\n,ans); } return 0; } 高精度概念 在某些计算中,参与运算的数的范围大大超出了标准数据类型(int,long long)能表示的范围的运算,例如求两个长度1000位的整数的和。这个时候要怎么办? 于是,我们想到了办法,将这个数字拆开,拆成一位一位的存储到一个数组中,用一个数组去表示一个数字,这样表示的数字就被称为高精度数。 例如将123456789012(逆序存)存入int 型数组a中为 例题 Input 输入两个大整数a和b,每个整数的长度将不会超过1000. 输入数据有多组,以EOF结束 Output 对于每个测试案例,你要输出a+b。每组一行 Sample Input 1 2 112233445566778899 998877665544332211 Sample Output 3 1111111111111111110 解题思路: 最基础的高精度题。 解题过程分为以下几步: 1.定义相关变量及用字符串数组读入高精度数 2.将字符串数组转化为int数组 3.做加法及处理进位 4.输出 for(i=0;i1005;i++) { Ia[i]=Ib[i]=0; //对两个整型数组进行初始化 } scanf(%s%s,Sa,Sb); //读入大数a b 2.将字符串数组转化为int数组 len1=strlen(Sa); for(i=len1-1,j=0;i=0;i--) Ia[j++]=Sa[i]-0; len2=strlen(Sb); for(i=len2-1,j=0;i=0;i--) Ib[j++]=Sb[i]-0; //注意,这里将字符型的每一位存入int数组时, //采取倒序存储,即Ia[0]存储大数的各位, //Ia[1]存储十位......便于做加法是各数位的对齐 3.做加法及进位 k=len1len2?len1:len2;//k为两个串中的较长的一个 for(i=0;ik;i++) Ia[i]+=Ib[i]; for(i=0;i=k;i++){ Ia[i+1]+=Ia[i
您可能关注的文档
- COPD呼衰治疗-蔡柏蔷.ppt
- COPD创议讲稿朝阳医院.ppt
- COPD 的护理进展6ppt.ppt
- COPD稳定期治疗.ppt (121.ppt
- COPD治疗药物-支气管舒张剂1.ppt
- Copy of Incident injury investigation中文.ppt
- Coreldraw文本制作.ppt
- CorelDraw绘制一杯红酒.ppt
- Cosmetic Logo Translation 化妆品品牌商标转换.ppt
- Coship CiTV2.3系统功能介绍.ppt
- 品牌拟人化策略对消费者品牌推崇影响的研究.docx
- 2025年结构工程师考前冲刺练习试题及参考答案详解(最新).docx
- Unit 8 Knowing the world (重难词汇精炼)(解析版)-2025-2026学年七年级英语上册(冀教版2024).docx
- 2025年结构工程师考前冲刺练习试题及参考答案详解一套.docx
- 小学六年级下数学试卷【培优a卷】.docx
- 2025年结构工程师考前冲刺练习试题及参考答案详解【新】.docx
- 2025年结构工程师考前冲刺练习试题及参考答案详解【突破训练】.docx
- 2025年结构工程师考前冲刺练习题(名师推荐)附答案详解.docx
- 2025年结构工程师考前冲刺练习题附完整答案详解【名师系列】.docx
- 2025年结构工程师考前冲刺练习题附完整答案详解(网校专用).docx
文档评论(0)