寒假作业二之代码题

编程题

github链接

用c语言完成以下题目

1001.A+B Format(20)

  • 注册该网站的账号

  • 写一篇随笔描述

    • 解题的思路过程

      • 输出A+B的和并不难,关键在于每三位需要逗号,(当然小于三位的直接输出)所以只要用if语句判断某位是否是三的倍数,再在前面加上逗号即可。
      • 其次,要怎么一个一个数字输出并且在他们中插入逗号?
        • 我找到sprintf函数,将两个整数和变成字符串存在字符数组里面
        • 利用strlen函数计算字符数组长度count
        • 进行count次循环,每三位输出一个逗号,同时输出字符
    • 我的初始代码

    • 编程过程中调试与在线测试(提交代码)后的bug发现与修改过程

      • 第一次发现若刚好是三的倍数,会在首位前面多输出一个逗号,所以我多加了一个判断条件

      • 第二次,测试了一下负数,发现编译器将“-”号当成一个字符,所以会出现这种情况

      • 所以我分成两种情况,一是和为正数,二是和为负数,正数的话直接处理,而负数我就把判断条件改了以下,直接跳过负号的位数判断,就是图中我画出来的部分,其他的大同小异

  • 在PAT上的提交列表记录

    • 第一次有测试点(9分的)给错了

    • 第二次

    • 大功告成,最终代码:

      
      #include<stdio.h>
      #include<string.h>
      #include<math.h>
      int main()
      {
        int a,b,sum,n,i=0,j=0,count;
        char  str[100];
        scanf("%d %d",&a,&b);
        sum=a+b;
        sprintf(str,"%d",sum);
        count=strlen(str);
        if(sum>=0)
      {
      	if(count>3)
              for(i=count-1,j=0;i>=0,j<count;i--,j++)
              {
      	    if((i+1)%3==0&&j!=0) printf(",");
      	    printf("%c",str[j]);
              }
          else
          printf("%d",sum);    
      }
      else
      {
          if(count>4)
          for(i=count-1,j=0;i>=0,j<count;i--,j++)
          {
      	if((i+1)%3==0&&j!=1) printf(",");
      	printf("%c",str[j]);
          }
          else
      	printf("%d",sum);   
      }
      
          return 0; 
       } 
      
      
  • 这次作业让我比较头疼的就是git和github的使用,因为全部是英文(看不懂啊),不过通过上网查找一些资料阅读博客还有同学给我的帮助,最终还是完成了。虽然不是很完美,不过相信接下来会变得更好!

  • MY PDF

原文地址:https://www.cnblogs.com/luzeming/p/6360959.html