作业要求:https://edu.cnblogs.com/campus/hljkj/CS201801/homework/2523
预习作业截图及感受:
上课前,老师让我们观看数组的MOOC视频,事实证明非常有效,通过观看视频达到了对新课程的预先效果,并且产生了对新课程的兴趣。虽然观看视频后产生了许多疑问,但随着老师上课的讲解,疑问也被逐一解决。如图,我共计观看了第六第七周的七个视频,通过观看视频我学到了数组的基本概念和数组如何操作等知识点,并且学到了如排序的数组编程题。产生的疑问是数组到底如何存储数据以及数组的定义中中括号前面那个字母到底是什么意思,对于二维数组也没有掌握牢靠。
PTA作业:
第十三次作业
7-1 输出数组元素
本题要求编写程序,对顺序读入的n个整数,顺次计算后项减前项之差,并按每行三个元素的格式输出结果。
代码:
#include<stdio.h> int main() { int n,i,jian,flag=0; scanf("%d",&n); int a[n]; scanf("%d", &a[0]); for(i=1;i<n;i++) { scanf("%d", &a[i]); jian = a[i] - a[i-1]; flag++; if(flag%3==0||flag==n-1){printf("%d", jian);} else{printf("%d ", jian);} if(flag%3==0){printf("\n");} } return 0; }
解题思路:
1)定义一个标识变量flag,定义一个循环变量i,定义一个可输入的数组容量值n,最后定义一个结果变量jian;
2)输入n的值,然后定义一个数组a[n],由于需要后一项减去前一项,所以先输入a[0]的值;
3)建立一个for循环,让i由1开始循环,每次循环输入一个a[i]的值,并计算后一项减去前一项的值,保存到jian;
4)由于输出时需要每行三个且行末不能留有空格,所以让每次相减后flag的值加一,当flag的值是三或三的倍数时,输出一个换行,并且当flag的值是三或三的倍数且为最大值时,不输出空格。
流程图:
运行结果:
调试之旅:
本周总结:
这一周是我们学习数组的第一周,也是我们第一次开始接触数组作业。幸运的是,我们已经提前完成了预先工作,所以很多的问题也都迎刃而解,虽然还有一些小疑问,但我有理由相信通过接下来的学习,我们可以解决所有的问题。
第十五次作业
7-3 冒泡法排序
本题要求对任意给定的K(<N),输出扫描完第K遍后的中间结果数列。
代码:
#include<stdio.h> int main() { int n,k,i,j,temp; scanf("%d %d",&n,&k); int a[n]; for(i=0;i<n;i++) { scanf("%d",&a[i]); } for(i=0;i<k;i++) { for(j=0;j<n-1-i;j++) { if(a[j]>a[j+1]) { temp = a[j]; a[j] = a[j+1]; a[j+1] = temp; } } } printf("%d",a[0]); for(i=1;i<n;i++) { printf(" %d",a[i]); } return 0; }
解题思路:
1)定义两个循环变量i和j,定义一个可输入数组容量n,定义一个可输入判断值k,最后定义一个中间变量temp;
2)输入n的值并定义一个数组a[n];
3)建立一个for循环,让i从0开始循环到n-1并逐层输入a[i]的值;
4)再建立一个for循环并镶嵌一个for循环,外层的控制排序次数,内层的实现排序;
5)如果前一项数组里数字的值大于后一项的,就通过temp实现数值交换,最后输出交换后的结果。
流程图:
运行结果:
调试之旅:
本周总结:
这一周既是我们学习数组的最后一周,数组的大部分问题都已经被解决了,仅存的几道难题也被逐一攻略。同时这也是我们大一上学期学习C语言的最后一周,虽然学习途中有很多坎坷,但我们都成功的克服了,也在这里向老师说声感谢,谢谢您不厌其烦的教导我们,我们这一学期给您添了不少麻烦,还望海涵。虽然下学期您就不带我们了,但终有一天我们会再次相逢,我们会再接再厉,努力学习好C语言,不让老师失望。
学习进度条
表格:
折线图:
点评
张春宇:https://www.cnblogs.com/zcybky/p/10152047.html