(1)加法
#include<stdio.h>
#include<string.h>
#define max_len 200
int main()
{
int i,j;
int a[max_len+20],b[max_len+20];
char s1[max_len+20],s2[max_len+20];
while(scanf("%s%s",&s1,&s2)!=EOF)
{
memset(a,sizeof(a));/*是对a进行初始化,使其值都为零*/?
memset(b,sizeof(b));
int len1=strlen(s1);/*不要忘记这里写len1数据类型*/?
for(j=0,i=(len1-1);i>=0;i--)
a[j++]=s1[i]-'0';
int len2=strlen(s2);
for(j=0,i=(len1-1);i>=0;i--)
b[j++]=s2[i]-'0';
for(i=0;i<max_len;i++)
{
a[i]+=b[i];
if(a[i]>=10)
{
a[i]-=10;
a[i+1]+=1;
}
}
for(i=max_len;(i>=0)&&(a[i]==0);i--);/*用for循环*/?
if(i>=0)
{
for(;i>=0;i--)
printf("%d",a[i]);/*一定要记住这几步!!!*/
}
else?
printf("0");
printf("n");
}
return 0;
}
----------------------------------------------------------------------------------------------------------------------------------------
(2)乘法
#include<stdio.h>
#include<string.h>
#define max_len 200
int main()
{
int i,j;
int a[max_len+20],b[max_len+20],c[max_len*2+20];
char s1[max_len+20],s2[max_len+20];
while(scanf("%s%s",&s2)!=EOF)
{
? ??memset(a,sizeof(a));
? ?memset(b,sizeof(b));
? ?memset(c,sizeof(c));
? ?int len1=strlen(s1);
? ?for(j=0,i=(len1-1);i>=0;i--)
? ?a[j++]=s1[i]-'0';
? ?int len2=strlen(s2);
? ?for(j=0,i=(len1-1);i>=0;i--)
? ?b[j++]=s2[i]-'0';?
for(i=0;i<len1;i++)
{
for(j=0;j<len2;j++)
{
c[i+j]=a[i]*b[j];
if(a[i+j]>=10)
{
c[i+j]%=10;
c[i+j+1]+=(a[i+j]/10);
}
}
}?
for(i=max_len*2;(i>=0)&&(c[i]==0);i--);
if(i>=0)
for(;i>=0;i--)
printf("%d",c[i]);
else printf("0"); printf("n"); } return 0; }