欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    C语言程序设计方案-大数运算 .docx

    • 资源ID:13052796       资源大小:21.11KB        全文页数:4页
    • 资源格式: DOCX        下载积分:4.3金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要4.3金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    C语言程序设计方案-大数运算 .docx

    精品名师归纳总结#include <stdio.h> #include <string.h> #include <ctype.h> #define MAXN 1010/*将中意 XX,XXXX,XXXX格式的字符串 s 转换为数字串储备在数组shu 中*/int get_shuchar *s, int shuint index = 0 。char* point 。sscanfs, "%d", &shuindex+。 / 从 s中猎取第一个数到num 中for 。 / 先找',' 假如找到了将该位置的字符转变为 ' '空格后再从这个位置读取数字point = strchrs, ',' 。/从 s 中找到第一个 ',' 将其的址存在 point 中ifpoint = NULL break。 / 假如没有找到 ',' 就说明到终点 脱离循环*point = ' ' 。/ 找到 ','后 将其转变为 ' '空格sscanfpoint, "%d", &shuindex+。 / 从空格处向后猎取数字到 num 中int i, temp 。 /index 记录数组中数的个数将数组反转 高位在后 低位在前fori = 0 。 i < index / 2 。 i+ temp = shui 。shui = shuindex - i - 1。shuindex - i - 1 = temp 。return index 。 /返回 index 的值 即数组长度 留意长度比下标大1/*做加法的函数 适用于同号的情形*/int addint *s1, int len1, int *s2, int len2, int *resint len = len1 > len2 . len1: len2 。 /以两个数串种最长的长度为基准作为运算次数int index, delta = 0 。forindex = 0 。 index < len 。 index+/ 从低位到高位进行运算resindex = s1index + s2index + delta。delta = resindex / 10000 。resindex %= 10000 。ifdelta resindex+ = delta。/假如最终仍有进位就数位 +1 并且进位作为最高位return index 。/ 返回结果的长度可编辑资料 - - - 欢迎下载精品名师归纳总结/*做减法的函数 适用于异号的情形*/int subint *s1, int len1, int *s2, int len2, int *res, int *len0int len, *up, *dn。 /len 用来记录运算次数up 指向确定值较大的数dn 指向确定值较小的数whilelen1 = len2 && len1 > 1 && s1len1-1 = s2len2-1 /.假如两个数串的长度相同且高位相同 就不断向后缩减长度 len1- 。 len2- 。 / 由于相同的高位会被抵消但是这个循环至少给两个数串留1 位len = len1 > len2 . len1: len2 。 /取较长的长度作为运算次数iflen1 .= len2/.当两数串长度不等的时候up = len1 > len2. s1: s2 。 /. 长度长的确定值确定大赋值给 up dn = up = s1. s2: s1 。 /. 短的给 dnelse/ 当两数串长度相等的时候up = s1len1-1 > s2len2-1. s1: s2 。/比较最高位的值大的数给 up dn = up = s1. s2: s1 。int index, delta = 0 。/ 这里开头从低位向高位运算forindex = 0 。 index < len 。 index+resindex = upindex - delta - dnindex。ifresindex < 0 /发生借位resindex += 10000 。delta = 1 。elsedelta = 0 。whileindex > 1 && resindex - 1 = 0/消去前导 0 但至少保留 1 位index- 。*len0 = index 。 /讲长度赋值给主函数中的len0return up = s1 。 / 假如 s1 的值大就返回真否就返回假在主函数中用来判定结果的符号int main/分别定义了第一个数其次个数 和运算结果的数组长度 以及正负int shu1MAXN, len1, isneg1 。int shu2MAXN, len2, isneg2 。int resMAXN, len0, isneg0 。/.enter 猎取输入的字符串可编辑资料 - - - 欢迎下载精品名师归纳总结char enterMAXN。whilegetsenter / 猎取一行ifenter0 = '0'break 。 / 假如为空字符串就退出循环char* point = strchrenter, '.' 。 /定义一个字符指针从 enter 中找'.' 字符作为分界线*point = '0' 。/ 在找到的 '。'字符转变为字符串结尾标志这样把 enter 划分为两个字符串 一个以 enter 打头 一个以 point+1memsetshu1, 0, sizeofshu1 。/讲两个数串清零 这一步特别重要memsetshu2, 0, sizeofshu2 。/由于对于长度不等的数串做运算的时候我们都是将短的数串后面当作0 看待的len1 = get_shuenter, shu1。/ 将第一个字符串中的数猎取到num1 中len2 = get_shupoint + 1, shu2 。 /将其次个字符串中的数猎取到num2 中ifshu1len1 - 1 < 0/假如第一个字符串最高为位负shu1len1 - 1 = -shu1len1 - 1 。/. 就转变为正isneg1 = 1 。/ 并且将负标记设为1elseisneg1 = 0 。/ 否就设为 0 ifshu2len2 - 1 < 0/同理isneg2 = 1 。shu2len2 - 1 = -shu2len2 - 1 。else/*. 我们将数串都看作正的并且标记其正负 这样利于运算 */ isneg2 = 0 。ifisneg2 = isneg1/同号时 就看作加法len0 = addshu1, len1, shu2, len2, res 。isneg0 = isneg1 。else/ 异号时 就看作减法ifsubshu1, len1, shu2, len2, res, &len0/假如 num1 的数值大isneg0 = isneg1 。/ 就最终结果的符号跟随num1elseisneg0 = isneg2 。/ 否就跟随 num2int index 。forindex = len0 - 1 。 index >= 0 。 index-/ 将储存结果的res 数串从高到低输出ifindex = len0 - 1/假如是最高位 就依据标记 判定是否输出负号'-'ifisneg0 && resindex printf"-"。 / 有一种情形除外就是仅有 1 位且为 0 这时候不输出 '-'号printf"%d", resindex。elseprintf",%04d", resindex。/ 其他数保留前导零4 位输出printf"n" 。return 0 。可编辑资料 - - - 欢迎下载精品名师归纳总结可编辑资料 - - - 欢迎下载

    注意事项

    本文(C语言程序设计方案-大数运算 .docx)为本站会员(C****o)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开