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. Python: 列表的基本用法

    列表是可变的,可以改变的序列,它能够保存任何数据类型. >>> list = []        #定义一个空列表>>> list.append(1)        ...

  2. [专题论文阅读]【分布式DNN训练系统】 FireCaffe

    FireCaffe Forrest N. Iandola FireCaffe: near-linear acceleration of deep neural network training on ...

  3. Acadia Lab 6 轮盘游戏机

    WRTnode 肯定不是亲生的... 果断转投Acadia —.— 不是国军不给力,奈何共军有高达 为啥不转树莓派?因为选做实验肯定有很多人用树莓派做...我抢不过他们,只能挑点冷门的蹭分_(:з」 ...

  4. Direct3D学习笔记 - 浅析HDR Lighting Sample

    一.HDR简介 HDR(High Dynamic Range,高动态范围)是一种图像后处理技术,是一种表达超过了显示器所能表现的亮度范围的图像映射技术.高动态范围技术能够很好地再现现实生活中丰富的亮度 ...

  5. eclipse中的 Compiler compliance level含义

    The compiler compliance setting tells the compiler to pretend it's a different version of Java. The ...

  6. iOS之UILabel自适应高度、宽度

    下列两条自适应高度和宽度的自定义方法:

  7. 关于readdir返回值中struct dirent.d_type的取值有关问题(转)

    关于readdir返回值中struct dirent.d_type的取值问题 原网页链接 http://www.gnu.org/software/libc/manual/html_node/Direc ...

  8. javascript中 for循环的应用

    1.有一个棋盘,有64个方格,在第一个方格里面放1粒芝麻重量是0.00001kg,第二个里面放2粒,第三个里面放4,棋盘上放的所有芝麻的重量 <script> var sum=0; //一 ...

  9. windows下安装composer抛出Composer\Downloader\TransportException异常解决办法

    1. 把默认的 secure-http 改成false composer config -g secure-http false 2. 修改配置文件 #修改全局文件(推荐) composer conf ...

  10. Storyboard中segue(转场)使用

    源引:http://www.2cto.com/kf/201210/161737.html 一.视图切换类型介绍在storyboard中,segue有几种不同的类型,在iphone和ipad的开发中,s ...