代码:
#include <stdio.h> #include <string.h> //大数乘小数 void mult(char c[],int m,char t[]) { char s[100]; int len=strlen(c); for(int i=0; i<len; i++) s[len-i-1]=c[i]-'0'; int flag,add=0; for(int i=0; i<len; i++) { int k=s[i]*m+add; if(k>=10) { s[i]=k%10; add=k/10; flag=1; } else { s[i]=k; add=0; flag=0; } } while(add) { s[len++]=add%10; add/=10; } for(int i=0; i<len; i++) t[len-1-i]=s[i]+'0'; t[len]='\0'; } //大数加小数 void addt(char a[],int b,char c[]) { int len=strlen(a); char s[100]; for(int i=0; i<len; i++) s[len-i-1]=a[i]-'0'; int add=0; for(int i=0;; i++) { if(i>=len) { s[i]=0; len++; } int k=s[i]+b%10+add; b/=10; if(k>=10) { s[i]=k%10; add=k/10; } else { s[i]=k; add=0; } if(b==0&&add==0)break; } for(int i=0; i<len; i++) c[len-1-i]=s[i]+'0'; c[len]='\0'; } int main() { char c[1000],t[1000],sum[1000]; int m; while(~scanf("%s%d",c,&m)) { mult(c,m,t); printf("%s\n",t); addt(c,m,sum); printf("%s\n",sum); } return 0; }来源:http://blog.csdn.net/libin56842/article/details/9362861