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

大数乘法

发布时间:2020-12-14 04:02:54 所属栏目:大数据 来源:网络整理
导读:#include?"iostream" ?? #include?"string" ?? using ? namespace ?std;?? int ?main( void )?? {?? ???? char ?str1[1000],str2[1000];?? ???? int ?i,j,len1,len2,len;?? bool ?flag= false ;?? ????cout "任意两个大数的乘法(用数组来模拟小学三年级的乘
  1. #include?"iostream"??
  2. #include?"string"??
  3. using?namespace?std;??
  4. int?main(void)??
  5. {??
  6. ????char?str1[1000],str2[1000];??
  7. ????int?i,j,len1,len2,len;??
  8. bool?flag=false;??
  9. ????cout<<"任意两个大数的乘法(用数组来模拟小学三年级的乘法竖式计算过程):"<<endl;??
  10. ????cout<<"请输入被乘数:";??
  11. ????gets(str1);??
  12. ????cout<<"请输入乘数:";??
  13. ????gets(str2);??
  14. ????len1=strlen(str1);??
  15. ????len2=strlen(str2);??
  16. int?*a=new?int[len1];??
  17. int?*b=int[len2];??
  18. ????len=len1*len2+1;??
  19. int?*result=?int[len];??
  20. ????for(i=0;i<len;i++)??
  21. ????????result[i]=0;??
  22. for(i=0;i<len1;i++)?//将字符串转换为整数,并倒置过来??
  23. ????????a[i]=str1[len1-1-i]-'0';??
  24. for(i=0;i<len2;i++)??
  25. ????????b[i]=str2[len2-1-i]-'0';??
  26. for(i=0;i<len1;i++)??//用数组来模拟小学三年级的乘法竖式计算过程??
  27. ????{??
  28. ????????for(j=0;j<len2;j++)??
  29. ????????????result[i+j]+=a[i]*b[j];??
  30. ????}??
  31. ????for(i=0;i<len;i++)???//处理进位的情况??
  32. ????{??
  33. ????????if(result[i]>9)??
  34. ????????{??
  35. ????????????result[i+1]+=result[i]/10;??
  36. ????????????result[i]%=10;??
  37. ????????}??
  38. ????cout<<"两个大整数相乘的结果为:";??
  39. for(i=len-1;i>=0;i--)??
  40. if(flag)??
  41. ????????????cout<<result[i];??
  42. else?if(result[i]!=0)??
  43. ????????{??
  44. ????????????cout<<result[i];??
  45. ????????????flag=true;??
  46. ????????}??
  47. ????}??
  48. ????cout<<endl;??
  49. delete?[]a;??
  50. delete?[]b;??
  51. delete?[]result;??
  52. ????system("pause");??
  53. return?0;??
  54. } ?

(编辑:李大同)

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

    推荐文章
      热点阅读