C語言大數相加減

大數加法

#include<iostream>
#include<stdio.h>
#include<cstring>
using namespace std;
int main()
{
    char s1[100],s2[100];
    int i,l,len1,len2;
    int a[100],b[100],c[100];
    memset(a,0,sizeof(a));//初始化整型數組
    memset(b,0,sizeof(b));
    memset(c,0,sizeof(c));
    scanf("%s",s1);
    scanf("%s",s2);
    len1 = strlen(s1);
    len2 = strlen(s2);
    for(i=0;i<len1;i++)//分別將s1,s2倒序存放,並將字符型轉化爲整型
    {
        a[i] = s1[len1-i-1]-'0';
    }
    for(i=0;i<len2;i++)
    {
        b[i] = s2[len2-i-1]-'0';
    }
    l = len1>len2?len1:len2;
    for(i=0;i<l;i++)//進位操作
    {
        c[i]+=a[i]+b[i];
        if(c[i]>=10)
        {
            c[i+1]++;
            c[i]=c[i]%10;
        }
    }
    if(c[l]!=0)//先輸出最後一位
    {
        printf("%d",c[l]);
    }
    for(i=l-1;i>=0;i--)//輸出數據
    {
        printf("%d",c[i]);
    }
    return 0;
}

大數減法

#include<iostream>
#include<stdio.h>
#include<cstring>
int main()
{
    char s1[10000],s2[10000];
    int a[10000],b[10000],c[10000];
    int i,k,l,len1,len2;
    int flag=0;
    memset(a,0,sizeof(a));
    memset(b,0,sizeof(b));
    memset(c,0,sizeof(c));
    scanf("%s",s1);
    scanf("%s",s2);
    len1 = strlen(s1);
    len2 = strlen(s2);
    for(i=0;i<len1;i++)
    {
        a[i] = s1[len1-i-1]-'0';
    }
    for(i=0;i<len2;i++)
    {
        b[i] = s2[len2-i-1]-'0';
    }
    l = len1>len2?len1:len2;
    if(len1>=len2)
    {
        k=1;
    }
    if(len1<len2)
    {
        k=-1;
    }
    for(i=0;i<l;i++)
    {
        if(k>0)
        {
            if(a[i]-b[i]>=0)
            {
                c[i] = a[i]-b[i];
            }
            else{
                c[i] = a[i]+10-b[i];
                a[i+1]--;
            }
        }
        if(k<0)
        {
            if(b[i]-a[i]>=0)
            {
                c[i] = b[i]-a[i];
            }
            else{
                c[i] = b[i]+10-a[i];
                b[i+1]--;
            }
        }
    }
    if(k<0)
    {
        printf("-");
    }
    for(i=l-1; i>=0; i--)
	{
	    if(c[i])
        {
            flag=1;
        }
        if(flag||i==0)
        {
            printf("%d", c[i]);
        }
	}
    return  0;
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章