一、本周教学内容&目标
第4章 循环结构 4.5 综合介绍循环结构的程序设计,涉及到多个典型算法。要求学生能够根据实际情况,选择合适的算法、合理的循环结构,熟练的编写程序。
二、本周作业头
题目 | 答案 |
---|---|
这个作业属于那个课程 | C语言程序设计II |
这个作业要求在哪里 | http://edu.cnblogs.com/campus/zswxy/CST2019-2/homework/10096 |
我在这个课程的目标是 | 能够熟练c语言,能够使用开发软件 |
这个作业在那个具体方面帮助我实现目标 | 每次作业的错误都能是我学到很多新的知识盲点 |
参考文献 | 百度、《c语言程序设计》 |
三、本周作业
- 1.PTA实验作业
- 2.代码互评
- 3.学习总结
四、作业格式
1.PTA实验作业(20分/题)
从PTA题目集中选出2个你最满意的题目完成以下内容,选择题目难度越大,分值越高,每题20分(每项5分),内容要求如下
输出三角形字符阵列
题目内容描述:
本题要求编写程序,输出n行由大写字母A开始构成的三角形字符阵列。
输入格式:
输入在一行中给出一个正整数n(1≤n<7)。
输出格式:
输出n行由大写字母A开始构成的三角形字符阵列。格式见输出样例,其中每个字母后面都有一个空格。
输入样例:
4
输出样例:
A B C D
E F G
H I
J
1.1.1数据处理
数据表达:定义了字符a,整型i,j,n;其中i,j用来控制循环,n用来接受输入的整数 。
数据处理:运用了两个for循环,第一个for用于输出高度,第二个for用来输出宽度,每次输出a之后都使a自增。使输出的字母是连续的。
伪代码:
#include<stdio.h>
int main()
{
定义字符a的值为字符A
定义3个整型变量i,j,n; //i,j用来控制循环,n用来接受输入的整数
输入一个整数n;
for(把n的值赋给i,循环n次,i每循环一次自减) // 用作输出的高度
{
for(循环i次){
输出字符a;
a自增;
}
换行;
}
return 0;
}
1.1.2实验代码截图
1.1.3 造测试数据
输入数据 | 输出数据 | 说明 |
---|---|---|
3 | A B C D E F |
输出3行。 |
4 | A B C D E F G H I J |
输出4行。 |
1.1.4 PTA提交列表及说明:
- 格式错误:字母之间没有空格。
- 解决方法:第九行输出加了空格。
梅森数
题目内容描述:
输入样例:
6
输出样例:
3
7
31
1.2.1 数据处理
数据表达:定义两个整型变量n,i; 其中i用来控制循环,n用来接受输入的整数 。
数据处理:利用了for循环嵌套switch。
伪代码:
#include<stdio.h>
int main(void)
{
定义两个整型变量n,i;
输入一个整数赋值给n;
for(i的初始值为1;循环n次;i自增){
switch(i){
case 2:输出3 break;
case 3: 输出7 并换行; break;
case 5: 输出31 并换行; break;
case 7: 输出127 并换行; break;
case 13: 输出8191 并换行; break;
case 17: 输出131071 并换行; break;
case 19: 输出524287 并换行; break;
}
}
if(n小于2)
输出None;
return 0;
}
1.2.2 实验代码截图
1.2.3 造测试数据
输入数据 | 输出数据 | 说明 |
---|---|---|
1 | None | 无梅森数时 |
10 | 3 7 31 127 |
随机数 |
20 | 3 7 31 127 8191 131071 524287 |
最大(20)时 |
1.2.4 PTA提交列表及说明
- 部分正确:由于没有弄清楚什么是梅森数,以为是2的指数是素数,2的n次方减1就是梅森数,所以输出错误。
- 解决方法:我直接查到了题目范围内符合条件的梅森数,然后改用for嵌套switch。
2.代码互评
找2份同学代码,和自己代码比较,建议互评代码尽量找代码风格差异较大。
同学1 | 同学2 | 我的代码 |
---|---|---|
![]() |
![]() |
![]() |
区别:同学1是一个标准的方法,找到梅森数的格式,再判断它是不是素数。同学2多用了一个num变量,判断条件也不一样,但是原理基本相同。而我的就和他们的区别很大。因为题目条件有范围,所以直接把范围内的梅森数都算出来,再switch输出。由于要从小到大输出所以我还用了switch。
他们都用了这个方法判断素数。判断m是否是素数,只需被 2 ~ √m 之间的每一个整数去除就可以了。如果 m 不能被 2 ~√m 间任一整数整除,m 必定是素数。例如判别 17 是是否为素数,只需使 17 被 2~4 之间的每一个整数去除,由于都不能整除,可以判定 17 是素数。
原因:因为如果 m 能被 2 ~ m-1 之间任一整数整除,其二个因子必定有一个小于或等于m,另一个大于或等于 m。例如 16 能被 2、4、8 整除,16=28,2 小于 4,8 大于 4,16=44,4=√16,因此只需判定在 2~4 之间有无因子即可。
3.学习总结(15分)
3.1 学习进度条(5分)
周 /日期 | 这周所花的时间 | 代码行 | 学到的知识点简介 | 目前比较迷惑的问题 |
---|---|---|---|---|
第一周 | 3小时 | 60 | 学会输出字符 | 无 |
第二周 | 10小时 | 186 | 学到变量名称、运算、把变量的结果输出 | 无 |
第三周 | 7.5小时 | 245 | 学会if条件判断 | 无 |
第四周 | 5小时 | 120 | 学会使用for循环 | 无 |
第五周 | 6小时 | 80 | 学会定义函数,do while 等循环 | 一些复杂的函数看到不知道怎么定义,不了解一些新定义,比如const |
第六周 | 7小时 | 140 | 数组的定义,break的用法 | 对于一些题目不知道到底用什么方法去解决 |
第七周 | 8.5小时 | 254 | switch语句不加break;的用法。 | 无 |
第八周 | 10小时 | 360 | 字符串的使用 | 不会用字符串解决实际问题 |
第九周 | 8小时 | 400 | 利用循环嵌套来解决问题 | 有很多问题不知道如何下手,思路不是很清晰。 |
第十周 | 12小时 | 400 | 复杂的循环嵌套和字符的使用。 | 不会写伪代码 |
3.2 累积代码行和博客字数(5分)
时间 | 博客字数 | 代码行数 |
---|---|---|
第一周 | 183 | 60 |
第二周 | 1774 | 186 |
第三周 | 2149 | 245 |
第四周 | 1585 | 120 |
第五周 | 1645 | 80 |
第六周 | 2139 | 140 |
第七周 | 1979 | 254 |
第八周 | 2010 | 360 |
第九周 | 1856 | 400 |
第十周 | 2014 | 400 |
3.3 学习内容总结和感悟(5分)
3.3.1 学习内容总结
请用思维导图的形式将到目前为止所学的内容进行整理。
3.3.2 学习体会
这次作业我都是自己琢磨出来的,在无数次的错误中,我尝试过很多方法。我发现有些题目可以更简化,比如梅森数,可以直接把范围内的梅森数都算出来,再输出。这种方法刚好符合上次老师说的,既容易又处理速度快。但是要是按标准方法又是一道烧脑题。在做PTA第一题的时候,我做着做着真的比较迷茫,我只是按照运行结果来判断的,之前我发现结果和题目一样时我就得没错误了,但是还是答案错误,认真的检查后,我发现我都输出了一个空格,当自己答案正确的时候,我真的自己也不知道怎么回事。我觉得我还需要多做题目。
五、评价标准
C语言作业评价标准
本次作业特别注意:
- 1.提交列表没内容,或者太简单,每题得分0分。注意选择提交列表长的题目介绍。
- 2.代码格式不规范,0分。
- 3.代码互评,内容简单,0分。
- 4.学习内容总结无思维导图,0分。
- 5.完成挑战题的同学,加20分。