寒假作业二之代码题
编程题
用c语言完成以下题目
-
注册该网站的账号
-
写一篇随笔描述
-
解题的思路过程
- 输出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的使用,因为全部是英文(看不懂啊),不过通过上网查找一些资料阅读博客还有同学给我的帮助,最终还是完成了。虽然不是很完美,不过相信接下来会变得更好!