#include<stdio.h>
#include<math.h>
#define max 500



int t[max]={0};
int v[max]={0};
int b[max]={0};
void total(int m[],int n[])
{

    int i,j,temp;
    for(i=0;i<max;i++)
    {
        t[i]=m[i]+n[i];
    }
    for(i=0;i<max;i++)
    {
        if(t[i]>=10)
        {
            temp=t[i];
            j=i;
            while(temp!=0)
            {
                if(i==j)
                    t[j]=t[j]%10;
                else
                    t[j]+=t[j]%10;
                j++;
                temp/=10;
            }
        }
    }

}
void yidong(int *a,int n,int m)
{
    int i,j;
    for(i=m-1;i>=0;i--)
    {
        if(i>=n)
            a[i]=a[i-n];
        else
            a[i]=0;
    }
}


int calc(int x,int y,int p[]){
    int a,b,i,j,d,k,flag=0,m,temp;

    int abs[max][max]={0},l[max]={0},h[max]={0},n[max]={0};
    if(x<10)
    {
        h[0]=x;
    }
    else{
        temp=x;
        j=0;
        while(temp!=0)
        {
            h[j]=temp%10;
            temp/=10;j++;
        }
    }


    while(y>1)
    {
        for(i=0;i<max;i++)
        {
            l[i]=h[i]*x;
        }
        for(i=0;i<max;i++)
        {
            if(l[i]<10)
                abs[i][0]=l[i];
            else{
                temp=l[i];
                j=0;
                while(temp!=0)
                {
                    abs[i][j]=temp%10;
                    temp=temp/10;
                    j++;
                }
            }
        }
        for(i=0;i<max;i++)
        {
            yidong(abs[i],i,max);
        }

        for(i=0;i<max;i++)
        {

            for(j=0;j<max;j++)
                n[i]+=abs[j][i];
        }
        for(i=0;i<max;i++)
        {
            if(n[i]>=10)
            {
                temp=n[i];
                j=i;
                while(temp!=0)
                {
                    if(i==j)
                        n[i]%=10;
                    else
                        n[i]+=n[i]%10;
                    j++;
                    temp=temp/10;

                }
            }
        }

        for(i=0;i<max;i++)
        {
            h[i]=n[i];
            n[i]=0;
        }
        y--;
    }
    for(i=0;i<max;i++)
        {
            p[i]=h[i];

        }

}



int main()
{
    int m,d,p,o,i;

    scanf("%d",&m);
    scanf("%d",&d);

    scanf("%d",&o);
    scanf("%d",&p);
    calc(m,d,v);
    calc(o,p,b);
    total(v,b);



   for(i=max-1;i>=0;i--)
    {
        if(t[i]!=0)
            break;
    }
    for(;i>=0;i--)
        printf("%d",t[i]);
    printf("\n");
}

大数乘法和加法的模拟计算。。。。

代码比较乱。。。。。。。。。

主要思想还是数组保存大数以及进位计算。。。。

新学数组做参数,以及指针的小应用。。。。

长期不碰c做出来有点虚。。。。。