这个作业属于哪个课程 | C语言程序设计 |
---|---|
这个作业要求在哪里 | C语言I作业10:第十四周作业 |
我在这个课程的目标是 | 学会使用C语言 |
这个作业在哪个具体方面帮助我实现目标 | 很难的pta可以锻炼我的解题能力 |
参考文献 | C语言程序设计(第三版);百度 |
1.PTA实验作业
1.1 编程打印空心字符菱形
本题目要求读入菱形起始字母和菱形的高度,然后输出空心字符菱形。所谓“空心菱形”是指:每行由两端为字母、中间为空格的字符串构成,每行的字符串中心对齐;上半部分相邻两行字符串长度差2,且字母从给定的起始字母逐一递增;下半部分与上半部分对称。
输入格式:
输入在一行中给出起始字母(范围为英文大写字母A-G)和菱形的高度(为不超过10的奇数)。
输出格式:
输出空心字符菱形。
输入样例:
B 5
输出样例:
1.1.1数据处理
数据表达:定义了五个整型变量和一个字符型变量,其中i、j是控制循环变量,high是指菱形的高度,half是指一半菱形的高度。
数据结构:
结构式:一共用了六个for循环和两个if语句,其中分为两个for循环里分别嵌套两个for循环和一个if语句。
伪代码:
开始 ;
定义变量:控制循环变量i、j,菱形的高度high,半个菱形的高度half,字符型op;
接收字符和菱形的高度;
把(high+1)/2赋值→half;
for循环{
for循环输出空格;
输出字符
判断i==0
yes→op++;
for循环输出空格;
输出字符;
输出换行;
}
字符减2;
for循环{
循环输出空格;
a++;
输出字符;
for循环输出空格;
判断i==1;
yes→输出换行;
跳出;
输出字符;
}
结束 ;
1.1.2实验代码截图
1.1.3 造测试数据
输入数据 | 输出数据 | 说明 |
---|---|---|
B 5 | 高度为5从字母B开始的菱形 | |
a 5 | 高度为5从字母a开始的菱形 | |
Q 6 | 高度为6从字母Q开始的菱形 |
1.1.4 PTA提交列表及说明
提交列表说明:
在Devc++上反复运行检查更改,因此在pta上无错误。
1.2 输出三角形字符阵列
本题要求编写程序,输出n行由大写字母A开始构成的三角形字符阵列。
输入格式:
输入在一行中给出一个正整数n(1≤n<7)。
输出格式:
输出n行由大写字母A开始构成的三角形字符阵列。格式见输出样例,其中每个字母后面都有一个空格。
输入样例:
4
输出样例:
A B C D
E F G
H I
J
1.2.1数据处理
数据表达:定义了三个整型变量和一个字符变量且给它赋初始值为'A';j、i代表控制循环变量;N代表输入的正整数。
数据结构:
结构式:在if语句内使用一个for循环语句的嵌套。
伪代码:
开始 ;
定义变量;
输入N;
判断N的取值范围;
for循环输出第一行{
接着for循环输出下一行
}
输出空格;
使N-1;
结束 ;
1.2.2实验代码截图
1.2.3 造测试数据
输入数据 | 输出数据 |
---|---|
4 | |
3 | |
2 |
1.2.4 PTA提交列表及说明
提交列表说明:
格式错误:输出的字符后面没有空格。
1.3 同构数
一个数恰好出现在它的平方数的右端,这个数就称为同构数。找出1~1000之间的全部同构数。
输入格式:
一个数恰好出现在它的平方数的右端,这个数就称为同构数。找出1~1000之间的全部同构数。
输出格式:
1 5 6 25 76 376 625
1.3.1数据处理
数据表达:定义了两个整型变量,b代表一个数,a是控制循环变量同时是b的因子,若满足同构数的条件则使用printf函数输出。
数据结构:
结构式:使用了for循环和省略else的if语句的嵌套。
伪代码:
开始;
定义变量;
for循环(输入数);
给b赋值→b=a*a;
判断是否为同构数;
输出六位;
结束;
1.3.2实验代码截图
1.1.4 PTA提交列表及说明
提交列表说明:
①刚开始,没有搞清楚a和b的之间潜在的关系,导致for循环的三个表达式和循环体里的数据乱套。
②该题的输出结果不需要左对齐
2.代码互评
同学代码截图
自己代码截图
代码比较
从整体上看,该同学的代码和我的有很大的不同,首先他没有控制N的取值范围,只用了一个for循环,而我使用的是for循环的嵌套
从内容上看,我们的代码使用的不同方法,但目的都相同,但是我的比较简单清晰。
同学代码截图
自己代码截图
代码比较
从整体结构上看,我们之间的差异不大,但从细节上看,还是有很多的不同。充分体现了一个题目有很多种路径能走到终点。
3.学习总结
3.1 学习进度条
周/日期 | 这周所花的时间 | 代码行 | 博客字数 | 学到的知识点简介 | 目前比较迷惑的问题 |
---|---|---|---|---|---|
8周/10/14-20 | 5h | 100行 | 918字 | for循环结构 | 不能够熟练for语句 |
9周/10/20-27 | 7h | 120行 | 1194字 | 自定义函数 | 对定义和调用函数知识点上还是很模糊 |
10周/10/28-3 | 8h | 380行 | 1290字 | char字符型 | 有些代码所用的格式 |
11周/11/4-10 | 8h | 150行 | 1309字 | switch语句 | 怎么寻找到解题的正确思路 |
12周/11/11-17 | 6h | 160行 | 1100字 | do-while语句和其他循环语句 | 怎么综合运用已学内容 |
13周/11/18-24 | 16h | 260行 | 2453字 | break、continue的用法以及它们之间的关系 | 使用很多个for循环和if语句时容易混乱 |
14周/11/25-01 | 8h | 240行 | 1831字 | 用for循环解题的思路 | 不会用自定义函数 |
3.2 累积代码行和博客字数
3.3 学习内容总结和感悟
3.3.1 学习内容总结
3.3.2 学习体会
马上就要考试了,表示超级超级方,自己能够不靠百度不靠求助助教独立写出来的题很少很少很少很少。所以最近也是重点锻炼自己完全独立写出编程题的能力。至于选择填空题,也是需要大量练习,书上习题有很多。不知不觉,大一上学期马上收尾,目前已经接触到软件工程近三个月,可以说是从一无所知进阶到入门小白。曾经一度骂过自己怎么脑抽非要选择软件,也有过为自己迎难而上而感到自豪。开弓莫得回头箭,我不追求能把这门课学的多么厉害,但最起码不要辜负自己。目标的实现建立在我想成功的强烈愿望上。现在还有很多问题需要去解决,比如三个循环语句的灵活变通、switch语句和自定义函数的使用。还有一个问题,在调试的时候,断点一般应该选择在哪里呢?