加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

大明A+B

发布时间:2020-12-14 02:25:52 所属栏目:大数据 来源:网络整理
导读:话说,经过了漫长的一个多月,小明已经成长了许多,所以他改了一个名字叫“大明”。 这时他已经不是那个只会做100以内加法的那个“小明”了,现在他甚至会任意长度的正小数的加法。 现在,给你两个正的小数A和B,你的任务是代表大明计算出A+B的值。 Input 本
话说,经过了漫长的一个多月,小明已经成长了许多,所以他改了一个名字叫“大明”。
这时他已经不是那个只会做100以内加法的那个“小明”了,现在他甚至会任意长度的正小数的加法。

现在,给你两个正的小数A和B,你的任务是代表大明计算出A+B的值。

Input

本题目包含多组测试数据,请处理到文件结束。
每一组测试数据在一行里面包含两个长度不大于400的正小数A和B。

Output

请在一行里面输出输出A+B的值,请输出最简形式。详细要求请见Sample Output。

Sample Input

1.1 2.9
1.2222222222 2.3444323343
1 1.1

Sample Output

4
3.4555434454

2.1

#include<stdio.h>
#include<string.h>
#define MAXN 500
char a[MAXN],b[MAXN];
int c[MAXN],d[MAXN],e[MAXN],f[MAXN],x[MAXN],y[MAXN];
int main()
{
	int i,j,k,m,p,q,len1,len2,t;
	while(scanf("%s%s",a,b)!=EOF)
	{
		memset(c,sizeof(c));
		memset(d,sizeof(d));
		memset(e,sizeof(e));
		memset(f,sizeof(f));
//		memset(x,sizeof(x));
//		memset(y,sizeof(y));
		k=len1=strlen(a);
		for(i=0;i<len1;i++)
		{
			if(a[i]=='.')
			k=i;			//the point position of first 
		}
		m=len2=strlen(b);
		for(i=0;i<len2;i++)
		{
			if(b[i]=='.')
			m=i;			//the point position of second 
		}
			/*	change char of zhengshu to int */
		for(j=0,i=k-1;i>=0;i--)
		{
			c[j++]=a[i]-'0';
		}
		for(j=0,i=m-1;i>=0;i--)
		{
			d[j++]=b[i]-'0';
		}
		//change char of xiaoshu to int
		for(j=0,i=k+1;i<len1;i++)
		{
			e[j++]=a[i]-'0';
		}
		for(j=0,i=m+1;i<len2;i++)
		{
			f[j++]=b[i]-'0';
		}
		//count the xiaoshu
		p=q=0;
		if(len1-k<len2-m)
		p=len2-m;
		else
		p=len1-k;
		for(i=p-1;i>=0;i--)
		{
			x[i]=(e[i]+f[i]+q)%10;
			if(e[i]+f[i]+q>=10)
			{
				q=(e[i]+f[i]+q)/10;
			}
			else
			q=0;
		}
		//	count the zhengsu 
		if(k<m)
		t=m;
		else
		t=k;
		for(i=0;i<=t;i++)
		{
			y[i]=(c[i]+d[i]+q)%10;
			if(c[i]+d[i]+q>=10)
			{
				q=(c[i]+d[i]+q)/10;
			}
			else
			q=0;
		}
		if(y[t]>0)
		t=t+1;
		for(i=t-1;i>=0;i--)
		printf("%d",y[i]);
	/**************************************/
		while(x[p-1]==0)//deal the 0 behind of xiaoshu
		{
			if(x[p-1]==0)
			p=p-1;
		}
		
		
	/**************************************/
		if(p>0)
		printf(".");
		
		for(i=0;i<p;i++)
		printf("%d",x[i]);
		
		printf("n");	
	}
	return 0;
} 

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读