杭电oj这道题的解法是要通过字符数组储存数字在进行运算的,同时涉及到数值进位的问题,以下是代提供码参考。

  1. #include<stdio.h>
  2. #include<string.h>
  3. int main()
  4. {
  5. char a[1000],b[1000];
  6. int sum[10000]={0};
  7. int c,d,e,f,g,i,n,s;
  8. scanf("%d",&n);
  9. f=48;
  10. s=1;
  11. c=n;
  12. while(n--)
  13. {
  14. scanf("%s",a+1);
  15. scanf("%s",b+1);
  16. printf("Case %d:\n",s);
  17. printf("%s + %s = ",a+1,b+1);
  18. d=strlen(a+1);
  19. e=strlen(b+1);
  20. for(i=1;i<=d;i++)
  21. a[i]=a[i]-48;
  22. for(i=1;i<=e;i++)
  23. b[i]=b[i]-48;
  24. if(d==e) //数字位数相同的情况
  25. {
  26. for(i=1;i<=d;i++)
  27. {
  28. if(a[i]+b[i]>=10&&i>=2)
  29. {
  30. sum[i-2]=sum[i-2]+1;//向前面的一个sum加一进位,比如10+1
  31. sum[i-1]=(a[i]+b[i]-10);//进一位后再减去10,比如15-1=5
  32. }
  33. else
  34. sum[i-1]=a[i]+b[i];
  35. }
  36. }
  37. else if(d>e) //数字位数不相同的情况
  38. {
  39. for(i=1;i<=d-e;i++)
  40. sum[i]=a[i];
  41. f=1;
  42. for(i=d-e+1;i<=d;i++)
  43. {
  44. if(a[i]+b[f]>=10)
  45. {
  46. sum[i-1]=sum[i-1]+1;
  47. sum[i]=a[i]+b[f]-10;
  48. if(sum[i-1]>=10)
  49. {
  50. for(g=i-1;g>=1;g--)//考虑前面位数为10的进位
  51. {
  52. if(sum[g]>=10)
  53. {
  54. sum[g-1]=sum[g-1]+1;
  55. sum[g]=sum[g]-10;
  56. }
  57. }
  58. }
  59. }
  60. else
  61. sum[i]=a[i]+b[f];
  62. f++;
  63. }
  64. }
  65. else if(d<e) //数字位数不相同的情况
  66. {
  67. for(i=1;i<=e-d;i++)
  68. sum[i]=b[i];
  69. f=1;
  70. for(i=e-d+1;i<=e;i++)
  71. {
  72. if(a[f]+b[i]>=10)
  73. {
  74. sum[i-1]=sum[i-1]+1;
  75. sum[i]=a[f]+b[i]-10;
  76. if(sum[i-1]>=10)
  77. {
  78. for(g=i-1;g>=1;g--)
  79. {
  80. if(sum[g]>=10)
  81. {
  82. sum[g-1]=sum[g-1]+1;
  83. sum[g]=sum[g]-10;
  84. }
  85. }
  86. }
  87. }
  88. else
  89. sum[i]=a[f]+b[i];
  90. f++;
  91. }
  92. }
  93. if(d==e)
  94. {
  95. for(i=0;i<d;i++)
  96. printf("%d",sum[i]);
  97. sum[0]=0;
  98. s++;
  99. }
  100. if(d>e)
  101. {
  102. if(sum[0]==0)
  103. {
  104. for(i=1;i<=d;i++)
  105. printf("%d",sum[i]);
  106. }
  107. else
  108. {
  109. for(i=0;i<=d;i++)
  110. printf("%d",sum[i]);
  111. sum[0]=0;
  112. }
  113. s++;
  114. }
  115. if(d<e)
  116. {
  117. if(sum[0]==0)
  118. {
  119. for(i=1;i<=e;i++)
  120. printf("%d",sum[i]);
  121. }
  122. else
  123. {
  124. for(i=0;i<=e;i++)
  125. printf("%d",sum[i]);
  126. sum[0]=0;
  127. }
  128. s++;
  129. }
  130. if(s!=c+1)
  131. {
  132. printf("\n");
  133. printf("\n");
  134. }
  135. else
  136. printf("\n");
  137. }
  138. }

注意输出的格式。

其实说复杂也不复杂,有些地方是类似的。

转载自https://blog.csdn.net/qq_41083200/article/details/78555856

杭电oj 1002 C语言解法相关推荐

  1. 【ACM】杭电OJ 1002

    题目链接:杭电OJ 1002 表面上看是a+b,很简单,其实是大数的相加,所以要考虑的因素有很多:(瞬间觉得要是能用Python多好,哈哈哈) 还有!!! 要特别注意格式的输出!!!真的害死人!!!摸 ...

  2. 杭电OJ 1002 题目解答

    HDOJ 1002 A+B Problem Ⅱ AC 代码: #include <iostream> #include <string> #include <algori ...

  3. 杭电oj 1002 c++版本

    题目坑不多,就是大数的求和,基本就是BigDecimal的翻版,但格式输出很坑,前面两个\n,最后一个\n,一直pe很难受. 解题思路: 把两个数字按字符的形式按位加起来,注意下进位和高低位就行了,和 ...

  4. 杭电OJ 2008 C语言版 已通过

    //2008 #include<stdio.h> int main() {     int n,i;     while(scanf("%d",&n)!=EOF ...

  5. 杭电OJ第11页2075~2079算法题(C语言)

    目录 2075.A|B? 2076.夹角有多大 2077.汉诺塔IV 2078.复习时间 2079.选课时间 2075.A|B? Problem Description 正整数A是否能被正整数B整除, ...

  6. 杭电oj1620题c语言答案,杭电oj部分水题 c语言源代码.doc

    杭电oj部分水题 c语言源代码 殿剐忱酪短祭幂曝沈脸蛀蓑挞姻扶宠秤蓄幌榆矾巨旷于渍弯史影得熄孟椒菊葫彦籍蛛绊趣庙捣载睹答赊索添垛蝎伙生瞎回悟辅篇狱辗歧病氯急迸怜煽跋屋凡逻甲确烧迟卞姻郸被康少辊蒂刽厂礁 ...

  7. 杭电OJ第11页2035~2039算法题(C语言)

    目录 2035.人见人爱A^B 2036.改革春风吹满地 2037.今年暑假不AC 2038.Message 2039.三角形 2035.人见人爱A^B Problem Description 求A^ ...

  8. 杭电OJ第11页2085~2089算法题(C语言)

    目录 2085.核反应堆 2086.A1 = ? 2087.剪花布条 2088.Box of Bricks 2089.不要62 2085.核反应堆 Problem Description 某核反应堆有 ...

  9. 杭电OJ第11页2065~2069算法题(C语言)

    目录 2065."红色病毒"问题 2066.一个人的旅行 2067.小兔的棋盘 2068.RPG的错排 2069.Coin Change 2065."红色病毒" ...

最新文章

  1. 2015/6/1站立会议(补发)
  2. 叹息“博客园”的凋零
  3. SecureCRT 配置文件中 找密码
  4. java中XPATH操作xml,非常便捷
  5. linux实现字符火焰动画,linux flamegraph火焰图使用
  6. 区块链 链上脚本、智能合约和Dapp的关系区别
  7. 怎么才能打开dwg图纸?
  8. 点计算机管理没反应,电脑任务栏没反应怎么办 任务栏没反应解决方法
  9. 机器人开源项目KDL源码学习整理
  10. 《自然语言处理-基于预训练模型的方法》笔记
  11. JDON 论坛上的NETTY贴
  12. Python six库介绍和用法
  13. 80秒验证13亿个身份证号码,包含省市县验证
  14. ghost系统后只有一个盘了别的分区的数据怎样恢复
  15. (转)超棒的EXCEL使用技巧
  16. 基于FPGA的数字钟(四)——时钟控制模块
  17. 杰普实训日记 授课内容 第一天 讲师:李春雨
  18. 人在旅途——》张家界5天出行准备清单
  19. c++遇到的编译错误
  20. 华为AP4050DN-HD使用tftp、uboot瘦转胖

热门文章

  1. Python爬取多页糗事百科
  2. 如何打开探月工程数据发布与信息服务系统下载的数据
  3. 收房入住注意事项及程序
  4. 什么是多线程?实现多线程有哪俩种编程方式
  5. 商业智能系统实施步骤
  6. 学Linux选择什么系统比较好?
  7. 中级计算机知识点,计算机操作员中级基础知识教程解析.doc
  8. B1094 谷歌的招聘 (20 分)
  9. C++继承——宠物的生长
  10. 小汪汪服务器不稳定,小汪汪登陆不上问题解决办法 游戏进不去怎么解决