Github链接https://github.com/zora02/object-oriented/tree/master/1001.A%2BB Format (20)

一、解题

题目

解题过程

这是一道简单的a+b的问题,可是说简单也不简单,题目对输出的结果有要求,这才是这道题要考我们的地方吧。我一开始的想法就是把a+b的结果变成一个字符串,然后在其中加入逗号。这是我最开始的想法,然后我开始做题了。

我第一个遇到的问题就是怎样将整数变成字符串(感觉自己好弱T^T):

我去找度娘了,知道了有sprintf这个函数可以实现这一功能。我就去百度百科里认真的看了一遍有关sprintf这个函数的知识,虽然还是有看不懂的地方,但是至少我又多知道了一种函数,在以后的学习中肯定还会遇到,慢慢的应该就知道该如何很好的使用这个函数了。

springf函数的百度百科

第一次调试遇到的问题

这是我写完代码以后拿样例调试的结果

问题一下子就出来了,我没有考虑负号的情况,我把负号也当作一个数了。

这是我第一次写出来的代码:

 #include <stdio.h>
#include <string.h>
int main()
{
int a,b,c,i;
int l=0;
char s[100];
scanf("%d%d",&a,&b);
c=a+b;
sprintf(s,"%d",c);
l=strlen(s);
if(l>4)
{for(i=0;i<l;i++){
printf("%c",s[i]);
if(i==l-1) continue;
if((i+1-l%3)%3==0)
printf(",");
}
}
else if(l<=4) printf("%s",s);
return 0;
}

第二次尝试 修改代码

这是我第二次写出来的代码:

 #include <stdio.h>
#include <string.h>
int main()
{
int a,b,c,i;
int l=0;
char s[100],s1[100];
scanf("%d%d",&a,&b);
c=a+b;
sprintf(s,"%d",c);
l=strlen(s);
if(l>4)
{if(s[0]=='-') {printf("%c",'-');
for(i=1;i<l;i++) {s1[i-1]=s[i];}
for(i=0;i<l;i++){
printf("%c",s1[i]);
if(i==l-1) continue;
if((i+1-l%3)%3==0)
printf(",");
}
}
else for(i=0;i<l;i++){
printf("%c",s[i]);
if(i==l-1) continue;
if((i+1-l%3)%3==0)
printf(",");
} }
else if(l<=4) printf("%s",s);
return 0;
}

我拿了样例去调试,过了!超级开心的,就赶紧拿到pat上面提交。没想到提交了有一个错误。

最开始我以为是自己开的数组s、s1没有初始化的原因,可是改了以后去交还是同样的错误。我感觉蛮奇怪的,也尝试了其他的例子,都可以过。就去问了学姐。学姐刚开始建议我把对负号的判断提出来,然后将剩下的数字赋值到另一个数组进行判断,这样思路会比较清晰。想想我的代码确实有点冗长。

第三次尝试 再次修改代码

这是我第三次写出来的代码

#include <stdio.h>
#include <string.h>
int main()
{
int a,b,c,i;
int l=0;
int t=0;
char s[100]={'/0'};
char s1[100]={'/0'};
scanf("%d%d",&a,&b);
c=a+b;
sprintf(s,"%d",c);
l=strlen(s);
if(s[0]=='-') {printf("%c",'-');
for(i=0;i<l-1;i++) {s1[i]=s[i+1];}}
else for(i=0;i<l;i++) {s1[i]=s[i];}
t=strlen(s1);
if(t>4)
for(i=0;i<t;i++){
printf("%c",s1[i]);
if(i==t-1) continue;
if((i+1-t%3)%3==0)
printf(",");
}
else if(t<=4) printf("%s",s1);
return 0;
}

没想到后来交上还是同一点错误!我开始想我是不是有哪个情况没有考虑,后来在认真看了一遍题目才发现,原来我的判断条件错了。当结果是4位数的时候也是要加逗号的,还是太粗心了。原来是这个错误。但是我在改代码过程中还是学到了很多。

成功ac!!!

终极版代码:

#include <stdio.h>
#include <string.h>
int main()
{
int a,b,c,i;
int l=0;
int t=0;
char s[100]={'/0'};
char s1[100]={'/0'};
scanf("%d%d",&a,&b);
c=a+b;
sprintf(s,"%d",c);
l=strlen(s);
if(s[0]=='-') {printf("%c",'-');
for(i=0;i<l-1;i++) {s1[i]=s[i+1];}}
else for(i=0;i<l;i++) {s1[i]=s[i];}
t=strlen(s1);
if(t>=4)
for(i=0;i<t;i++){
printf("%c",s1[i]);
if(i==t-1) continue;
if((i+1-t%3)%3==0)
printf(",");
}
else if(t<4) printf("%s",s1);
return 0;
}

PAT提交纪录:

终于给过了!!!

小结

其实感觉这是一道蛮基础的题目,可是我还是遇到各种问题。哎,感觉自己c真的没有好好学啊T^T。但是在写代码和修改代码的过程中,我都觉得是一个学习的过程。在写代码的时候会可能学到新的解题思路和新的函数,在修改代码的过程中我可以知道自己解题思路和方法不好的地方,知道了自己不足之处。以后还是应该多多做题,让自己好好学习。

二、上传代码

(其实这部分内容并不在作业的要求范围内。但是我还是想讲一下。因为它花了我更多的时间去解决(´・_・`))

看到作业要求里说要把代码提交到Github里,我最开始以为不就是上传一下代码而已,有什么难的。

But!真的好难啊,首先是全英文的界面,这都是什么专业术语啊,我看不懂>_<。然后开始了各种百度,由于我的电脑是MacBook,好多百度出来的方法都是在windows下的操作方法,我看群里面大家讨论的也都是windows下的操作。我也只能看看,还是继续我自己的搜索之路吧。然后在百度了各种教程以后我搞定了ssh key,然后开始打算上传代码了。可是我还是不知道改怎么上传orz。。。后来在各种搜索中,我发现了sourcetree这个神器,然后就成功上传了!这喜悦不比我ac了少啊!

最后我想说其实我还是不知道该怎么使用Github,我看到班导师说要用命令行什么的,我什么都看不懂啊,到最后我也是没有用。不过我觉得这些东西好像要我们亲自去实践了才会真正的弄明白,光听别人讲并不能学到什么。

三、总结

通过完成这项作业我学到了不少东西:

  1. 知道了Github这个神器的网站,虽然我都不怎么会用(´・_・`)
  2. 学会了Markdown的一些基本用法,慢慢学会用Markdown码字。
  3. 知道了成为一名合格的程序猿需要学习很多,路漫漫啊,我能做的就是一步一步的学好。
  4. 感受到了实践出真知真是个伟大的真理啊!!!

Ps.感觉我这篇随笔写的像在记流水账一样,我不知道这样对于阅读者来说会不会很糟糕(╥﹏╥),希望能够见谅。这些都是我想说的话,也许有些废话,可能还有一些逻辑混乱的话。这是我写的第一篇随笔,so不足之处希望能够指出,我将感激不尽( ω )

面向对象程序设计 第二次作业<1>的更多相关文章

  1. 程序设计第二次作业<1>

    面向对象程序设计第二次作业<1> Github 链接:https://github.com/Wasdns/object-oriented 题目: <1>第一次尝试 我立马认识到 ...

  2. hdoj上的一题和程序设计第二次作业的拓展-人见人爱a+b

    hdoj上一道有意思的题目,题目: 人见人爱a+b 敲的也蛮快的,大概十分钟左右就AC了.代码如下: 人见人爱a+b #include<stdio.h> int main() { int ...

  3. C语言程序设计第二次作业--顺序结构

    C语言程序设计第二次作业--顺序结构 1.输出带框文字:在屏幕上输出以下3行信息. ************* Welcome ************* 源程序 #include <stido ...

  4. THE LAST ONE!! 2017《面向对象程序设计》课程作业八

    THE LAST ONE!! 2017<面向对象程序设计>课程作业八 031602230 卢恺翔 GitHub传送门 题目描述 1.时间匆匆,本学期的博客作业就要结束了,是否有点不舍,是否 ...

  5. C语言程序设计第二次作业

    一.学习内容 掌握关系运算符.逻辑运算符.条件运算符 掌握常用数学函数的用法 if语句(单分支,双分支和多分支) 用switch语句实现多分支 理解多个if语句,if...else if... 和if ...

  6. C语言程序设计第二次作业——顺序结构

    (一)改错题 1.输出带框文字:在屏幕上输出以下3行信息. 错误信息1: 错误原因:i和d位置错误 改正方法:i和d位置互换 错误信息2: 错误原因:\n后缺了一个" 改正方法:\n后加一个 ...

  7. 面向对象程序设计_课堂作业_01_Circle

    The 1st classwork of the C++ program 题目: Create a program that asks for the radius of a circle and p ...

  8. Java面向对象程序设计作业目录(作业笔记)

    持续更新中............. 我的大学笔记>>> 第1章 面向对象 >>> 1.1.5 编写Java程序,创建Dota游戏中的防御塔类,通过两个坐属性显示防 ...

  9. C语言程序设计第二次作业——

    1,编译过程过程中的错误缺引号和分号并且拼写错误. 正确结果: 2,编译过程 改正错误: 正确结果: 3,利用SIZEOF运算符求出的数据类型所占字节大小: 4,在头文件LIMITS.H中相关的编译 ...

随机推荐

  1. 带隙基准(Bandgap,BG)

    Bandgap voltage reference,常常有人简单地称它为Bandgap.最经典的带隙基准是利用一个与温度成正比的电压与一个与温度成反比的电压之和,二者温度系数相互抵消,实现与温度无关的 ...

  2. 线程小demo

    下午就手写了两个demo,整理了一下. #!/sur/bin/env python # -*- coding:utf-8 -*- __author__ = 'ganzl' import threadi ...

  3. 写了cookie阻止通过输入地址直接访问下一个html,但是直接输入地址访问时,会闪一下下一个页面,怎么回事啊????、

    描述:做了两个页面login.html   index.html  在index的body加了onload事件,调用一个js,js中有cookie的判断,防止没有登录就打开index.html,如果没 ...

  4. select标签非空验证,第一个option value=""即可

    select标签非空验证,第一个option value=""即可,否则不能验证

  5. JS中this的指向问题

    JS中this的定义:this对象是在运行时基于函数的执行环境绑定的(通俗点来说就是:this代表当前函数属于哪个对象). this一般情况下都代表的是global对象,在浏览器中就是window对象 ...

  6. Host 'XXX' is not allowed to connect to this MySQL server 解决方案/如何开启MySQL的远程帐号

    www.cnblogs.com/zhangzhu/archive/2013/08/22/3274831.html 如何开启MySQL的远程帐号-1)首先以 root 帐户登陆 MySQL 在 Wind ...

  7. 检测Java程序运行时间的2种方法(高精度的时间[纳秒]与低精度的时间[毫秒])

    第一种是以毫秒为单位计算的. 代码如下: long startTime=System.currentTimeMillis(); //获取开始时间 doSomeThing(); //测试的代码段 lon ...

  8. Web开发必知的八种隔离级别

    ACID性质是数据库理论中的奠基石,它定义了一个理论上可靠数据库所必须具备的四个性质:原子性,一致性,隔离性和持久性.虽然这四个性质都很重要,但是隔离性最为灵活.大部分数据库都提供了一些可供选择的隔离 ...

  9. 【POJ3691】DNA repair(AC自动机,DP)

    题意: 生物课上我们学到,DNA序列中只有A, C, T和G四种片段. 经科学发现,DNA序列中,包含某些片段会产生不好的基因,如片段"ATC"是不好片段,则"AGATC ...

  10. B. Shaass and Bookshelf DP

    http://codeforces.com/contest/294/problem/B 据说是贪心,我用了一个复杂度是2e8的dp水过去了. 其实这题就是给你n个数,每个数有两个权值,分成两组,使得第 ...