博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
hdu 杭电 1002 A + B Problem II
阅读量:6082 次
发布时间:2019-06-20

本文共 1774 字,大约阅读时间需要 5 分钟。

题意:给你两个数,求和。很明显无论是int(最多能装10位的数),还是__int64(最多能装20位的数)都装不起1000位的数,所以必须用字符串装要相加的数。

 

解法:使用strrev()把字符串中的元素倒过来,如:a[3]="abc",strrev(a),数组a中的元素循序为"cba"

 

注意:输入的两个数都为0的情况,或一个数为0的情况。

 

ac代码:

View Code
#include 
#include
int main(){ int t; char a[1020],b[1020],c[1020]; int s,n; int i,j,k; while(scanf("%d",&t)!=EOF) { for(k=1;k<=t;k++) { scanf("%s",a); scanf("%s",b); printf("Case %d:\n%s + %s = ",k,a,b); if(a[0]=='0'&&b[0]=='0') { printf("0"); } if(a[0]!='0'&&b[0]=='0') { printf("%s",a); } if(a[0]=='0'&&b[0]!='0') { printf("%s",b); } //两个数都为0的情况,或一个数为0的情况 if(a[0]!='0'&&b[0]!='0') // 都不为0 { memset(c,'0',sizeof(c));//c数组装加后的数 strrev(a);strrev(b);//将数组a,b中的元素倒过来 if(strlen(a)
'9') //判断是否需要进位 { n=1; c[i]-=10; } else { n=0; } } if(n==1)c[s]='1';//判断是否需要进位 for(j=s;j>=0;j--) { if(c[j]!='0') { i=j; break; } } for(;i>=0;i--) { printf("%c",c[i]); } } printf("\n"); if(t!=k)printf("\n"); } } return 0;}

 

 

峰注:不明白请留言

转载于:https://www.cnblogs.com/zgfailmr/archive/2012/08/31/2665885.html

你可能感兴趣的文章
大学四年你必须做到的事儿---那些学计算机的
查看>>
rlwrap安装
查看>>
【scala初学】scala IDE eclipse
查看>>
VMM2012应用指南之4-向VMM中添加Hyper-V主机与应用服务器
查看>>
我的友情链接
查看>>
我的友情链接
查看>>
perl文件读写
查看>>
R-FCN
查看>>
DenseNet
查看>>
jspsmart 支持jdk1.4 解决utf-8编码时出现乱码的问题 附源码和jar包
查看>>
我的友情链接
查看>>
把LYNC从评估版升级到正式版
查看>>
我的友情链接
查看>>
eclipse 不能建立maven项目
查看>>
Session死亡讲解
查看>>
八周三次课(1月31日)
查看>>
我的友情链接
查看>>
关于linux中 变量相关 学习小白总结
查看>>
文德数据启动国庆中秋大优惠——现在购买立省三千
查看>>
每天一个python 小案例——循环和列表
查看>>