小说网 找小说 无限小说 烟雨红尘 幻想小说 酷文学 深夜书屋

基于visual Studio2013解决面试题之0907大数乘法




题目



解决代码及点评

/*
    大整数数相乘的问题 
	两个超过范围的大数进行相乘,需要用字符串来表示数组
	进行相乘
	
*/

#include <iostream>
using namespace std;

void Multiple(char *pszBuf1, char *pszBuf2, char *pszBuf3)
{
    int nLen1 = strlen(pszBuf1);
    int nLen2 = strlen(pszBuf2);
    
    int i, j, In, nBegin = nLen1 + nLen2 - 1;
    for (i = nLen1 - 1; i >= 0; i--)
    {
        In = 0;
        int nIndex = nBegin--;
        for (j = nLen2 - 1; j >= 0; j--)
        {
            int nTmp = (pszBuf3[nIndex] - '0') + (pszBuf1[i]-'0')*(pszBuf2[j]-'0') + In;
            pszBuf3[nIndex--] = nTmp % 10 + '0';
            
            In = nTmp / 10;
        }
        pszBuf3[nIndex] = In + '0';
    }
    
}

int main()
{
    char szBuf1[] = "12";
    char szBuf2[] = "12";
    int nLen3 = sizeof(szBuf1)+sizeof(szBuf2) - 1;
    char *pszBuf3 = new char[nLen3];
	int i;
    for (i = 0; i < nLen3; i++)
    {
        pszBuf3[i] = '0';
    }
    pszBuf3[i - 1] = '\0';
    Multiple(szBuf1, szBuf2, pszBuf3);
    
    while (*pszBuf3 == '0')
    {
        pszBuf3++;
    }
    while (*pszBuf3 != '\0')
    {
        cout<<*pszBuf3++;
    }
    cout<<endl;
    system("pause");
    return 0;
}

代码下载及其运行

代码下载地址:http://download.csdn.net/detail/yincheng01/6704519

解压密码:c.itcast.cn


下载代码并解压后,用VC2013打开interview.sln,并设置对应的启动项目后,点击运行即可,具体步骤如下:

1)设置启动项目:右键点击解决方案,在弹出菜单中选择“设置启动项目”


2)在下拉框中选择相应项目,项目名和博客编号一致

3)点击“本地Windows调试器”运行


程序运行结果









posted on 2013-12-20 01:25  牛栏山1  阅读(126)  评论(0编辑  收藏  举报

导航