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

hdu 1002大数加法

发布时间:2020-12-14 02:55:55 所属栏目:大数据 来源:网络整理
导读:#includestdio.h#includestring.hvoid Daoxu(int str[],int n);/*定义一个倒序数组的函数,n为数组中元素个数*/ void Daoxu(int str[],int n) { int key; --n; for(int i=0;in;++i,--n) { key=str[i]; str[i]=str[n]; str[n]=key; } }int a[1001],b[1001],c[
#include<stdio.h>
#include<string.h>
void Daoxu(int str[],int n);/*定义一个倒序数组的函数,n为数组中元素个数*/
  void Daoxu(int str[],int n)
  {
  	int key;
  	--n;
  	for(int i=0;i<n;++i,--n)
  	{
  		key=str[i];
  		str[i]=str[n];
  		str[n]=key;
  	}
  }
int a[1001],b[1001],c[10001];
int main(void)
{
	int t;
	while(scanf("%d",&t)==1)
	{
		int ll=1;
		getchar();
		while(t--)
		{
		memset(a,'',sizeof(a));
		memset(b,sizeof(b));
		int i=0,j=0,x;
		while((x=getchar())!=' ')
		{
			a[i]=x-'0';
			c[i]=x-'0';
			++i;
		}/*将加数存入数组a【】,i为数组中元素个数*/
		while((x=getchar())!='n')
		{
			b[j]=x-'0';
			++j;
		}/*将加数存入数组b【】,j为数组b中元素个数*/
		 Daoxu(a,i);
		 Daoxu(b,j);
		 int maxline;
		 if(i>j)
		 {
		 	maxline=i;
		 }
		 else
		 {
		 	maxline=j;
		 }/*找出最长数*/
		 for(int i=0;i<maxline;i++)
		 {
		 	int key=(b[i]+a[i])%10;
		 	a[i+1]=a[i+1]+(a[i]+b[i])/10;
		 	a[i]=key;
		 }
		 if(a[maxline]==0)
		 {
		 	maxline--;
		 } 
		 
		/*输出之前把数组倒回来输出*/
		 printf("Case %d:n",ll);
		 	for(int k=0;k<i;k++)
		 	{
		 		printf("%d",c[k]);
		 	}
		 	printf(" + ");
		 	for(j=j-1;j>=0;j--)
		 	{
		 		printf("%d",b[j]);
		 	}
		 	printf(" = ");
		 for(;maxline>=0;--maxline)
		 {
		 	printf("%d",a[maxline]);
		 }
		 printf("n");
		 if(t!=0)
		 printf("n");
		 ++ll;
	    }
	}
	return 0;
}

背景:本想水水更健康,没想到被这个大数加法整了两个多小时,太多细节,太多易错;终于知道模拟题有多虐心了,不过越虐,越爽。

学习:1、主要是输出格式的设定,最后一个空格最后一个换行符都不要。

心得:无论多么仔细还是会有失误,特别是在代码变长以后,所以我没写完一个小块都应该检查一下,这比做完了再去检查有很多好处,节省时间一些!

(编辑:李大同)

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

    推荐文章
      热点阅读