面向对象程序设计 第二次作业<1>
Github链接:https://github.com/zora02/object-oriented/tree/master/1001.A%2BB Format (20)
一、解题
题目
解题过程
这是一道简单的a+b的问题,可是说简单也不简单,题目对输出的结果有要求,这才是这道题要考我们的地方吧。我一开始的想法就是把a+b的结果变成一个字符串,然后在其中加入逗号。这是我最开始的想法,然后我开始做题了。
我第一个遇到的问题就是怎样将整数变成字符串(感觉自己好弱T^T):
我去找度娘了,知道了有sprintf这个函数可以实现这一功能。我就去百度百科里认真的看了一遍有关sprintf这个函数的知识,虽然还是有看不懂的地方,但是至少我又多知道了一种函数,在以后的学习中肯定还会遇到,慢慢的应该就知道该如何很好的使用这个函数了。
第一次调试遇到的问题
这是我写完代码以后拿样例调试的结果
问题一下子就出来了,我没有考虑负号的情况,我把负号也当作一个数了。
这是我第一次写出来的代码:
#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,我看到班导师说要用命令行什么的,我什么都看不懂啊,到最后我也是没有用。不过我觉得这些东西好像要我们亲自去实践了才会真正的弄明白,光听别人讲并不能学到什么。
三、总结
通过完成这项作业我学到了不少东西:
- 知道了Github这个神器的网站,虽然我都不怎么会用(´・_・`)
- 学会了Markdown的一些基本用法,慢慢学会用Markdown码字。
- 知道了成为一名合格的程序猿需要学习很多,路漫漫啊,我能做的就是一步一步的学好。
- 感受到了实践出真知真是个伟大的真理啊!!!
Ps.感觉我这篇随笔写的像在记流水账一样,我不知道这样对于阅读者来说会不会很糟糕(╥﹏╥),希望能够见谅。这些都是我想说的话,也许有些废话,可能还有一些逻辑混乱的话。这是我写的第一篇随笔,so不足之处希望能够指出,我将感激不尽( ω )
面向对象程序设计 第二次作业<1>的更多相关文章
- 程序设计第二次作业<1>
面向对象程序设计第二次作业<1> Github 链接:https://github.com/Wasdns/object-oriented 题目: <1>第一次尝试 我立马认识到 ...
- hdoj上的一题和程序设计第二次作业的拓展-人见人爱a+b
hdoj上一道有意思的题目,题目: 人见人爱a+b 敲的也蛮快的,大概十分钟左右就AC了.代码如下: 人见人爱a+b #include<stdio.h> int main() { int ...
- C语言程序设计第二次作业--顺序结构
C语言程序设计第二次作业--顺序结构 1.输出带框文字:在屏幕上输出以下3行信息. ************* Welcome ************* 源程序 #include <stido ...
- THE LAST ONE!! 2017《面向对象程序设计》课程作业八
THE LAST ONE!! 2017<面向对象程序设计>课程作业八 031602230 卢恺翔 GitHub传送门 题目描述 1.时间匆匆,本学期的博客作业就要结束了,是否有点不舍,是否 ...
- C语言程序设计第二次作业
一.学习内容 掌握关系运算符.逻辑运算符.条件运算符 掌握常用数学函数的用法 if语句(单分支,双分支和多分支) 用switch语句实现多分支 理解多个if语句,if...else if... 和if ...
- C语言程序设计第二次作业——顺序结构
(一)改错题 1.输出带框文字:在屏幕上输出以下3行信息. 错误信息1: 错误原因:i和d位置错误 改正方法:i和d位置互换 错误信息2: 错误原因:\n后缺了一个" 改正方法:\n后加一个 ...
- 面向对象程序设计_课堂作业_01_Circle
The 1st classwork of the C++ program 题目: Create a program that asks for the radius of a circle and p ...
- Java面向对象程序设计作业目录(作业笔记)
持续更新中............. 我的大学笔记>>> 第1章 面向对象 >>> 1.1.5 编写Java程序,创建Dota游戏中的防御塔类,通过两个坐属性显示防 ...
- C语言程序设计第二次作业——
1,编译过程过程中的错误缺引号和分号并且拼写错误. 正确结果: 2,编译过程 改正错误: 正确结果: 3,利用SIZEOF运算符求出的数据类型所占字节大小: 4,在头文件LIMITS.H中相关的编译 ...
随机推荐
- 关于 矩阵在ACM中的应用
关于矩阵在ACM中的应用 1.矩阵运算法则 重点说说矩阵与矩阵的乘法,不说加减法. 支持: 结合律 (AB)C = A(BC) 分配律 A(B+C) = AB + AB $\left( \lambd ...
- 读Javascript高级程序设计第三版第六章面向对象设计--创建对象
虽然Object构造函数或者对象字面量都可以用来创建单个对象,但是缺点非常明显:使用同一接口创建很多对象,会产生大量重复代码. 工厂模式 1 function CreatePerson(name,a ...
- Firefly安装ROS及ssh远程登录配置
一.在Linux firefly 3.10.0 上安装ROS-indigo 快捷键 CTRL + ALT + T 打开终端并安装ROS-indigo sudo sh -c 'echo "d ...
- centos 安装 maven
1: 下载 maven 我采用的是 apache-maven-3.3.9-bin.tar.gz http://maven.apache.org/download.cgi 2: 解压 tar ...
- JavaScript内置对象之数组
一.JavaScript对象之数组 1.创建数组的方式 (1)使用Array构造函数 语法:new Array() 小括号()说明: -预先知道数组要保存的项目数量 -向Array构造函数中传递数组应 ...
- modelsim无法识别include文件的解决方法
modelsim发现include关联的文件编译报语法错误,文件名需要写绝对路径,即使这个文件和工程其它文件在一个目录上.例如只写成 `include "c0_ddr3_model_para ...
- Activity之间传递参数(一)
-------siwuxie095 传递简单数据 (1)首先创建一个项目:SendArgs (2)选择API:21 Android 5.0 (3)选择 Empty Activity (4)默认 (5) ...
- form表单里如果只存在一个文本框,enter键提交
在这里说一说浏览器里form表单的默认行为 我们都知道浏览器是存在很多默认行为的,可能是出于常用行为考虑又或者是历史原因.但有时候我们不需要这些默认行为.以下: 1).当form表单里只存在一个inp ...
- 去除inline-block元素间间距的N种方法
这篇文章发布于 2012年04月24日,星期二,22:38,归类于 css相关. 阅读 147771 次, 今日 52 次 by zhangxinxu from http://www.zhangxin ...
- 04 Apache Solr: 目录结构
通过前面的介绍,我们已经能够看到管理员界面并对Solr形成了一个感性的认识.本篇将在物理上深入了解Solr的安装目录结构和Solr示例的主目录结构. 安装目录结构 Solr 6.3.0安 ...