@chawuciren
        
        2018-11-16T09:43:44.000000Z
        字数 1194
        阅读 706
    作业
#include<stdio.h>#include<stdlib.h>void ArrayMultiplication(int array1[],int l1,int array2[],int l2,int Result[],int l3);//用来计算并将结果存入数组void carry(int Result[],int length);//进位void site(int array1[],int l1,int n);//提取一个数的每一位并将其存进数组的函数int main(){int result[2568]={0};//存放每一次的结果int arr1[5]={0};//一个因数int arr2[2568]={1,0,0,0};//第二个因数for(int i=2;i<=1000;i++){site(arr1,5,i);ArrayMultiplication(arr1,5,arr2,2568,result,2568); //乘法carry(result,2568); //进位for(int k=0;k<2568;k++){ //结果作为下一次的因数arr2[k]=result[k];}}for(int i=2568;i>0;i--){//打印printf("%d",result[i]);}}void ArrayMultiplication(int array1[],int l1,int array2[],int l2,int Result[],int l3){int result=0;//每一次相乘的结果int n=0;//每次取出结果的一位放在这里int h=0;//h,a,b记录下标int a=0;int b=0;for(int i=0;i<l1;i++){//该循环计算第二个因数的每一位与第一个因数相乘的结果h=b;for(int j=0;j<l2;j++){//计算第二个因数的每一位与第一个因数的每一位相乘的结果h=a;result=array1[i]*array2[j];for(;result>0;){n=result%10;Result[h]+=n;//每次取出来结果的一位加在相应的位置result/=10;h+=1;}a+=1;}b+=1;a=b;}return;}void carry(int Result[],int length){//进位int a=0;for(int i=0;i<length;i++){if(Result[i]>=10){a=Result[i];Result[i]=Result[i]%10;Result[i+1]=Result[i+1]+a/10;}}return;}void site(int array1[],int l1,int n){//取每一位for(int i=0;i<l1;i++){array1[i]=n%10;n/=10;if(n==0)break;}return;}
