C语言I博客作业10
这个作业属于哪个课程 | C语言程序设计I |
---|---|
这个作业要求在哪里 | C语言I-2019秋作业10 |
我在这个课程的目标是 | 熟练使用程序语言并且能够写一个小游戏的程序 |
这个作业在那个具体方面帮助我实现目标 | 能够根据实际情况,选择合适的算法、合理的循环结构,熟练的编写程序。 |
参考文献 | 百度百科 |
一、PTA实验作业
1、
题目 编程打印空心字符菱形
本题目要求读入菱形起始字母和菱形的高度,然后输出空心字符菱形。所谓“空心菱形”是指:每行由两端为字母、中间为空格的字符串构成,每行的字符串中心对齐;上半部分相邻两行字符串长度差2,且字母从给定的起始字母逐一递增;下半部分与上半部分对称。
输入格式:
输入在一行中给出起始字母(范围为英文大写字母A-G)和菱形的高度(为不超过10的奇数)。
输出格式:
输出空心字符菱形。
输入样例:
B 5
输出样例:
B
C C
D D
C C
B
数据处理
数据表达: 获取所需输出菱形的行数。
数据处理: 使用了for
循环以及绝对值函数:abs()
。
伪代码:
- 使用
for
循环,实现循环变量i
在数值上的对称 - 利用
i
的周期变换(先递减,后递增),显式的输出空格 - 并利用
char
类型可使用ASCII改变字符的特点,让输入的character加上周期变换的改变型i
值——'length / 2 - abs(i)',改变字符的值 - 使用
if
语句判断,在菱形的首位不进行运算,再其他的位置继续执行操作 - 输出形似
1 3 5 7 9
规律的空格,可用通项公式2n-1
实现 - 继续输出字符,可沿用之前的办法
代码截图
造测试数据
输入数据 | 输出数据 | 说明 |
---|---|---|
B 5 | 如图所示 | 无 |
PTA提交列表及说明
在其他的编译软件上试过许多次了,然后运行成功后在Pta上面提交,一次就过了。
出现的错误:
由于大量的利用循环变量i
的周期性特点,故而在数值,ASCII值的计算,空格的数量上出现了一些问题。但是都无伤大雅,经过调试即可改正。
2、
题目 输出三角形字符阵列
本题要求编写程序,输出n行由大写字母A开始构成的三角形字符阵列。
输入格式:
输入在一行中给出一个正整数n(1≤n<7)。
输出格式:
输出n行由大写字母A开始构成的三角形字符阵列。格式见输出样例,其中每个字母后面都有一个空格。
输入样例:
4
输出样例:
A B C D
E F G
H I
J
数据处理
数据表达: 直角三角形的简单输出
数据处理: 利用ASCII值的加减,改变输出的字符
伪代码:
- 使用双
for
循环,达到直角三角形的输出格式 - 默认输出的第一个字符为
A
- 定义一个ASCII值的加和变量,每输出一个字符,加和变量+1,以此来实现下次输出字符的改变
代码截图
造测试数据
输入数据 | 输出数据 | 说明 |
---|---|---|
4 | 如图所示 | 无 |
PTA提交列表及说明
出现的错误:部分正确
因为没有注意到自己大括号的范围,所以出现了上图所示的错误。经过仔细检查之后,更正错误再提交,答案正确。
二、代码互评
同学代码
我的代码
- 使用了大量本可以抛弃的变量,如一下代码:
i1 = i;
while (i1)
{
i1 /= 10;
a++;
}
……
a = 0;
完全没必要每次清零重新判断位数,只需在递增之后a*=10
操作即可,并且a
、b
的所处理的对象是一致的,这也是前文"使用了大量本可以抛弃的变量"的体现
- 另外也可以不使用函数返回
i * j
的值,这实在是没有必要,函数是用来解决重复复杂操作,使主函数简介的工具。在如此前提下,简洁的代码更为出色 - 最后还有命名方面的问题,作为一名已经学*了将*两个月的程序员,应该有合适的变量名,之前听大佬说过:“优秀的命名规范也是程序员能力的体现”。我深以为然,也慢慢在学*,具体可以参考《代码整洁之道》
3.学*总结
3.1学*进度条
周/日期 | 周所花的时间 | 代码行 | 学到的知识点简介 | 目前比较迷惑的问题 |
---|---|---|---|---|
第3周/10月6~16 | 3天 | 181行 | if-else语句,递归,分段函数的计算 | 对这些还不是很熟练,对这些符号的使用跟空格的使用不是很清楚 |
第4周/10月10~17 | 2天 | 181行 | for循环语句与逻辑符 | 循环语句使用不够熟练,数学循环问题也有很多不明白的事情,不知道先后 |
第5周/10月18~24 | 10h | 148行 | 基本程序语言与生成乘方表与阶乘表 | 基本程序语言了解的都差不多了,有些不是特别熟练还是需要加强练*的,生成乘方表跟阶乘表这方面的内容还有很多不懂的,觉得完成作业很费力气,要查阅各种资料,可能跟我数学理解能力不强也有关系吧。 |
第6周/10月25~31 | 22h | 371行 | 多分支结构、字符型数据类型和逻辑运算符。顺便研究了几个心形的代码,觉得挺有趣。 | 就是有时候总是会丢三落四,然后也比较迷惑一些运算符使用方法,分之这一块还是不够熟练。 |
第7周/11月1~7 | 25h | 211行 | 熟悉多分支结构switch语句的使用、字符型数据类型和逻辑运算符。 | 迷惑的真的太多太多了,但是百度大法真不错,虽然没有白嫖别人的答案解释香,但是还是很有用,一学就让我停不下来的那种。对数学研究的还是不够好,所以做很多题目转不过弯来,要努力克服。 |
第8周/11月8~14 | 22h | 241行 | 熟悉使用while和do-while结构解决问题。 | 上课听的不太明白,课后也有查找资料,但是还是有很多不懂的,然后最*在做学*总结,想把自己不懂的都整理出来然后弄懂。 |
第9周/11月15~21 | 26h | 500行 | 熟悉break、continue的使用,熟悉使用循环的嵌套解决问题 | 想知道为什么会出现运行时错误 |
第10周/11月22~28 | 33h | 533行 | 能够根据实际情况,选择合适的算法、合理的循环结构,熟练的编写程序。 | 感谢每一个帮我解答问题的人,也很感谢听我抱怨的人,如果没有你们我估计都不能坚持这么久。 |
3.2累计代码行和博客字数
3.3学*内容总结和感悟
3.3.1 学*内容总结
3.3.2 学*体会
1,从最开始做题无从下手到现在能误打误撞写对几个题目了,这个过程的确是挺难的但是也真的是快乐的。
2,希望自己以后多几分耐心吧,不要再毛毛躁躁的了,细心一点有耐心一点。有疑问的时候虚心请教,比如问朋友问老师问同学。
3,感觉自己的自学能力还是太弱了,然后对许多知识点的掌握也不够深,感觉自己菜炸了。
4,突然发现自己身边挺多人对自己挺好的,会耐心回答我的疑问,会认真评论我的作业,希望在未来的道路上他们能够一直都在,然后一起进步。也希望自己不要辜负这么多人的期望,加油。