#include <stdio.h> #include <stdlib.h> #include <string.h> #define N 100 void getdigits(int *a,char *s) { int i; char digit; int len=strlen(s); for(i=0;i<N;++i)//对数组初始化 *(a+i)=0; for(i=0;i<len;++i) { digit=*(s+i); *(a+len-1-i)=digit-'0';//字符串s="12345",因此第一个字符应该存在int数组的最后一个位置 } } //将数组a与数组b逐位相乘以后存入数组c void multiply(int *a,int *b,int *c) { int i,j; //数组初始化 for(i=0;i<2*N;++i) *(c+i)=0; /* *数组a中的每位逐位与数组b相乘,并把结果存入数组c *比如,12345*12345,a中的5与12345逐位相乘 *对于数组c:*(c+i+j)在i=0,j=0,1,2,3,4时存的是5与各位相乘的结果 *而在i=1,j=0,1,2,3,4时不光会存4与各位相乘的结果,还会累加上上次相乘的结果.这一点是需要注意的!!! */ for(i=0;i<N;++i) for(j=0;j<N;++j) *(c+i+j)+=*(a+i)* *(b+j); /* *这里是移位、进位 */ for(i=0;i<2*N-1;++i) { *(c+i+1)+=*(c+i)/10;//将十位上的数向前进位,并加上原来这个位上的数 *(c+i)=*(c+i)%10;//将剩余的数存原来的位置上 } } int main() { int a[N],b[N],c[2*N]; char s1[N],s2[N]; int j = 2*N-1; int i; printf("input the first number:"); scanf("%s",s1); printf("input the second number:"); scanf("%s",s2); getdigits(a,s1); getdigits(b,s2); multiply(a,b,c); while(c[j]==0) j--; for(i=j;i>=0;--i) printf("%d",c[i]); printf("\n"); return 0; }import java.util.Scanner; public class Multiply { public String mul(String str1,String str2) { StringBuffer bstr=new StringBuffer(); int i=0,j=0; for(i=0;i<str1.length()+str2.length();i++) { bstr.append('0'); } int k=bstr.length()-1,add=0,temp=0; for(j=str2.length()-1;j>=0;j--) { if(str2.charAt(j)!='0') { for(i=str1.length()-1;i>=0;i--) { k=i+j+1; temp=(str2.charAt(j)-'0')*(str1.charAt(i)-'0')+(bstr.charAt(k)-'0'); bstr.setCharAt(k--, (char)('0'+temp%10)); add=temp/10; while(add!=0) { temp=add+bstr.charAt(k)-'0'; bstr.setCharAt(k--, (char)('0'+temp%10)); add=temp/10; } } } } return bstr.substring(firstNotZeroIndex(bstr)); } private int firstNotZeroIndex(StringBuffer str) { for(int i=0;i<str.length();i++) if(str.charAt(i)!='0') return i; return str.length()-1; } public static void main(String[] args) { Multiply mul=new Multiply(); Scanner cin=new Scanner(System.in); System.out.print("请输入第一个整数:"); String str1=cin.next(); System.out.print("请输入第二个整数:"); String str2=cin.next(); System.out.print("结果是:"); System.out.println(mul.mul(str1, str2)); } }java贴人家的,还没学过啊。