第一次使用博客以及一些入门问题的回答。。
在人生技能道路上,你有没有专长的高超技能获取的成功经验(学习,棋类,球类,乐器,艺术,游戏,......)可以结合一下,特别要和下学期的《面向对象程序设计》课程要结合起来。 你有什么技能比大多人(超过70%以上)更好?
针对这个技能的获取你有什么成功的经验?
答: 关于这个问题 , 我认为自己是比较普通,没什么高超技能也没什么特长可以好讲的,硬是要说些什么的话,从小就对电脑方面比较感兴趣,无论是游戏还是一些技术,都比较擅长点。 游戏的话,要想玩的好:
- 首先就得去了解这个游戏的游戏规则
- 其次是找出通关的条件
- 最后就是靠技术多练,多玩去熟悉游戏。
所以,我认为对于下学期所要学习的课程《面向对象程序设计》我想也是差不多的,学习相比于游戏,学习大纲就差不多是游戏规则,学习目标就是游戏通关的条件,达到目标也就意味着你学会了这门课程,然后就是多练多敲代码,熟悉它。除了游戏,我还会一些mysql渗透之类的技术,不过也只是略懂。这些也都是靠搜索引擎可以找到的,学一门新课程,新知识,难免会有不懂的,所以多看课外资料,多看大神们的代码,也是很有必要的,要知道获取新知识就是螺旋式上升的过程,游戏失败了可以重来,学习也一样,坚持不要放弃很关键。
有关C语言学习的调查
你是怎么学习C语言的?(作业,实验,教材,其他),与你的高超技能相比,C语言的学习有什么经验和教训?
目前为止估算自己写过多少行C代码?理解的情况如何?
答: 学习c语言的话 , 刚开始我是先去看格式, 就是一个代码是长什么样的,就像你小学刚开始写作文,你总得知道自己要写些什么才算一篇作文吧。知道了何为一个有效的代码,接来下就是多练多去做题,题目做的越来越多之后,我就会发觉自己的懂的就越少,能用的算法也寥寥无几,这时候我就去接着看书看资料,数据结构、二叉树、前序遍历、图之类的内容。后面的话,说是在学习C语言更确切的是在学c++ ,因为c 是入门嘛。 跟游戏相比,就好像你通过了第一关,第二关开启,又是一片新地图,新内容。经验之谈,就是多做题目,习惯思想。
代码的话,如果算上以前敲的,五六千行左右吧,中间有段空白期,具体也不清楚。 理解的话,基础知识应该都能掌握了。
学过了C语言,你分的清数组指针,指针数组;函数指针,指针函数这些概念吗?
答: 先看数组指针跟指针数组这组名词, 就举个例子来看吧。 int (*a) [6] 、int *a[6] 前者是数组指针后者是指针数组, 也就是着重点在后两个字上,数组指针也就是指针,这个指针指向的是数组a ,而指针数组呢,就是数组a,用来存放int型的指针。函数指针跟指针函数也是同理,函数指针也就是指向函数的一个指针,声明的方法就是 int (*f)(int a, int b) 这里可以看出函数名是一个指针了,而指针函数是返回值为指针的函数,声明的方法 int* f(int a,int b) 可以很清楚的看到 int跟*连在一起,也就是指针的类型。
学过了C语言,你明白文件和流的区别和联系吗?如何区分文本文件和二进制文件?如何编程操作这两种文件?
答: 这两个名词我也只是听过,具体什么区别联系我也不懂。这里我只能通过网上查找的一些资料总结之后得出。
- 文件是计算机管理数据的基本单位,同时也是应用程序保存和读取数据的一个重要场所。
- 流是字节序列的抽象概念,例如文件、输入/输出设备、内部进程通信管道等。流提供一种向后备存储器写入字节和从后备存储器读取字节的方式。
-
1. 能存储的数据类型不同
文本文件只能存储char型字符变量。
二进制文件可以存储char/int/short/long/float/……各种变量值。
2. 每条数据的长度
文本文件每条数据通常是固定长度的。以ASCII为例,每条数据(每个字符)都是1个字节。
二进制文件每条数据不固定。如short占两个字节,int占四个字节,float占8个字节……
3. 读取的软件不同
文本文件编辑器就可以读写。比如记事本、NotePad++、Vim等。
二进制文件需要特别的解码器。比如bmp文件需要图像查看器,rmvb需要播放器……
4. 操作系统对换行符('\n')的处理不同(不重要)
文本文件,操作系统会对'\n'进行一些隐式变换,因此文本文件直接跨平台使用会出问题。
- 在Windows下,写入'\n'时,操作系统会隐式的将'\n'转换为"\r\n",再写入到文件中;读的时候,会把“\r\n”隐式转化为'\n',再读到变量中。
- 在Linux下,写入'\n'时,操作系统不做隐式变换。
二进制文件,操作系统不会对'\n'进行隐式变换,很多二进制文件(如电影、图片等)可以跨平台使用。
参考资料 有兴趣的自己也可以看看。
学过了C语言,你知道什么叫面向过程程序设计吗?它解决问题的方法是什么?
答:打个比方 ,你做一道菜过程是洗菜,开火,放油,放菜,炒菜.......然后面向过程就是针对这些一个一个过程具体分析,火的温度要多少,洗菜用什么水洗,放油放一勺还是两勺......如此如此的。解决问题的话,就是先分析这个问题有几个步骤,排列取值交换运算?考虑完步骤后用函数吧每一步都实现就ok了。
在C语言里面,什么是模块?你写过多个源文件的程序吗?
答:在C语言里模块和多个源文件我都还没写过,但是学java的时候写过。模块这个具体什么含义,我也讲不清楚,就暂且认为是一个函数,模块编程也就是用一个一个不同功能的函数来实现最终目的的编程。而且多个源文件的程序的话,我在c里面没写过,java里倒是经常写,比如一个team,每个人都写了各自的代码,但是我看你的有个函数写的很好,总不能,我去找你的文件然后复制粘贴吧,当然这也是一种方法,不过如果代码很多很复杂呢,再加上又是别人写的,看都看的一脸懵逼别说找出关键要用的代码了。这时候就可以用include来共享代码,也就是引用别人代码里的函数(一个模块)。(前提要放在一个文件夹下)
学过了C语言,你知道什么是“高内聚,低耦合”吗?这个原则如何应用到高质量程序设计中?
答:这个名词我也不是很懂,还是需要去查阅资料。(之前提到的经验,搜索引擎真的很强大)
- 耦合性:也称块间联系。指软件系统结构中各模块间相互联系紧密程度的一种度量。模块之间联系越紧密,其耦合性就越强,模块的独立性则越差。
- 内聚性:又称块内联系。指模块的功能强度的度量,即一个模块内部各个元素彼此结合的紧密程度的度量。若一个模块内各元素(语名之间、程序段之间)联系的越紧密,则它的内聚性就越高。
由此看来,高内聚、低耦合原则就是让一个程序每个模块的独立性更强。
- 在模块划分时,要遵循“一个模块,一个功能”的原则,尽可能使模块达到功能内聚。(这个是为了做到高内聚)
- 若模块间必须存在耦合,应尽量使用数据耦合,少用控制耦合,慎用或有控制地使用公共耦合,并限制公共耦合的范围,尽量避免内容耦合。(这个是为了做到低耦合)
学过了C语言,你如何把数组A的内容复制到数组B中?如何查找整数数组A中有没有数字5?如何对整数数组A进行排序(从小到大,从大到小)?写出相应的程序。0
答:把数组A的内容复制到数组B中的话,就直接同时进行扫描然后复制。查找数组A中有没有数字5,也同理扫描然后判断数组中的值。排序呢也有很多种方法,冒泡快排选择排序等等,具体看我贴的代码。
#include <iostream> using namespace std; int n; void copy(int a[],int b[]) { int i; for(i=0;i<n;i++) { b[i]=a[i]; } } int search(int a[],int m) { int i; for(i=0;i<n;i++) { if(a[i]==m) { return 1; break; } else if(i==n-1)return 0; } } void sort(int a[]) { int i=1,lastchange,j,temp; while((i<n)) { lastchange=n; for(j=n;j>=i;j--)//从后向前比较 if(a[j]<a[j-1]) { temp=a[j]; a[j]=a[j-1]; a[j-1]=temp; lastchange=j; } i=lastchange; } for(i=1;i<=n;i++) cout<<a[i]<<' '; } int main() { int c,f,h; cout<<"先输入数组的大小:"<<endl; cin>>n; int a[n],b[n]; cout<<"输入数组A"<<endl; for(int i=0;i<n;i++) cin>>a[i]; cout<<"输入你要进行的内容:1->复制 2->查找 3->排序"<<endl; cin>> c; switch(c) { case 1: copy(a,b); cout<<"复制完毕!"<<endl; for(h=0;h<n;h++) cout <<b[h]<<' '; break; case 2: cout<<"输入你要查找的数"<<endl; cin>>f; if(search(a,f)){cout<<"存在"<<f<<endl;break;} else cout<<"不存在!!"<<endl; break; case 3: sort(a);break; default: exit(0); } system("pause"); }
写一个程序,统计自己C语言共写了多少行代码。(这里我就写了一个最简单的程序,功能单一)
#include <iostream> using namespace std; int main() { char c; int count=1; freopen("1.cpp","r",stdin); freopen("1的行数.txt","w",stdout); for(c=getchar();c!=EOF;c=getchar()) if(c=='\n') count ++ ; cout<<count<<endl; }
你知道什么是断点吗?给出自己调试程序的例子。我就给出我上面代码在调试的截图。
对比C语言的学习,你对《面向对象程序设计》的学习有什么具体目标?如何通过刻意训练提高程序设计能力和培养计算思维?如何通过“做中学”实现你的目标?
答:目标的话 就是把新知识学好学精,如何做的话 多说也无益,最主要就是多独立思考,并且坚持不放弃。
毕业后大多数人从事的工作的要求是“提笔能写,开口能说,问策能对,遇事能办”,非常重要的技能是公文写作能力,你觉得自己写作能力如何?要怎么提高?
答:文笔的话,我作为一个理工男,我觉得我写作能力非常差的,高中语文作文最高也就53、52。而且从上面随笔可以看出我也并不擅长写作。提高的话,我会多去看别人写的博客,看一些大神的书籍、论文,去学习他们的写作方式。
(第一次写博客,望指点)