一道C语言面试题——大数相乘的问题
2005-09-30 15:47
453 查看
#include "stdafx.h"
void Multiple(char A[], char B[], char C[])
{
int TMP, In=0, LenA=-1, LenB=-1;
while(A[++LenA] != '/0');
while(B[++LenB] != '/0');
int Index, Start = LenA + LenB - 1;
for(int i=LenB-1; i>=0; i--)
{
Index = Start--;
if(B[i] != '0')
{
for(int In=0, j=LenA-1; j>=0; j--)
{
TMP = (C[Index] - '0') + (A[j] - '0') * (B[i] - '0') + In;
C[Index--] = TMP % 10 + '0';
In = TMP / 10;
}
C[Index] = In + '0';
}
}
}
int main(int argc, char* argv[])
{
char A[] = "218392444444444444888888888800088888889";
char B[] = "388888888888999999999999945669999999988";
char C[sizeof(A) + sizeof(B) - 1];
for(int k=0; k<sizeof(C); k++)
C[k] = '0';
C[sizeof(C)-1] = '/0';
Multiple(A, B, C);
for(int i=0; C[i] != '/0'; i++)
printf("%c", C[i]);
return getchar();
}
void Multiple(char A[], char B[], char C[])
{
int TMP, In=0, LenA=-1, LenB=-1;
while(A[++LenA] != '/0');
while(B[++LenB] != '/0');
int Index, Start = LenA + LenB - 1;
for(int i=LenB-1; i>=0; i--)
{
Index = Start--;
if(B[i] != '0')
{
for(int In=0, j=LenA-1; j>=0; j--)
{
TMP = (C[Index] - '0') + (A[j] - '0') * (B[i] - '0') + In;
C[Index--] = TMP % 10 + '0';
In = TMP / 10;
}
C[Index] = In + '0';
}
}
}
int main(int argc, char* argv[])
{
char A[] = "218392444444444444888888888800088888889";
char B[] = "388888888888999999999999945669999999988";
char C[sizeof(A) + sizeof(B) - 1];
for(int k=0; k<sizeof(C); k++)
C[k] = '0';
C[sizeof(C)-1] = '/0';
Multiple(A, B, C);
for(int i=0; C[i] != '/0'; i++)
printf("%c", C[i]);
return getchar();
}
相关文章推荐
- C语言大数相乘问题普通算法->acm.scu.edu.cn:1002
- 一道C语言面试题printf输出问题,高手们都来看看吧
- C语言中的大数相乘问题
- C语言大数相乘的问题
- C语言实现两个大数相乘问题
- 一道c的面试题,大数相乘。
- 一道c的面试题,大数相乘(转)
- 一道C语言面试题——邮票组合问题
- 一道c的面试题,大数相乘
- 大数相乘问题
- 华为OJ机试题目:两个大整数相乘(纯C语言实现两个大整数相乘,两种方法实现大数相乘)
- [笔记]一道C语言面试题:IPv4字符串转为UInt整数
- 【我解C语言面试题系列】003 死循环格式问题小结?
- 一道有趣的面试题————待解决的问题
- [笔记]一道C语言面试题:得到整数的M进制表示字符串
- C语言 乘法 大数相乘
- 大数相乘问题
- 一道面试题:关于fork的问题
- 一道C语言面试题
- 剑指offer_面试题12_打印1到最大的n位数(大数问题)