⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bigmultiply.c

📁 大整数相乘1422525621881好好学习
💻 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 + -