#include <stdio.h>
#include <string.h>
#include "stdafx.h"
#include <assert.h>
#define MAX(i, j) (((i) > (j)) ? (i) : (j))
void swap(char *pc1, char *pc2)
{
*pc1 = *pc1 ^ *pc2;
*pc2 = *pc1 ^ *pc2;
*pc1 = *pc1 ^ *pc2;
}
void reverse(char *pcStr, int iLen)
{
assert(NULL != pcStr);
//printf("%s\n", pcStr);
int iIdx;
for (iIdx = 0; iIdx < iLen ; iIdx++)
{
swap(&pcStr[iIdx], &pcStr[iLen]);
iLen--;
}
//printf("%s\n", pcStr);
}
char* calculate(char *pcNum1, char *pcNum2)
{
assert(NULL != pcNum1);
assert(NULL != pcNum2);
int iLen1 = 0;
int iLen2 = 0;
iLen1 = strlen(pcNum1);
iLen2 = strlen(pcNum2);
int iLenMax = MAX(iLen1, iLen2);
reverse(pcNum1, iLen1 - 1);
reverse(pcNum2, iLen2 - 1);
//char acResult[iLenMax+ 1] = {0}; /* 存放结果 */
char *acResult = (char *)malloc(sizeof(char) * (iLenMax+1));
assert(NULL != acResult);
memset(acResult, '0', sizeof(char) * (iLenMax+1)); /* 注意初始化 */
acResult[iLenMax+1] = '\0';/* 注意最后一个位置为\0 */
int i;
/* 注意公共部分和非公共部分的相加 */
for (i = 0; i < iLenMax; i++)
{
if ((i < iLen1) && (i < iLen2)) /* 公共部分 */
{
acResult[i] = (pcNum1[i] - '0') + (pcNum2[i] - '0');
}
else if (i < iLen1)
{
acResult[i] = (pcNum1[i] - '0');
}
else
{
acResult[i] = (pcNum2[i] - '0');
}
}
/* 调整结果值 */
for (i = 0; i < MAX(iLen1, iLen2); i++) /* 注意边界值 */
{
acResult[i + 1] += acResult[i] / 10;
acResult[i] = (acResult[i] % 10) + '0';
}
reverse(acResult, strlen(acResult) - 1);
return (acResult[0] == '0') ? acResult + 1 : acResult; /* 注意返回值 */
}
int main()
{
char pcNum1[] = "123456";
char pcNum2[] = "45645";
char *p;
//reverse(pcNum1, strlen(pcNum1) - 1);
p = calculate(pcNum1, pcNum2);
printf("%s\n", p);
return 0;
}
分享到:
相关推荐
大数据加法运算器大数据加法运算器大数据加法运算器大数据加法运算器
大数据经济:大数据时代,互联网加法如何做?
总结来说,过去我们对数据做"减法",现在我们不减,⽽且持续在做"加法"。 2、what,⼤数据的概念及特征 ⼤数据主要体现在⼀个"⼤"⼤字上⾯,谈及⼤数据,我们经常⽤"4V"来描述,第⼀,Volume,即容量⼤、体积⼤,...
4个基本方法实现; myPower为次方运算; myMultiply为乘法运算; myPlus为加法运算; mySubtraction为减法运算;
。。。
。。。
。。。
。。。
ACM程序设计竞赛初级源码,解决大整数的加法问题
//加法 System.out.println(b1.add(b2)); //减法 System.out.println(b2.subtract(b1)); //乘法 System.out.println(b1.multiply(b2)); //除法 System.out.println(b2.divide(b1)); //BigDecimal ⾼精度⼩数运算 ...
我们会遇到超过long long int 数值范围的大数据的运算,这就需要借助字符串进行模拟大数的运算,这份资源就是大数运算的实例。
实验一的debug调试,实现加法运算,给力。
大数据实验 所有这些程序都是我的大数据课程的一部分。 注意:对于所有这些程序,数据太大而无法上载 Hadoop Map-Reduce 1.共同的朋友 Map Reduce程序可查找两个朋友之间的... 第一项工作是乘法,第二项工作是加法-矩阵
【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、...
ArchSummit深圳 2017年全球架构师峰会PPT合集(73份)。 ⽀付体系架构与实践 智能问答中的问句理解 支付系统架构与实践 ...架构的加法与减法 基于软硬件的弱网深度优化 机器学习平台混合云应用实践 等等文档
2.主要针对各个计算机相关专业,包括计算机科学、信息安全、数据科学与大数据技术、人工智能、通信、物联网等领域的在校学生、专业教师、企业员工。 3.项目具有丰富的拓展空间,不仅可作为入门进阶,也可直接作为...
时间有限,目前只实现了同号的加法 如果你要计算777+555的话,易语言本身的核心支持库已足够,但是如果你要计算77...7(100个7)+55...5(100个5)的话呢?就算长整数也满足不了你!这时候就是高精度整数类上场的...
Polyn.h #include #include #include typedef struct polyn { double coef; int expn; struct polyn* next;...}PolyNode, *PLinkList;...PLinkList CreatePolyn(int n);...//多项式的加法 PLinkList Subtraction(PLi
加法密码和乘法密码结合就构成仿射密码,仿射密码的加密算法是: C= Ek(m)=(k1*m+k2) mod n 一、仿射密码基本思路 加法密码和乘法密码结合就构成仿射密码,仿射密码的加密算法是: C= Ek(m)=(k1*m+k2) mod n