新用户登入 登录
萌子岛 返回首页

kzyn的个人空间 https://www.dommdo.com/?623704 [收藏] [复制] [RSS]

日志

表达式计算

已有 147 次阅读2012-5-6 18:50 | 计算, 表达式

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
char s[1600];
int temp1[800],temp2[800];

int max(int a,int b)
{
    if(a>=b)return a;
    else if(a<b) return b;
}

int main()
{
    int i,j=0,k=0,l,m,zan,ji,maxj=0;
    scanf("%s",&s);
    l=strlen(s);
    memset(temp1,0,sizeof(temp1));
    memset(temp2,0,sizeof(temp2));
    for(i=l-1;i>=0;i--)
    {
        if(s[i]>=48&&s[i]<=57){temp1[j]=s[i]-48;j++;}
        else if(s[i]=='+')break;
    }
    for(;i>=0;i--)
    {
        
        if(s[i]>=48&&s[i]<=57){temp2[k]=s[i]-48;k++;}
        else if(s[i]=='+')
        {
             //高精度加法 
             ji=max(j,k);
             for(m=0;m<ji;m++)
             {
                 zan=temp1[m]+temp2[m];
                 if(zan>=10)
                 {
                     zan-=10;
                     temp1[m+1]++;
                 }
                 temp1[m]=zan;
             }
             if(temp1[ji]==1)ji++;
             if(ji>maxj)maxj=ji;
             k=0;
             memset(temp2,0,sizeof(temp2));
        }
    }
    ji=max(j,k);
    for(m=0;m<ji;m++)
    {
        zan=temp1[m]+temp2[m];
        if(zan>=10)
        {
             zan-=10;
             temp1[m+1]++;
        }
        temp1[m]=zan;          
    }
    if(temp1[ji]==1)ji++;
    if(ji>maxj)maxj=ji;
    for(i=maxj-1;i>=0;i--)
        printf("%d",temp1[i]);
    return 0; 
}


路过

雷人

握手

鲜花

鸡蛋

全部作者的其他最新日志

评论 (0 个评论)

小黑屋|萌子岛

GMT+8, 2025-8-25 12:46 , Processed in 2.199089 second(s), 16 queries , Gzip On, MemCache On.

Copyright 2020  atollmoe©.a2.1.0 All rights reserved. 9+

Copyright 2009  supported by zhixuan© oeo© oko© All rights reserved.Thank you!

返回顶部