C语言【微项目19】—大整数字符串乘法器[纯字符串乘法][乘法表与加法表]【2022-11-27】

news2025/2/25 16:24:04

C语言【微项目19】—大整数字符串乘法器[纯字符串乘法][乘法表与加法表]【2022-11-27】

  • 1.函数功能
  • 2 简要测试结果
  • 3.BigInterNoLimitMutiString.c
  • 3.大整数字符串乘法器实现思路
  • 4. 大整数字符串乘法器典型使用流程main.c

【TDTX】
【C99】
【编译与运行环境】64位Windows操作系统,TDM-gcc 4.9.2 64bit(-std=c99)编译

项目Gitee仓库】C语言-微项目。

【简介】C语言大整数乘法器,纯字符串处理,根据人手算乘法的方式,精确相乘,字符串乘法,最后可以数字格式化输出。

1.函数功能

函数作用
char* add(char a,char b)个位数加法运算-直接查加法表-switch方式
char* mutip(char a,char b)个位数乘法运算-直接查乘法表-switch方式
void addToResultForMutip(char* result,char* toAdd)乘法器用的大整数字符串加法运算
char* makeNoLimitMutip(char* ta,char* tb)大整数字符串乘法运算
void printAddTables(void)输出10×10表格-加法表
void printMutiTables(void)输出10×10表格-乘法表
void printFormatNumber(char* number)将数字带逗号分隔的格式化输出
void printNumber(char* number)将数字原样非格式化输出

2 简要测试结果

1.测试数据如下:
  其中,第一个数字表示测试的是n位乘n位的运算,第二个数字是C语言采用clock_t方式计算出的时间,如“120,0.016”表示一个120位整数乘以一个120位整数,乘法完成得到积的运行时间为0.016。

30,0.0
40,0.0
60,0.0
80,0.015
100,0.015
120,0.016
140,0.031
160,0.047
180,0.063
200,0.098
220,0.125
240,0.157
280,0.266
320,0.390
360,0.562
400,0.766
440,1.015
480,1.333
560,2.065
640,3.106
960,10.527
1920,86.268

2.乘法测试结果
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.BigInterNoLimitMutiString.c

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>

char addResults[2] = {'0','0'}; 
char mutiResults[2] = {'0','0'}; 

char* add(char a,char b)
{
	//清空结果 
	addResults[0] = '0';
	addResults[1] = '0';
		
	if(a == '0')
	{
		addResults[0] = '0';
		addResults[1] = b;
		return addResults;
	}
	else if(b == '0')
	{
		addResults[0] = '0';
		addResults[1] = a;
		return addResults;
	}

	switch(a)
	{
		case '1':
			switch(b)
			{
				case '1':
					addResults[0] = '0';
					addResults[1] = '2';
					return addResults;
				case '2':
					addResults[0] = '0';
					addResults[1] = '3';
					return addResults;
				case '3':
					addResults[0] = '0';
					addResults[1] = '4';
					return addResults;
				case '4':
					addResults[0] = '0';
					addResults[1] = '5';
					return addResults;
				case '5':
					addResults[0] = '0';
					addResults[1] = '6';
					return addResults;	
				case '6':
					addResults[0] = '0';
					addResults[1] = '7';
					return addResults;	
				case '7':
					addResults[0] = '0';
					addResults[1] = '8';
					return addResults;	
				case '8':
					addResults[0] = '0';
					addResults[1] = '9';
					return addResults;	
				case '9':
					addResults[0] = '1';
					addResults[1] = '0';
					return addResults;	
			}
			break;
		case '2':
			switch(b)
			{
				case '1':
					addResults[0] = '0';
					addResults[1] = '3';
					return addResults;
				case '2':
					addResults[0] = '0';
					addResults[1] = '4';
					return addResults;
				case '3':
					addResults[0] = '0';
					addResults[1] = '5';
					return addResults;
				case '4':
					addResults[0] = '0';
					addResults[1] = '6';
					return addResults;
				case '5':
					addResults[0] = '0';
					addResults[1] = '7';
					return addResults;	
				case '6':
					addResults[0] = '0';
					addResults[1] = '8';
					return addResults;	
				case '7':
					addResults[0] = '0';
					addResults[1] = '9';
					return addResults;	
				case '8':
					addResults[0] = '1';
					addResults[1] = '0';
					return addResults;	
				case '9':
					addResults[0] = '1';
					addResults[1] = '1';
					return addResults;	
			}
			break;
		case '3':
			switch(b)
			{
				case '1':
					addResults[0] = '0';
					addResults[1] = '4';
					return addResults;
				case '2':
					addResults[0] = '0';
					addResults[1] = '5';
					return addResults;
				case '3':
					addResults[0] = '0';
					addResults[1] = '6';
					return addResults;
				case '4':
					addResults[0] = '0';
					addResults[1] = '7';
					return addResults;
				case '5':
					addResults[0] = '0';
					addResults[1] = '8';
					return addResults;	
				case '6':
					addResults[0] = '0';
					addResults[1] = '9';
					return addResults;	
				case '7':
					addResults[0] = '1';
					addResults[1] = '0';
					return addResults;	
				case '8':
					addResults[0] = '1';
					addResults[1] = '1';
					return addResults;	
				case '9':
					addResults[0] = '1';
					addResults[1] = '2';
					return addResults;	
			}
			break;
		case '4':
			switch(b)
			{
				case '1':
					addResults[0] = '0';
					addResults[1] = '5';
					return addResults;
				case '2':
					addResults[0] = '0';
					addResults[1] = '6';
					return addResults;
				case '3':
					addResults[0] = '0';
					addResults[1] = '7';
					return addResults;
				case '4':
					addResults[0] = '0';
					addResults[1] = '8';
					return addResults;
				case '5':
					addResults[0] = '0';
					addResults[1] = '9';
					return addResults;	
				case '6':
					addResults[0] = '1';
					addResults[1] = '0';
					return addResults;	
				case '7':
					addResults[0] = '1';
					addResults[1] = '1';
					return addResults;	
				case '8':
					addResults[0] = '1';
					addResults[1] = '2';
					return addResults;	
				case '9':
					addResults[0] = '1';
					addResults[1] = '3';
					return addResults;	
			}
			break;
		case '5':
			switch(b)
			{
				case '1':
					addResults[0] = '0';
					addResults[1] = '6';
					return addResults;
				case '2':
					addResults[0] = '0';
					addResults[1] = '7';
					return addResults;
				case '3':
					addResults[0] = '0';
					addResults[1] = '8';
					return addResults;
				case '4':
					addResults[0] = '0';
					addResults[1] = '9';
					return addResults;
				case '5':
					addResults[0] = '1';
					addResults[1] = '0';
					return addResults;	
				case '6':
					addResults[0] = '1';
					addResults[1] = '1';
					return addResults;	
				case '7':
					addResults[0] = '1';
					addResults[1] = '2';
					return addResults;	
				case '8':
					addResults[0] = '1';
					addResults[1] = '3';
					return addResults;	
				case '9':
					addResults[0] = '1';
					addResults[1] = '4';
					return addResults;	
			}
			break;
		case '6':
			switch(b)
			{
				case '1':
					addResults[0] = '0';
					addResults[1] = '7';
					return addResults;
				case '2':
					addResults[0] = '0';
					addResults[1] = '8';
					return addResults;
				case '3':
					addResults[0] = '0';
					addResults[1] = '9';
					return addResults;
				case '4':
					addResults[0] = '1';
					addResults[1] = '0';
					return addResults;
				case '5':
					addResults[0] = '1';
					addResults[1] = '1';
					return addResults;	
				case '6':
					addResults[0] = '1';
					addResults[1] = '2';
					return addResults;	
				case '7':
					addResults[0] = '1';
					addResults[1] = '3';
					return addResults;	
				case '8':
					addResults[0] = '1';
					addResults[1] = '4';
					return addResults;	
				case '9':
					addResults[0] = '1';
					addResults[1] = '5';
					return addResults;	
			}
			break;
		case '7':
			switch(b)
			{
				case '1':
					addResults[0] = '0';
					addResults[1] = '8';
					return addResults;
				case '2':
					addResults[0] = '0';
					addResults[1] = '9';
					return addResults;
				case '3':
					addResults[0] = '1';
					addResults[1] = '0';
					return addResults;
				case '4':
					addResults[0] = '1';
					addResults[1] = '1';
					return addResults;
				case '5':
					addResults[0] = '1';
					addResults[1] = '2';
					return addResults;	
				case '6':
					addResults[0] = '1';
					addResults[1] = '3';
					return addResults;	
				case '7':
					addResults[0] = '1';
					addResults[1] = '4';
					return addResults;	
				case '8':
					addResults[0] = '1';
					addResults[1] = '5';
					return addResults;	
				case '9':
					addResults[0] = '1';
					addResults[1] = '6';
					return addResults;	
			}
			break;
		case '8':
			switch(b)
			{
				case '1':
					addResults[0] = '0';
					addResults[1] = '9';
					return addResults;
				case '2':
					addResults[0] = '1';
					addResults[1] = '0';
					return addResults;
				case '3':
					addResults[0] = '1';
					addResults[1] = '1';
					return addResults;
				case '4':
					addResults[0] = '1';
					addResults[1] = '2';
					return addResults;
				case '5':
					addResults[0] = '1';
					addResults[1] = '3';
					return addResults;	
				case '6':
					addResults[0] = '1';
					addResults[1] = '4';
					return addResults;	
				case '7':
					addResults[0] = '1';
					addResults[1] = '5';
					return addResults;	
				case '8':
					addResults[0] = '1';
					addResults[1] = '6';
					return addResults;	
				case '9':
					addResults[0] = '1';
					addResults[1] = '7';
					return addResults;	
			}
			break;
		case '9':
			switch(b)
			{
				case '1':
					addResults[0] = '1';
					addResults[1] = '0';
					return addResults;
				case '2':
					addResults[0] = '1';
					addResults[1] = '1';
					return addResults;
				case '3':
					addResults[0] = '1';
					addResults[1] = '2';
					return addResults;
				case '4':
					addResults[0] = '1';
					addResults[1] = '3';
					return addResults;
				case '5':
					addResults[0] = '1';
					addResults[1] = '4';
					return addResults;	
				case '6':
					addResults[0] = '1';
					addResults[1] = '5';
					return addResults;	
				case '7':
					addResults[0] = '1';
					addResults[1] = '6';
					return addResults;	
				case '8':
					addResults[0] = '1';
					addResults[1] = '7';
					return addResults;	
				case '9':
					addResults[0] = '1';
					addResults[1] = '8';
					return addResults;	
			}
			break;
		default:
			break;
	}
	return addResults;
}

char* mutip(char a,char b)
{
	//清空结果 
	mutiResults[0] = '0';
	mutiResults[1] = '0';
		
	if(a == '0' || b == '0')
	{
		mutiResults[0] = '0';
		mutiResults[1] = '0';
		return mutiResults;
	}
	if(a == '1')
	{
		mutiResults[0] = '0';
		mutiResults[1] = b;
		return mutiResults;
	}
	else if(b == '1')
	{
		mutiResults[0] = '0';
		mutiResults[1] = a;
		return mutiResults;
	}
	
	switch(a)
	{
		case '2':
			switch(b)
			{
				case '2':
					mutiResults[0] = '0';
					mutiResults[1] = '4';
					return mutiResults;
				case '3':
					mutiResults[0] = '0';
					mutiResults[1] = '6';
					return mutiResults;
				case '4':
					mutiResults[0] = '0';
					mutiResults[1] = '8';
					return mutiResults;
				case '5':
					mutiResults[0] = '1';
					mutiResults[1] = '0';
					return mutiResults;	
				case '6':
					mutiResults[0] = '1';
					mutiResults[1] = '2';
					return mutiResults;	
				case '7':
					mutiResults[0] = '1';
					mutiResults[1] = '4';
					return mutiResults;	
				case '8':
					mutiResults[0] = '1';
					mutiResults[1] = '6';
					return mutiResults;	
				case '9':
					mutiResults[0] = '1';
					mutiResults[1] = '8';
					return mutiResults;	
			}
			break;
		case '3':
			switch(b)
			{
				case '2':
					mutiResults[0] = '0';
					mutiResults[1] = '6';
					return mutiResults;
				case '3':
					mutiResults[0] = '0';
					mutiResults[1] = '9';
					return mutiResults;
				case '4':
					mutiResults[0] = '1';
					mutiResults[1] = '2';
					return mutiResults;
				case '5':
					mutiResults[0] = '1';
					mutiResults[1] = '5';
					return mutiResults;	
				case '6':
					mutiResults[0] = '1';
					mutiResults[1] = '8';
					return mutiResults;	
				case '7':
					mutiResults[0] = '2';
					mutiResults[1] = '1';
					return mutiResults;	
				case '8':
					mutiResults[0] = '2';
					mutiResults[1] = '4';
					return mutiResults;	
				case '9':
					mutiResults[0] = '2';
					mutiResults[1] = '7';
					return mutiResults;	
			}
			break;
		case '4':
			switch(b)
			{
				case '2':
					mutiResults[0] = '0';
					mutiResults[1] = '8';
					return mutiResults;
				case '3':
					mutiResults[0] = '1';
					mutiResults[1] = '2';
					return mutiResults;
				case '4':
					mutiResults[0] = '1';
					mutiResults[1] = '6';
					return mutiResults;
				case '5':
					mutiResults[0] = '2';
					mutiResults[1] = '0';
					return mutiResults;	
				case '6':
					mutiResults[0] = '2';
					mutiResults[1] = '4';
					return mutiResults;	
				case '7':
					mutiResults[0] = '2';
					mutiResults[1] = '8';
					return mutiResults;	
				case '8':
					mutiResults[0] = '3';
					mutiResults[1] = '2';
					return mutiResults;	
				case '9':
					mutiResults[0] = '3';
					mutiResults[1] = '6';
					return mutiResults;	
			}
			break;
		case '5':
			switch(b)
			{
				case '2':
					mutiResults[0] = '1';
					mutiResults[1] = '0';
					return mutiResults;
				case '3':
					mutiResults[0] = '1';
					mutiResults[1] = '5';
					return mutiResults;
				case '4':
					mutiResults[0] = '2';
					mutiResults[1] = '0';
					return mutiResults;
				case '5':
					mutiResults[0] = '2';
					mutiResults[1] = '5';
					return mutiResults;	
				case '6':
					mutiResults[0] = '3';
					mutiResults[1] = '0';
					return mutiResults;	
				case '7':
					mutiResults[0] = '3';
					mutiResults[1] = '5';
					return mutiResults;	
				case '8':
					mutiResults[0] = '4';
					mutiResults[1] = '0';
					return mutiResults;	
				case '9':
					mutiResults[0] = '4';
					mutiResults[1] = '5';
					return mutiResults;	
			}
			break;
		case '6':
			switch(b)
			{
				case '2':
					mutiResults[0] = '1';
					mutiResults[1] = '2';
					return mutiResults;
				case '3':
					mutiResults[0] = '1';
					mutiResults[1] = '8';
					return mutiResults;
				case '4':
					mutiResults[0] = '2';
					mutiResults[1] = '4';
					return mutiResults;
				case '5':
					mutiResults[0] = '3';
					mutiResults[1] = '0';
					return mutiResults;	
				case '6':
					mutiResults[0] = '3';
					mutiResults[1] = '6';
					return mutiResults;	
				case '7':
					mutiResults[0] = '4';
					mutiResults[1] = '2';
					return mutiResults;	
				case '8':
					mutiResults[0] = '4';
					mutiResults[1] = '8';
					return mutiResults;	
				case '9':
					mutiResults[0] = '5';
					mutiResults[1] = '4';
					return mutiResults;	
			}
			break;
		case '7':
			switch(b)
			{
				case '2':
					mutiResults[0] = '1';
					mutiResults[1] = '4';
					return mutiResults;
				case '3':
					mutiResults[0] = '2';
					mutiResults[1] = '1';
					return mutiResults;
				case '4':
					mutiResults[0] = '2';
					mutiResults[1] = '8';
					return mutiResults;
				case '5':
					mutiResults[0] = '3';
					mutiResults[1] = '5';
					return mutiResults;	
				case '6':
					mutiResults[0] = '4';
					mutiResults[1] = '2';
					return mutiResults;	
				case '7':
					mutiResults[0] = '4';
					mutiResults[1] = '9';
					return mutiResults;	
				case '8':
					mutiResults[0] = '5';
					mutiResults[1] = '6';
					return mutiResults;	
				case '9':
					mutiResults[0] = '6';
					mutiResults[1] = '3';
					return mutiResults;	
			}
			break;
		case '8':
			switch(b)
			{
				case '2':
					mutiResults[0] = '1';
					mutiResults[1] = '6';
					return mutiResults;
				case '3':
					mutiResults[0] = '2';
					mutiResults[1] = '4';
					return mutiResults;
				case '4':
					mutiResults[0] = '3';
					mutiResults[1] = '2';
					return mutiResults;
				case '5':
					mutiResults[0] = '4';
					mutiResults[1] = '0';
					return mutiResults;	
				case '6':
					mutiResults[0] = '4';
					mutiResults[1] = '8';
					return mutiResults;	
				case '7':
					mutiResults[0] = '5';
					mutiResults[1] = '6';
					return mutiResults;	
				case '8':
					mutiResults[0] = '6';
					mutiResults[1] = '4';
					return mutiResults;	
				case '9':
					mutiResults[0] = '7';
					mutiResults[1] = '2';
					return mutiResults;	
			}
			break;
		case '9':
			switch(b)
			{
				case '2':
					mutiResults[0] = '1';
					mutiResults[1] = '8';
					return mutiResults;
				case '3':
					mutiResults[0] = '2';
					mutiResults[1] = '7';
					return mutiResults;
				case '4':
					mutiResults[0] = '3';
					mutiResults[1] = '6';
					return mutiResults;
				case '5':
					mutiResults[0] = '4';
					mutiResults[1] = '5';
					return mutiResults;	
				case '6':
					mutiResults[0] = '5';
					mutiResults[1] = '4';
					return mutiResults;	
				case '7':
					mutiResults[0] = '6';
					mutiResults[1] = '3';
					return mutiResults;	
				case '8':
					mutiResults[0] = '7';
					mutiResults[1] = '2';
					return mutiResults;	
				case '9':
					mutiResults[0] = '8';
					mutiResults[1] = '1';
					return mutiResults;	
			}
			break;
		default:
			break;
	}
	return mutiResults;
}


void addToResultForMutip(char* result,char* toAdd)
{
	//乘法:按位乘再求和的模式下,做加法绝对不会溢出 
	result[strlen(result)] = '\0';
	toAdd[strlen(result)] = '\0';
	
	//puts(result);
	
	char w = '0'; 
	
	for(int i = strlen(result) - 1;i >= 0;i--)
	{
		char* t = add(result[i],toAdd[i]);
		char tw = t[0];

		char* tt = add(t[1],w);
		result[i] = tt[1];
		char* ttt = add(tt[0],tw);
		w = ttt[1]; 
	}
	
	//puts(result);
}

void printAddTables(void)
{
	char num[10] = {'0','1','2','3','4','5','6','7','8','9'};
	
	for(int i = 0;i < 10;i ++)
	{
		for(int j = 0;j < 10;j ++)
		{
			char* s = add(num[i],num[j]);
			printf("%c + %c = %c%c ",num[i],num[j],s[0],s[1]);
		}
		puts("");
	}
}
void printMutiTables(void)
{
	char num[10] = {'0','1','2','3','4','5','6','7','8','9'};
	
	for(int i = 0;i < 10;i ++)
	{
		for(int j = 0;j < 10;j ++)
		{
			char* s = mutip(num[i],num[j]);
			printf("%c x %c = %c%c ",num[i],num[j],s[0],s[1]);
		}
		puts("");
	}
}

void printNumber(char* number)
{
	puts(number);
} 
void printFormatNumber(char* number)
{
	int len = strlen(number);
	for(int i = 0;i < len;i++)
	{
		if(len % 3 == 0)
		{
			if(i % 3 == 0 && i != 0)
			{
				printf(",%c",number[i]);
			}
			else
			{
				printf("%c",number[i]);
			}
		}
		else
		{
			if(i < (len % 3))
			{
				printf("%c",number[i]);
			}
			else
			{
				if((i - len % 3) % 3 == 0 && i != 0)
				{
					printf(",%c",number[i]);
				}
				else
				{
					printf("%c",number[i]);
				}
			}
		}
	}
} 

char* makeNoLimitMutip(char* ta,char* tb)
{
	int aWeight = strlen(ta) - 1;
	int bWeight = strlen(tb) - 1;
	

	int length = aWeight + bWeight + 3;
	char* result = (char*) malloc(sizeof(char) * length);
	char* toAdd = (char*) malloc(sizeof(char) * length);

	for(int i = 0;i < length;i++)
	{
		if(i != length - 1)
		{
			result[i] = '0';
			toAdd[i] = '0';
		}
		else
		{
			result[i] = '\0';
			toAdd[i] = '\0';
		}
	}
	for(int i = 0;i < strlen(ta);i++)
	{
		//puts("\n------------------------");
		for(int j = 0;j < strlen(tb);j++)
		{
			char* s = mutip(ta[i],tb[j]);
			
			toAdd[length - 1] = '\0';
			for(int k = length - 2;k >= 0;k--)
			{
				if(k > (length - 2 - (bWeight + aWeight)))
				{
					toAdd[k] = '0';
				}
				else if(k == (length - 2 - (bWeight + aWeight)))
				{
					toAdd[k--] = s[1];
					toAdd[k] = s[0];
				}
				else
				{
					toAdd[k] = '0';
				}
			}
			
			addToResultForMutip(result,toAdd);
				
			bWeight--;
		}
		bWeight = strlen(tb) - 1;
		aWeight--;
	}
	
	free(toAdd); 
	return result;
}

3.大整数字符串乘法器实现思路

两数相乘a×b,例如:1234×987654,ta:1234,tb:987654:

由于ta是4位整数、tb是6位整数,所以乘法积位数最多是10位,无非就是可能有0前缀数字,所以就直接当结果是10位。
所以,定义积字符串和临时乘法结果字符串:

int aWeight = strlen(ta) - 1;
int bWeight = strlen(tb) - 1;
int length = aWeight + bWeight + 3;
char* result = (char*) malloc(sizeof(char) * length);
char* toAdd = (char*) malloc(sizeof(char) * length);

result初始化为:0000000000

  1. 拿出tb的最高位9,去和ta的每一位一次相乘,每乘一次就会得到一个临时结果:
    9乘1得09,且9后面还有5位、1后面还有3位,所以相乘结果字符串toAdd:0900000000,然后将toAdd加到result中。
    9乘2得18,且9后面还有5位、2后面还有2位,所以相乘结果字符串toAdd:0180000000,然后将toAdd加到result中。
    9乘3得27,且9后面还有5位、3后面还有1位,所以相乘结果字符串toAdd:0027000000,然后将toAdd加到result中。
    9乘4得36,且9后面还有5位、4后面还有0位,所以相乘结果字符串toAdd:0003600000,然后将toAdd加到result中。
  2. 拿出tb的8,去和去和ta的每一位一次相乘,每乘一次就会得到一个临时结果:
    8乘1得08,且8后面还有4位、1后面还有3位,所以相乘结果字符串toAdd:0080000000,然后将toAdd加到result中。
    8乘2得16,且8后面还有4位、2后面还有2位,所以相乘结果字符串toAdd:0016000000,然后将toAdd加到result中。
    8乘3得24,且8后面还有4位、3后面还有1位,所以相乘结果字符串toAdd:0002400000,然后将toAdd加到result中。
    8乘4得32,且8后面还有4位、4后面还有0位,所以相乘结果字符串toAdd:0000320000,然后将toAdd加到result中。
  3. 拿出tb的7,去和去和ta的每一位一次相乘,每乘一次就会得到一个临时结果:
    …………
  4. 拿出tb的6,去和去和ta的每一位一次相乘,每乘一次就会得到一个临时结果:
    …………
  5. 拿出tb的7,去和去和ta的每一位一次相乘,每乘一次就会得到一个临时结果:
    …………
  6. 拿出tb的4,去和去和ta的每一位一次相乘,每乘一次就会得到一个临时结果:
    …………

4. 大整数字符串乘法器典型使用流程main.c

#include "BigInterNoLimitMutiString.c"

int main(void)
{
	char num[10] = {'0','1','2','3','4','5','6','7','8','9'};
	
	char ta[10000] = {'\0'};
	char tb[10000] = {'\0'};
	gets(ta);
	gets(tb);
	printf("\ntalen-tblen:%d-%d",strlen(ta),strlen(tb));
	
	
	clock_t start = clock();
	char* result = makeNoLimitMutip(ta,tb);
	clock_t end = clock();
	printf("\nrun time is :%f\n",(double)(end - start) / CLOCKS_PER_SEC);
	
	puts("\n乘法积:");
	for(int i = 0;i < strlen(result);i++)
	{
		if(result[i] != '0')
		{
			printFormatNumber(&result[i]);
			//puts("");
			//printNumber(result);
			break;
		}
	}
	free(result);

//	puts("");
//	printAddTables();
//	puts("");
//	printMutiTables();

	return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/40440.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Unity嵌入Android项目开发

目录前言1 搭建开发环境2 创建Unity项目2.1 新建项目2.2 Unity构建配置2.3 Android环境相关配置2.4 导出Unity库文件3 创建Android项目3.1 新建Android项目3.2 Android环境相关配置3.2 导入Unity相关的库3.3 Android中跳转到Unity视图4 进阶扩展4.1 包体积优化4.1.1 mono和IL2C…

ILRuntime1.安装

目录 1&#xff1a;官网地址&#xff1a;介绍 — ILRuntime 2&#xff1a;注意事项&#xff1a; 3&#xff1a;安装 此文章是参照官方文档&#xff0c;自己的开发笔记。 1&#xff1a;官网地址&#xff1a;介绍 — ILRuntime 官方Unity示例代码&#xff1a;GitHub - Ourpa…

CUDA-矩阵乘2

这里从一个 cuda 初学者的角度来阐述如何优化一个形状较大的正方形乘正方形的 FP32 矩阵乘。 矩阵乘作为目前神经网络计算中占比最大的一个部分&#xff0c;其快慢会显著影响神经网络的训练与推断所消耗的时间。虽然现在市面上已经有非常多的矩阵乘的高效实现——如基于 cpu 的…

基于Pytorch框架的轻量级卷积神经网络垃圾分类识别系统

在我之前的博文中也写过一篇关于垃圾识别的文章&#xff0c;主要是基于tensorflow和keras实现的&#xff0c;数据集是一个比赛提供的&#xff0c;有40个细分的子类别&#xff0c;最近是在学习PyTorch框架&#xff0c;实践做项目的过程中就想拿垃圾识别的数据集再开发垃圾识别模…

物联网-常见的服务架构演变

常见的服务架构演变 背景 在互联网的发展中&#xff0c;后端的web服务也经历了很多的演变&#xff1b;在公司业务稍微简单的时候&#xff0c;采用简单的服务&#xff0c;可以提高开发效率&#xff0c;可以帮忙节省更多的成本。但随着用户数量的剧增&#xff0c;流量突增&…

keras-yolo3-master 项目实战cookbook

1、.h5文件转化 1.1 Error: FileNotFoundError: [Errno 2] No such file or directory: ‘yolov3.weights’ 解决办法&#xff1a;通过在.py文件中添加print()命令发现文件的打开路径有问题&#xff0c;因此在代码中手动添加.weights的绝对路径&#xff0c;使程序能够找到该文…

java.lang.reflect.Field 解读

java.lang.reflect.Field Java 中 Field 提供有关类或接口的单个字段的信息&#xff0c;以及对它的动态访问权限。反射的字段可能是一个类字段或实例字段。Field 是成员变量的意思。Field 也是一个类&#xff0c;该类位于 java.lang.reflect 包下。 https://docs.oracle.com/…

每天五分钟机器学习:支持向量机损失函数和互熵损失函数

本文重点 本节课程我们讲学习两个常见的损失函数,一个是支持向量机损失,也叫做hinge loss,另外一个损失函数是互熵损失函数,它常常应用于softmax分类器中。 hinge loss 单样本的hinge loss可以为: 这个意思是说样本分类错误的分数-样本分类正确的分数小于阈值▲,则损…

Spring Boot 2.7.6 正式版发布, SpringBoot 2.7.6来了

一、发布说明 11 月 25 日官方发布了 Spring Boot 2.7.6 版本&#xff0c;此版本包括 44 个错误修复、文档改进和依赖项升级。 二、更新内容 2.1 bug 修复 即使未启用基于注释的计划&#xff0c;ScheduledBeanLazyInitializationExcludeFilter 也会自动配置使用 ContextHi…

第16章-Spring AOP中的基础API

文章目录一、概述二、切点&#xff08;Pointcut&#xff09;三、通知&#xff08;Advice&#xff09;1. 环绕通知2. 前置通知3. 异常通知4. 后置通知四、通知者&#xff08;Advisor&#xff09;五、附录1. 常用接口2. 示例代码前面我们讲了基于 XML 和注解两种方式配置 AOP&…

SpringBoot SpringBoot 原理篇 2 自定义starter 2.3 定时任务报表开发

SpringBoot 【黑马程序员SpringBoot2全套视频教程&#xff0c;springboot零基础到项目实战&#xff08;spring boot2完整版&#xff09;】 SpringBoot 原理篇 文章目录SpringBootSpringBoot 原理篇2 自定义starter2.3 定时任务报表开发2.3.1 直接开干2.3.2 小结2 自定义start…

JavaScript函数进阶:闭包

变量作用域 变量根据作用域的不同分为两种&#xff1a;全局变量和局部变量。 1. 函数内部可以使用全局变量。 2. 函数外部不可以使用局部变量。 3. 当函数执行完毕&#xff0c;本作用域内的局部变量会销毁 什么是闭包 闭包&#xff08;closure&#xff09;指有权访问另一…

Day13--商品列表-请求并渲染商品列表的数据

1.定义请求参数对象 接口部分&#xff1a; 文档部分&#xff1a; 我的操作&#xff1a; 1》在goods_list.vue中&#xff1a; 1>初步操作&#xff1a; 其效果图&#xff1a; 2>进一步操作&#xff1a; 在goods_list.vue中&#xff1a; 情况①&#xff1a; 情况②&…

python高级在线题目训练-第二套·主观题

1、《Walden》 是美国作家梭罗独居瓦尔登湖畔的记录,描绘了他两年多时间里的所见、所闻和所思。该书崇尚简朴生活&#xff0c;热爱大自然的风光&#xff0c;内容丰厚&#xff0c;意义深远&#xff0c;语言生动。 请用Python统计小说《Walden》 中各单词出现的频次&#xff0c;…

Metabase学习教程:视图-8

漏斗图 使用漏斗图显示步骤的进度。 图1。我们将用示例数据库构建一个漏斗图。 漏斗图用一系列台阶显示了指标。通常&#xff0c;它们用于显示有多少人通过特定的序列&#xff08;如网站上的结帐流程&#xff09;完成。第一步是多少人访问你的网站。然后有多少人浏览了一个产品…

【笔记】ABAQUS弹塑性分析

1. 弹塑性分析的主要问题 1.1 elastic-plastic deform behavior abaqus 默认的塑性表现行为是金属材料经典塑性理论&#xff0c;采用mises屈服面定义各向同性屈服。 一般金属材料都是各向同性材料&#xff0c;弹塑性行为&#xff1a; 小应变时&#xff0c;材料表现为线弹性&…

【5G MAC】随机接入流程中的 Msg2 (RAR)

博主未授权任何人或组织机构转载博主任何原创文章&#xff0c;感谢各位对原创的支持&#xff01; 博主链接 本人就职于国际知名终端厂商&#xff0c;负责modem芯片研发。 在5G早期负责终端数据业务层、核心网相关的开发工作&#xff0c;目前牵头6G算力网络技术标准研究。 博客…

FL Studio水果2023版本更新下载汉化教程

Image-Line宣布针对Win和Mac版本的数字音频工作站FL Studio的21版本更新。FL Studio2023是一个完整的软件音乐制作环境或数字音频工作站&#xff08;DAW&#xff09;。代表超过 23年的创新发展&#xff0c;它包含了您在一个包装中编排&#xff0c;编排&#xff0c;录制&#xf…

cocos creator实现浏览星球的功能,附源码

预览效果&#xff1a; 技术要点&#xff1a; 主摄像机的视场轴需要设置为水平。在场景下创建一个空节点用于挂载控制器脚本图片已进行各概念的说明 在“collisionNodeArray”属性下&#xff0c;放置需要点击的星球节点&#xff0c;系统会自己绑定碰撞器。 也可自己提前绑定。 布…

基于SSM的学籍证明打印系统设计与实现。

项目描述 临近学期结束&#xff0c;还是毕业设计&#xff0c;你还在做java程序网络编程&#xff0c;期末作业&#xff0c;老师的作业要求觉得大了吗?不知道毕业设计该怎么办?网页功能的数量是否太多?没有合适的类型或系统?等等。这里根据疫情当下&#xff0c;你想解决的问…