noi 大整数加法(多组输入)

此题用字符串读入就行,在转化成数组,模拟竖式加法就行,主要是注意前导0,还有0+0这种情况,

#include<stdio.h> #include<string.h>

int main() { char a[300],b[300]; while(scanf("%s %s",a,b)!=EOF)///得到两个字符串,即两个大整数 { int i,len1,len2,len,a1[300],b1[300],c[300]; memset(a1,0,sizeof(a1));///清空数组 memset(b1,0,sizeof(b1)); memset(c,0,sizeof(c));///用来存储答案 len1=strlen(a);///获得两个字符串的长度 len2=strlen(b); if(len1>len2)///取较长的字符串的长度为循环次数 len=len1; else len=len2; for(i=0;i<len1;i++)///将两个字符串转化为数组,注意这里逆序了,便于对齐从最后一位开始加 a1[i]=a[len1-i-1]-'0'; for(i=0;i<len2;i++) b1[i]=b[len2-i-1]-'0'; for(i=0;i<len;i++)///进行相加操作 { c[i]+=(a1[i]+b1[i]); if(c[i]>9)///如果该位大于9了,要进行进位 { c[i]-=10; c[i+1]++; } } while(c[i]==0)///输出的时候去除前导0 i--; if(i<0)///如果所有的都为0,说明答案就是0,直接输出0 printf("0\n"); else { for(;i>=0;i--)///答案数组从高位开始输出 printf("%d",c[i]); printf("\n"); } } return 0; }

 

全部评论

相关推荐

A_SOUL_Off...:疑似加班加出幻觉了
点赞 评论 收藏
分享
11-13 20:16
已编辑
厦门理工学院 软件测试
专业嗎喽:硕佬,把学校背景放后面几段,学校背景双非还学院,让人看了就不想往下看。 把实习经历和个人奖项放前面,用数字化简述自己实习的成果和掌握的技能,比如负责项目一次通过率90%,曾4次发现项目潜在问题风险为公司减少损失等等
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务