2017《面向对象程序设计》寒假作业一

1.在人生技能道路上,你有没有专长的高超技能获取的成功经验(学习,棋类,球类,乐器,艺术,游戏,......)可以结合一下,特别要和下学期的《面向对象程序设计》课程要结合起来。
(阅读参考 北京电子科技学院 娄嘉鹏 老师的博客,关于“做中学”获得高超技能
http://www.cnblogs.com/rocedu/p/5826362.htmlhttp://www.cnblogs.com/rocedu/p/6124349.html
你有什么技能比大多人(超过70%以上)更好?
针对这个技能的获取你有什么成功的经验?

我玩篮球,但如过说是篮球技能超过70%的人,可能有些牵强。玩篮球是高中才接触的,当时就是被同学带去玩的,起初只会投篮而且投的不是很准,慢慢的通过打队掌握了一些篮球技巧,比如变相,三步篮等。之后经常打队把这些基础的动作练得很熟练之后,就会和同学一起挑战一些比较有难度的动作,慢慢的自身的篮球素质就得到了提高。所以我认为把篮球玩好的原因就在于你要多与他人切磋篮球技能,与他人交流,然后通过自己的磨练,慢慢的就会有所提升,久而久之就能达到一个比较好的状态。所以从这,我觉得学习也是和打篮球是差不多的一回事吧。

2.你是怎么学习C语言的?(作业,实验,教材,其他),与你的高超技能相比,C语言的学习什么经验和教训?

我会经常的看书,把书上的知识理解透了然后再去打代码,在打代码的过程中发现有一些自己不会的地方,然后在把书看一下,把这块不会的认真的研究一下。但由于打代码打的过少,所以并没有很好的掌握C。在一些比较复杂的问题上,我要花很多的时间去打代码,过程十分辛苦,我不懂其他人是如何学习C的,总之我觉得是掌握了c的基础知识,但不能很好的应用。与打篮球相比较的话,就是打代码打的太少,没有花比较多的时间在C上,这是这个学期比较遗憾的事。所以以后我要注重打代码的数量,打的量多了,自然而然就能掌握C了。也想通过寒假把C重新的学一遍,不然后面会落下很多的。

3.目为止估算自己写过多少行C代码?理解的情况如何?

大概打了一两千行左右吧。我对自己打出的每一个代码理解都挺透彻的,多半是题目简单的原因吧。难题就很少打出来,不过打出来的都会理解。

4.学过了C语言,你分的清数组指针,指针数组;函数指针,指针函数这些概念吗?

数组指针:int (*p)[10],p为指向含有十个整型元素的一维数组。
指针数组:int p[10]为含有十个指向整型元素的指针的数组。
函数指针:int (
p)(int,int),p为指向含有两个整型形参,返回值类型为整型的函数指针。
指针函数:int *p(int,int)为指向含有两个整型形参,返回值类型为指向整型元素的指针的指针函数。

学过了C语言,你明白文件和流的区别和联系吗?如何区分文本文件和二进制文件?如何编程操作这两种文件?

  • 文件是计算机管理数据的基本单位,同时也是应用程序保存和读取数据的一个重要场所。
    存储介质:文件是指在各种存储介质上(如硬盘、可移动磁盘、CD等)永久存储的数据的有序集合,它是进行数据读写操作的基本对象。
    特性:每个文件都有文件名、文件所在路径、创建时间及访问仅限等属性。
  • 流是字节序列的抽象概念,例如文件、输入/输出设备、内部进程通信管道等。 流提供一种向后备存储器写入字节和从后备存储器读取字节的方式。
    存储介质:除了和磁盘文件直接相关的文件流以外,流还有多种类型。流可以分布在网络中、内存中或者是磁带中。
  • 大家都知道计算机的存储在物理上是二进制的,所以文本文件与二进制文件的区别并不是物理上的,而是逻辑上的。这两者只是在编码层次上有差异。简单来说,文本文件是基于字符编码的文件,常见的编码有ASCII编码,UNICODE编码等等。二进制文件是基于值编码的文件,你可以根据具体应用,指定某个值是什么意思(这样一个过程,可以看作是自定义编码。从上面可以看出文本文件基本上是定长编码的(也有非定长的编码如UTF-8)。而二进制文件可看成是变长编码的,因为是值编码嘛,多少个比特代表一个值,完全由你决定。大家可能对BMP文件比较熟悉,就拿它举例子吧,其头部是较为固定长度的文件头信息,前2字节用来记录文件为BMP格式,接下来的8个字节用来记录文件长度,再接下来的4字节用来记录bmp文件头的长度。以读文件为例,实际上是磁盘 》》 文件缓冲区》》应用程序内存空间 这两个转化过程。我们说“文本文件和二进制文件没有区别”,实际上针对的是第一个过程;既然没有区别,那么打开方式不同,为何显示内容就不同呢?这个区别实际上是第二个过程造成的。文件实际上包括两部分,控制信息和内容信息。纯文本文件仅仅是没有控制格式信息罢了;实际上也是一种特殊的二进制文件。所以,我们很难区分二者的不同,因为他们的概念上不是完全互斥的。我们说文本文件是特殊的二进制文件,是因为文本文件实际上的解释格式已经确定了:ASCII或者unicode编码。文本文件的一个缺点是,它的熵往往较低,也就是说,其实本可以用更小的存储空间记录这些信息。比如,文本文件中的一个数字65536,需要用5个字节来存储;但是用二进制格式,采用int存储,仅仅需要2个字节。而二进制文件elf和bmp等,都往往有一个head,告诉你文件信息和解释方式。
  • 以上是我通过上网查到的并筛选出我自己认为的不错的解答,讲的非常详细,认真阅读后,就能够明白了。

学过了C语言,你知道什么叫面向过程程序设计吗?它解决问题的方法是什么?
做每一件事情它都需要一定的步骤,根据这写步骤一步一步的完成事情,就是面向过程程序设计。

在C语言里面,什么是模块?你写过多个源文件的程序吗?
我个人认为模块和源文件并没有太大的差别。如果一个程序比较简单,那么源代码就可以完全放在一个文件里。如果程序比较复杂并且有许多的功能,则需要进行模块化程序设计,即可以将不同的功能的源代码放在不同的源文件中,那么这些源文件称作模块。在学c时没有写过多个源文件的程序,就只有一个。

学过了C语言,你知道什么是“高内聚,低耦合”吗?这个原则如何应用到高质量程序设计中?

  • 内聚:内聚讲的一个模块内代码之间的联系程度,联系程度越高,就称为高内聚。所谓高内聚是指一个件模块是由相关性很强的代码组成,只负责一项任务,也就是常说的单一责任原则。
  • 耦合:耦合讲的时模块之间的联系,模块之间联系程度低,就称作低耦合。一个完整的系统,模块与模块之间,尽可能的使其独立存在。也就是说,让每个模块,尽可能的独立完成某个特定的子功能。

学过了C语言,你如何把数组A的内容复制到数组B中?如何查找整数数组A中有没有数字5?如何对整数数组A进行排序(从小到大,从大到小)?写出相应的程序。

  • 以整型数组为例,以下是代码的关键步骤。
for(i=0;i<n;i++)
     B[i]=A[i];
for(i=0;i<n;i++)
{
    if(A[i]==5) {printf("yes"); break;}
    if(i==n-1) printf("no");
}

写一个程序,统计自己C语言共写了多少行代码

  • 不懂是怎么运行的,就贴个网上的代码吧。
#include<stdio.h>
int main() {
  int ch,lines;
FILE *fp;
char filename[FILENAME_MAX];
printf("输入文件名:");
while(scanf("%s",filename) == 1) {
fp = fopen(filename,"rt");
if(fp == NULL) {
printf("无法打开数据文件:%s\n",filename);
printf("输入文件名(or <Ctrl + Z>):");
continue;
}
lines = 0;
while((ch =fgetc(fp)) != EOF) {
if(ch == '\n') ++lines;
}
fclose(fp);
printf("%s : %d\n",filename,lines);
printf("输入文件名(or <Ctrl + Z>):");
}
return 0;
}

你知道什么是断点吗?给出自己调试程序的例子。(可以截图贴图说明)
你在某行代码处设置断点后,调试程序时,程序运行到该行代码时会自动停止。然后你就可以在这进行逐步调试了。设置断点的目的就是调试程序,检查有无错误,快速找到错误的地方。

对比C语言的学习,你对《面向对象程序设计》的学习有什么具体目标?如何通过刻意训练提高程序设计能力和培养计算思维?如何通过“做中学”实现你的目标?
因为我对C语言的掌握并不是很好,所以对于c++,我打算花较多的时间来将它学好,在学习完c++后,我能够用C++来解决许多的问题,能够运用自如,这就是我的目标。我觉得应当多打些代码,通过实践来提升程序设计能力,多看些有关的书籍来提高计算思维,具体的做法,还需要通过实践后再进行补充。

毕业后大多数人从事的工作的要求是“提笔能写,开口能说,问策能对,遇事能办”,非常重要的技能是公文写作能力,你觉得自己写作能力如何?要怎么提高?
我自己目前的写作能力是相当的差,写不出什么好文章。我觉得还是多看看些文章吧,先提升下自己对文字的感觉,然后自己再尝试的去写些文章,慢慢的应该会有所提升,这是第一阶段要做的事。第二阶段,我应当交几个和我有着共同爱好朋友,大家可以聚在一起讨论讨论,能够知道别人是怎么写文章的,这对自己也会有所提升的。能把前两样先做好,我就知足了。

posted on 2017-01-19 02:07  哈哈kt  阅读(167)  评论(2编辑  收藏  举报

导航