博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
任意长度的两个正整数相乘
阅读量:5746 次
发布时间:2019-06-18

本文共 2051 字,大约阅读时间需要 6 分钟。

练练手,题目出自

两个大数相乘:char* multiply(char*,char*)。给了两个字符串,每个都是代表了一个很长的10进制表示的数, 比如 String str1 = "23456789009877666555544444"; String str2 = "346587436598437594375943875943875", 最后求出它们的乘积。 不用jdk的数学运算包BigInteger.或者类似的包。

 

#include 
#include
#include
#define MULTIPLY_SIZE 200int m_atoi(char c);char *multiply(char *s, char *muldstr, char *mulerstr);char *reverse_string(char *str);//ascii to charint m_atoi(char c){ return ((c>='0')&&(c<='9'))? (c-'0') : 0;}char *multiply(char *s, char *muldstr, char *mulerstr){ int muldlen = strlen(muldstr); int mulerlen = strlen(mulerstr); int count = 0; int i, j; for(i=muldlen-1; i>=0; i--, count++){ char *ptrs = s + count; int carrier = 0; int muld = m_atoi(muldstr[i]); for(j=mulerlen-1; j>=0; j--){ int mul, temp, mod; temp = (m_atoi(*ptrs)+carrier); mul = m_atoi(mulerstr[j]); temp = temp + muld * mul; *ptrs = temp % 10 + '0'; carrier = temp/10; ptrs++; } if(carrier != 0){ *ptrs = carrier + '0'; } } reverse_string(s); return s;}char *reverse_string(char *s){ int len = strlen(s); char *first = s; char *last = s + len -1; while(last > first){ char c = *first; *first = *last; *last = c; first++; last--; } return s;}int main(int argc, char *argv[]){ /* char s1[200]; char s2[200]; char *s; scanf_s("%s", s1, sizeof(s1)); scanf_s("%s", s2, sizeof(s2)); */ char s1[200] = "23456789009877666555544444"; char s2[200] = "346587436598437594375943875943875"; char *s; s = (char *)malloc(sizeof(char)*MULTIPLY_SIZE); memset(s, 0, MULTIPLY_SIZE); multiply(s, s1, s2); printf("%s\n", s); free(s); system("pause"); return 0;}

8129828373763903512004369615410968394975299532195012080500

转载于:https://www.cnblogs.com/peer/archive/2012/12/30/2839834.html

你可能感兴趣的文章
关于爱情只有一句忠告
查看>>
CentOS 7下安装部署Oracle11g图文教程
查看>>
F#初学笔记06
查看>>
实战:将企业域名解析委派给企业DNS服务器
查看>>
在Lync 2013环境部署Office Web Apps
查看>>
微软大会Ignite,你准备好了么?
查看>>
读书笔记-高标管事 低调管人
查看>>
Master带给世界的思考:是“失控”还是进化
查看>>
用户和开发者不满苹果iCloud问题多多
查看>>
java.lang.UnsatisfiedLinkError:no dll in java.library.path终极解决之道
查看>>
我的工具:文本转音频文件
查看>>
【许晓笛】从零开始运行EOS系统
查看>>
【跃迁之路】【460天】程序员高效学习方法论探索系列(实验阶段217-2018.05.11)...
查看>>
C++入门读物推荐
查看>>
TiDB 源码阅读系列文章(七)基于规则的优化
查看>>
面试中会遇到的正则题
查看>>
Spring之旅第八站:Spring MVC Spittr舞台的搭建、基本的控制器、请求的输入、表单验证、测试(重点)...
查看>>
数据结构与算法——常用排序算法及其Java实现
查看>>
你所不知的Webpack-多种配置方法
查看>>
React.js 集成 Kotlin Spring Boot 开发 Web 应用实例详解
查看>>