2017第一次寒假作业
序
印象里博客都是一些业界大牛写的东西。借由这次作业机会也开始接触博客里的知识、写作方法等。收获了很多有用的东西,博客之路也由这篇随笔开始。
在人生技能道路上,你有没有专长的高超技能获取的成功经验?
阅读参考 北京电子科技学院 娄嘉鹏 老师的博客,关于“做中学”获得高超技能 [http://www.cnblogs.com/rocedu/p/5826362.html](http://www.cnblogs.com/rocedu/p/5826362.html) 、 [http://www.cnblogs.com/rocedu/p/6124349.html](http://www.cnblogs.com/rocedu/p/6124349.html)
你有什么技能比大多人(超过70%以上)更好?针对这个技能的获取你有什么成功的经验?
回想初中高中,学习方面能拿出手的也就是一些学科竞赛了。似乎兴趣广泛,物理化学数学都拿过一些奖项(主要是数学方面)。由于父亲是一名中学数学教师,从小耳濡目染地就对数学产生了兴趣。从经验谈,我认为一个重要的因素就是超前意识。在每个学期前我都会找学长学姐们借书自学,对知识有个大致的概念,再通过这个学期的课加深理解与应用。都学得差不多的时候就找专块的竞赛内容自学。
运动方面我的羽毛球打的还不错,水平高的人不喜欢和水平低的打是常识,场地有限就只能在球场的过道练习,重复无聊的挥拍动作,练习一遍遍单调的步法,厚脸皮地去找高“求虐”。过了一个学期才真正地和高手们打比赛,一遍遍失败一遍遍挑战。这样过了一年才没在高一的学弟学妹面前丢脸。其中的经验我认为就是信念与坚持吧。
关于C语言
你是怎么学习C语言的?(作业,实验,教材,其他),与你的高超技能相比,C语言的学习有什么经验和教训?
最开始接触是在得知自己被福大计算机系录取后几天找学长要了份C语言的书和编译器自学,不过暑假玩心比较重就学了个大概。直到上课了发现老师讲的内容都是熟悉的东西,暑假一些没理解的细节也通过老师讲课给补起来了,学习的兴趣也就随之而来。
当然学习C语言少不了实际操作。每次老师把题目挂上去就急着打完,然后学霸学长给了个C语言题目网址,就去刷起来了。到后来单纯的C语言知识解决不了难题了,学长就推荐了两本书《大话数据结构》、《算法竞赛入门经典》。不过到了后期C语言考完了就在准备其他考试了,书只看了一小部分。对于经验我想重要的就是自学能力与超前意识了。当然在学习过程中也遇到很多问题,曾经有一道题目打了4个多小时,无数次调试也没能解决。但后来把原来的代码全删了,重新理清思路一会儿就解决了。得到的教训是有时死磕不一定就能解决问题,换个方向也许更有用。
目前为止估算自己写过多少行C代码?理解的情况如何?
加上作业和练习估计写了两千多行吧,练习的量还是比较少的。。。原本我觉得对C语言的理解还是可以的,直到我看到了软工的找错题目,原来的自信就消失了,计算机的孩子学的C的内容还是算少的。对于运算符的优先级等内容还没有记清。
学过了C语言,你分的清数组指针,指针数组;函数指针,指针函数这些概念吗?
- 数组指针:即指向数组的指针
- 指针数组:即数组中的元素均为指针
- 函数指针:即指向函数的指针
- 指针函数:为函数,返回值是指针类型
学过了C语言,你明白文件和流的区别和联系吗?如何区分文本文件和二进制文件?如何编程操作这两种文件?
文件(File)和流(Stream)是既有区别又有联系的两个概念。
文件是计算机管理数据的基本单位,同时也是应用程序保存和读取数据的一个重要场所。
特性:每个文件都有文件名、文件所在路径、创建时间及访问仅限等属性。
流是字节序列的抽象概念,例如文件、输入/输出设备、内部进程通信管道等。流提供一种向后备存储器写入字节和从后备存储器读取字节的方式。
存储介质:除了和磁盘文件直接相关的文件流以外,流还有多种类型。流可以分布在网络中、内存中或者是磁带中。
学过了C语言,你知道什么叫面向过程程序设计吗?它解决问题的方法是什么?
“面向过程”是一种以过程为中心的编程思想。 就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了。(来源百度)
在C语言里面,什么是模块?你写过多个源文件的程序吗?
按照功能将一个软件切分成许多部分单独开发,然后再组装起来,每一个部分即为模块
模块是在内核空间运行的程序,实际上是一种目标对象文件。我暂时还没有写过源文件的程序。
学过了C语言,你知道什么是“高内聚,低耦合”吗?这个原则如何应用到高质量程序设计中?
所谓高内聚是指一个软件模块是由相关性很强的代码组成,只负责一项任务,也就是常说的单一责任原则。对于低耦合,粗浅的理解是:一个完整的系统,模块与模块之间,尽可能的使其独立存在。也就是说,让每个模块,尽可能的独立完成某个特定的子功能。模块与模块之间的接口,尽量的少而简单。如果某两个模块间的关系比较复杂的话,最好首先考虑进一步的模块划分。这样有利于修改和组合。现在我暂时还没有接触到模块的内容,今后通过学习再补上。
学过了C语言,你如何把数组A的内容复制到数组B中?如何查找整数数组A中有没有数字5?如何对整数数组A进行排序(从小到大,从大到小)?写出相应的程序。
下面的代码将执行数组复制
for(int i=0;i<strlen(A);i++)
{
A[i]=B[i]
}
下面代码将查找数组中有没有5
for( i=0;i<strlen(A);i++)
{
if(A[i]==5){printf("Yes");break;}
}
if(i=strlen(A))printf("No");
return 0;
下面代码使用冒泡法对整数数组进行排序
for(i = 0; i < n; i++)、\\数组名为num
{
for(j = 0; i + j < n - 1; j++)
{
if(num[j] > num[j + 1])
{
int temp = num[j];
num[j] = num[j + 1];
num[j + 1] = temp;
}
}
}\\此为从小到大排序
for(i = 0; i < n; i++)、\\数组名为num
{
for(j = 0; i + j < n - 1; j++)
{
if(num[j] < num[j + 1])
{
int temp = num[j];
num[j] = num[j + 1];
num[j + 1] = temp;
}
}
}\\此为从大到小排序
写一个程序,统计自己C语言共写了多少行代码。
目前还不懂如何对文件操作。就只能贴进dos的框框里了。。
#include<stdio.h>
int main()
{
char a;
int num = 0;
while ((a = getchar()) != EOF)
{
if (a == '\n')
num++;
else
continue;
}
printf("%d", num);
return 0;
}
你知道什么是断点吗?给出自己调试程序的例子。(可以截图贴图说明)
调试程序时用的,当程序运行了设定断点的行,就会暂停这时可以查看变量的值,接下去可以继续执行,单步执行,跳转什么的.一般用于检查程序有没有错误。自己还没有使用过断点。。。。
对比C语言的学习,你对《面向对象程序设计》的学习有什么具体目标?如何通过刻意训练提高程序设计能力和培养计算思维?如何通过“做中学”实现你的目标?
具体的目标就是能够真正熟练掌握其中的内容并运用到实际吧。对比C语言我觉得单纯掌握理论是不够的,实践是很重要的。毕竟“实践是检验真理的唯一标准”嘛!遇到陌生的东西先自己尝试,做中学的关键我认为其实也是实践。
毕业后大多数人从事的工作的要求是“提笔能写,开口能说,问策能对,遇事能办”,非常重要的技能是公文写作能力,你觉得自己写作能力如何?要怎么提高?
对于高中的议论文倒是经常拿高分,也被老师当过范文。但也只能说明高中的议论文的思想掌握了一部分,其他的写作能力只能说是一般甚至偏下。对于说如何提高,我认为首先要有一定的阅读量,知道该怎么写该怎么写才算好后再通过反复的练笔提高。
总结
第一次写随笔还是不太习惯一些使用方法,日后会改进的。感觉写下来对一些C语言的问题了解得太少太少,现已加入寒假学习豪华大礼包。最后留下一句话来激励自己——越努力,越幸运