1. 程式人生 > 其它 >c語言實現兩個大數相乘

c語言實現兩個大數相乘

技術標籤:面試寶典c語言大數相乘

實現兩個不限位數十進位制整數的乘法函式,
demon

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

int main()
{
	int i,j,z,k;
	int f_m1,f_m2,f_k;
	int carry;
	int result_int_len;
	int x_len,y_len;
	int x[101], y[101];
	char multiplier_x[101];
	char multiplier_y[101];
	char result_char[100000];
	int reuslt_int[
100000]; memset(result_char,0,sizeof(result_char)); memset(reuslt_int,0,sizeof(reuslt_int)); memset(multiplier_x,0,sizeof(multiplier_x)); memset(multiplier_y,0,sizeof(multiplier_y)); scanf("%s%s",multiplier_x,multiplier_y); x_len = strlen(multiplier_x); y_len = strlen(multiplier_y); for
(i = 0; i < x_len ; i++) { x[i] = multiplier_x[i] - '0'; printf("===========x[%d] is %d\n",i,x[i]); } for(j = 0; j < y_len ; j++) { y[j] = multiplier_y[j] - '0'; printf("===========y[%d] is %d\n",j,y[j]); } f_m1 = x_len; for(i = 0; i < x_len ; i++) { f_m1--
; f_m2 = y_len; for(j = 0; j < y_len ; j++) { f_m2--; z = x[f_m1] * y [f_m2]; printf(" z is %d\n",z); reuslt_int[j+i] = z%10 + reuslt_int[j+i]; k = j+i+1; printf("====k is %d | reuslt_int[j+i] is %d\n",k,reuslt_int[j+i]); if(reuslt_int[j+i] > 9)//判斷是否需要進位 { reuslt_int[j+i] = reuslt_int[j+i]%10; carry = j+i+1; reuslt_int[carry] = 1 + reuslt_int[carry]; printf("[%d] reuslt_int[%d] is %d\n",__LINE__,i+j,reuslt_int[j+i]); while( 9 < reuslt_int[carry])//進位之後相加再判斷是否需要進位 { reuslt_int[carry] = reuslt_int[carry]%10; carry++; printf("||||=====carry is %d \n",carry); reuslt_int[carry] = 1 + reuslt_int[carry]; } } if(z > 9)//判斷是否需要進位 { carry = j+i+1; reuslt_int[carry] = z/10 + reuslt_int[carry]; printf("[%d] reuslt_int[%d] is %d\n",__LINE__,i+j,reuslt_int[carry]); while( 9 < reuslt_int[carry])//進位之後相加再判斷是否需要進位 { reuslt_int[carry] = reuslt_int[carry]%10; carry++; printf("[%d] reuslt_int[%d] is %d\n",__LINE__,i+j,reuslt_int[carry]); reuslt_int[carry] = 1 + reuslt_int[carry]; } k = j+i+2; printf("k is %d\n",k); } } } f_k = k; for(i = 0; i < f_k ; i++)//位數反轉 { result_char[i] = reuslt_int[k-1] + '0'; printf(" result_char[%d] is %d\n",i,result_char[i]); k--; } printf("===========%s \n",result_char); return 0; }

執行結果:
在這裡插入圖片描述