📄 bigmultiply.c
字号:
#include <stdio.h>
#include <string.h>
#define MAX 100
void Input(char *x, char *y)
{
printf("Please input your first number:");
scanf("%s", x);
printf("Please input your second number:");
scanf("%s", y);
}
void Output(char *x)
{
printf("The result is %s\n", x);
}
void Reverse(char *s, int len)
{
int i, temp;
for(i = 0; i < len / 2; ++i)
{
temp = s[i];
s[i] = s[len - 1 - i];
s[len - 1 - i] = temp;
}
}
void Char2num(char *s, int len)
{
int i;
for(i = 0; i < len; ++i)
s[i] = s[i] - '0';
}
void Num2char(char *s, int len)
{
int i;
for(i = 0; i < len; ++i)
s[i] = s[i] + '0';
s[len] = '\0';
}
void Multiply(char *x, char *y, char *z)
{
int xlen = strlen(x), ylen = strlen(y), zlen = xlen + ylen;
int i, j, k, temp;
Reverse(x, xlen);
Reverse(y, ylen);
Char2num(x, xlen);
Char2num(y, ylen);
memset(z, 0, zlen);
for(i = 0; i < xlen; ++i)
for(j = 0; j < ylen; ++j)
{
z[i + j] += x[i] * y[j];
for(k = i + j; z[k] >= 10; ++k)
{
temp = z[k];
z[k] = temp % 10;
z[k + 1] += temp / 10;
}
}
if(z[zlen - 1] == 0) --zlen;
Reverse(z, zlen);
Num2char(z, zlen);
}
int main(int argc, char *argv[])
{
char a[MAX], b[MAX], c[MAX];
Input(a, b);
Multiply(a, b, c);
Output(c);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -