C语言大数相加

#include "stdafx.h"
#include <stdlib.h>
#include <stdio.h>
#include <string.h>

char *MulLargeNum(char *mulA ,char *mulB, char *result)
{
	if(mulA == NULL || mulB == NULL) return NULL;

	int lengthA = strlen(mulA);
	int lengthB = strlen(mulB);

	char *rBuf = new char[lengthA + lengthB + 1];
	memset(rBuf,0 ,lengthA + lengthB + 1);
	memset(result,0 ,lengthA + lengthB + 1);

	for (int i = 0; i < lengthA; i++)
	{
		for (int j = 0; j < lengthB; j++)
		{
			rBuf[i+j+1] += (mulA[i] -'0')*(mulB[j]-'0');
		}
	}

	for(int i = lengthA + lengthB - 1; i>0 ;i--)
	{
		rBuf[i-1] += rBuf[i]/10;
		rBuf[i] = rBuf[i]%10+'0';
	}
	
	if(rBuf[0] > 0)
	{
		memcpy(result,rBuf,strlen(rBuf));
	}
	else
	{		memcpy(result,&rBuf[1],strlen(&rBuf[1]));		
	}
	printf("%s * %s =  %s\n",mulA,mulB,result);
	delete rBuf;
	return result;	
}

int _tmain(int argc, _TCHAR* argv[])
{
	char *a = "1234";
	char *b = "4567";
	char buf[1000];
	MulLargeNum(a,b,buf);
	return 0;	
}

  本题主要考察点   1:函数返回值,为何返回值为char*,因为链式表达式可能使用

          2:参数检查

          3:基本算法功力

posted @ 2014-04-23 14:13  皁仩腄覺  阅读(221)  评论(0编辑  收藏  举报