《C语言程序设计方案-大数运算 .docx》由会员分享,可在线阅读,更多相关《C语言程序设计方案-大数运算 .docx(4页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精品名师归纳总结#include #include #include #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 b
2、reak。 / 假如没有找到 , 就说明到终点 脱离循环*point = 。/ 找到 ,后 将其转变为 空格sscanfpoint, %d, &shuindex+。 / 从空格处向后猎取数字到 num 中int i, temp 。 /index 记录数组中数的个数将数组反转 高位在后 低位在前fori = 0 。 i len2 . len1: len2 。 /以两个数串种最长的长度为基准作为运算次数int index, delta = 0 。forindex = 0 。 index 1 & s1len1-1 = s2len2-1 /.假如两个数串的长度相同且高位相同 就不断向后缩减长度 len
3、1- 。 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 。
4、/ 这里开头从低位向高位运算forindex = 0 。 index len 。 index+resindex = upindex - delta - dnindex。ifresindex 1 & resindex - 1 = 0/消去前导 0 但至少保留 1 位index- 。*len0 = index 。 /讲长度赋值给主函数中的len0return up = s1 。 / 假如 s1 的值大就返回真否就返回假在主函数中用来判定结果的符号int main/分别定义了第一个数其次个数 和运算结果的数组长度 以及正负int shu1MAXN, len1, isneg1 。int shu2MAX
5、N, len2, isneg2 。int resMAXN, len0, isneg0 。/.enter 猎取输入的字符串可编辑资料 - - - 欢迎下载精品名师归纳总结char enterMAXN。whilegetsenter / 猎取一行ifenter0 = 0break 。 / 假如为空字符串就退出循环char* point = strchrenter, . 。 /定义一个字符指针从 enter 中找. 字符作为分界线*point = 0 。/ 在找到的 。字符转变为字符串结尾标志这样把 enter 划分为两个字符串 一个以 enter 打头 一个以 point+1memsetshu1,
6、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 。 index-/ 将储存结果的res 数串从高到低输出ifindex = len0 - 1/假如是最高位 就依据标记 判定是否输出负号-ifisneg0 & resindex printf-。 / 有一种情形除外就是仅有 1 位且为 0 这时候不输出 -号printf%d, resindex。elseprintf,%04d, resindex。/ 其他数保留前导零4 位输出printfn 。return 0 。可编辑资料 - - - 欢迎下载精品名师归纳总结可编辑资料 - - - 欢迎下载