加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

大数相乘算法

发布时间:2020-12-14 03:00:40 所属栏目:大数据 来源:网络整理
导读:? ? 来自http://www.voidcn.com/article/p-qwqzhqvk-po.html [cpp] ? view plain copy #include?stdio.h ?? #include?stdlib.h ?? #include?string.h ?? ?? #define?N?100 ?? /* ? ?*将在数组中保存的字符串转成数字存到int数组中 ? */ ?? void ?getdigits(

? ? 来自http://www.voidcn.com/article/p-qwqzhqvk-po.html

[cpp]? view plain copy
  1. #include?<stdio.h>??
  2. #include?<stdlib.h>??
  3. #include?<string.h>??
  4. ??
  5. #define?N?100??
  6. /*?
  7. ?*将在数组中保存的字符串转成数字存到int数组中?
  8. */??
  9. void?getdigits(int?*a,char?*s)??
  10. {??
  11. ?????int?i;??
  12. ?????char?digit;??
  13. int?len?=?strlen(s);??
  14. ??
  15. ?????//对数组初始化??
  16. ?????for(i?=?0;?i?<?N;?++i)??
  17. ???????????*(a?+?i)?=?0;??
  18. for(i?=?0;?i?<?len;?++i){??
  19. ???????????digit?=?*(s?+?i);??
  20. ???????????*(a?+?len?-?1?-?i)?=?digit?-?'0';//字符串s="12345",因此第一个字符应该存在int数组的最后一个位置??
  21. ?????}??
  22. }??
  23. ?*将数组a与数组b逐位相乘以后存入数组c?
  24. ?*/??
  25. void?multiply(int?*b,87); font-weight:bold; background-color:inherit">int?*c)??
  26. int?i,j;??
  27. //数组初始化??
  28. for(i?=?0;?i?<?2?*?N;?++i)??
  29. ???????????*(c?+?i)?=?0;??
  30. ???????????*数组a中的每位逐位与数组b相乘,并把结果存入数组c?
  31. ??????*比如,12345*12345,a中的5与12345逐位相乘?
  32. ??????*对于数组c:*(c+i+j)在i=0,j=0,1,2,3,4时存的是5与各位相乘的结果?
  33. ??????*而在i=1,4时不光会存4与各位相乘的结果,还会累加上上次相乘的结果.这一点是需要注意的!!!?
  34. ?????*/??
  35. ???????????for(j?=?0;?j?<?N;?++j)??
  36. ?????????????????*(c?+?i?+?j)?+=?*(a?+?i)?*?*(b?+?j);??
  37. /*?
  38. ??????*这里是移位、进位?
  39. for(i?=?0;?i?<?2?*?N?-?1;?++i)??
  40. ?????{??
  41. ???????????*(c?+?i?+?1)?+=?*(c?+?i)/10;//将十位上的数向前进位,并加上原来这个位上的数??
  42. ???????????*(c?+?i)?=?*(c?+?i)%10;//将剩余的数存原来的位置上??
  43. ?????}??
  44. }??
  45. int?main()??
  46. ????int?a[N],b[N],c[2*N];??
  47. ????char?s1[N],s2[N];??
  48. int?j?=?2*N-1;??
  49. int?i;??
  50. ??????
  51. ????printf("input?the?first?number:");??
  52. ????scanf("%s",s1);??
  53. ????printf("/ninput?the?second?number:");??
  54. ??????
  55. ????getdigits(a,s1);??
  56. ????getdigits(b,s2);??
  57. ????multiply(a,b,c);??
  58. ????while(c[j]?==?0)??
  59. ???????????????j--;??
  60. for(i?=?j;i?>=?0;?--i)??
  61. ???????????printf("%d",c[i]);??
  62. ????printf("/n");??
  63. ????return?0;??
  64. }??

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读