代码:
#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;
}