在人生技能道路上,你有没有专长的高超技能获取的成功经验
你有什么技能比大多人(超过70%以上)更好?
针对这个技能的获取你有什么成功的经验?
要说有什么技能比大多数人好的话大概羽毛球算一个,成功的经验就是多练习,我高一的时候打的也不是很好,后来参加羽毛球社团,平常没事就会和同学去体育馆打球,久而久之就打的不错了。
有关C语言学习的调查
你是怎么学习C语言的?(作业,实验,教材,其他),与你的高超技能相比,C语言的学习有什么经验和教训?
学习C语言我是主要通过看书,我在高中有学过Pascal,大致的了解编程语言是什么样的。学习C的过程,对我来说就是学习其语法,诸如if怎么写,while怎么写等,还有其特殊的特性,比如头文件,define等,这些看书大多能够了解。此外还会自己想些问题,打一些代码,通过解决某些问题来提升C语言的知识,比如我曾经想过做一个单词本的小程序,通过做的过程,我也熟悉了C语言的文件操作等知识。
目前为止估算自己写过多少行C代码?理解的情况如何?
大概有上千行了吧。
理解的话,了解了顺序结构,条件结构和循环结构是一切算法的基础。在此之上,是对数值和计算机内存的操作,指针可以直接对内存操作,指针可以说是C的灵魂,这大概也是C可以写出Linux以及驱动程序的原因。
学过了C语言,你分的清数组指针,指针数组;函数指针,指针函数这些概念吗?
数组指针:指向数组第一位数据的指针
指针数组:由指针类型组成的数组
函数指针:指向函数体的内存地址的指针
指针函数:传入数据或传出数据包含指针类型的函数
学过了C语言,你明白文件和流的区别和联系吗?如何区分文本文件和二进制文件?如何编程操作这两种文件?
原先在我看来文件应该是存储在存储器中的01序列,而流则是文件信息从一个地方到另一个地方的过程。
通过百度的力量,得到文件和流的定义如下
>文件是计算机管理数据的基本单位,同时也是应用程序保存和读取数据的一个重要场所。
存储介质:文件是指在各种存储介质上(如硬盘、可移动磁盘、CD等)永久存储的数据的有序集合,它是进行数据读写操作的基本对象。
特性:每个文件都有文件名、文件所在路径、创建时间及访问仅限等属性。
>流是字节序列的抽象概念,例如文件、输入/输出设备、内部进程通信管道等。流提供一种向后备存储器写入字节和从后备存储器读取字节的方式。
存储介质:除了和磁盘文件直接相关的文件流以外,流还有多种类型。流可以分布在网络中、内存中或者是磁带中。
文本文件是通过将二进制码转换成ASCLL码的文件,而二进制文件这是由01组成的文件,这在书上文件操作一章有提到。
如何变成操作两种文件的话,在C的课本中讲是通过r和rb来操作的,rb代表二进制文件的读取。
学过了C语言,你知道什么叫面向过程程序设计吗?它解决问题的方法是什么?
面向过程大概是将求解问题一步步细分成单独的过程,或者称为函数,通过对函数的调用和复用,来达成目的。在编程中,我们面对的是一个个过程,这大概就是面向过程与它的解决问题的方法吧。
在C语言里面,什么是模块?你写过多个源文件的程序吗?
模块我的理解是就是不同的函数,或者说是能够实现某一功能的代码,比如说学生选课系统中,学生登录是一个模块,课程浏览是一个模块,往大了说学生选课系统也是教务处系统的一个模块。
多源文件的程序的话不知道通过 include
调用我自己写的头文件算不算,之前想实现矩阵运算,将运算函数放在了另一个名为 cal.h
的文件中,将文件放在一个文件夹内然后用 #include"cal.h"
来调用。
学过了C语言,你知道什么是“高内聚,低耦合”吗?这个原则如何应用到高质量程序设计中?
高内聚低耦合说实话我是第一次听说,百度上的意思大概是说模块化的过程中,各个模块之间的相识度尽可能低,比如苹果和香蕉还是放一块比较好,至于如何应用到高质量的程序设计中,这是我目前还没有的经验,以后如果有大型的程序的话会考虑的。
学过了C语言,你如何把数组A的内容复制到数组B中?如何查找整数数组A中有没有数字5?如何对整数数组A进行排序(从小到大,从大到小)?写出相应的程序。
- 你如何把数组A的内容复制到数组B中
将数组A的内容直接'='到数组B中呀
for (i=1;i<=lengthOfArrayA;i++){
b[i]=a[i];
}
- 如何查找整数数组A中有没有数字5
在没有特别情况下只能for吧,遇到5就break
bool have5=false;
for(i=1;i<=lengthOfArrayA;i++){
if (a[i]==5) {
have5=true;
break;
}
}
- 如何对整数数组A进行排序(从小到大,从大到小)
在单次排序下,目前基于比较的排序算法最快的应该是快排了吧,还有随机快排这种提高稳定性的东西。由于很久没有写快排了,这里写另一种方法,直接调用qsort函数。
#include<stdio.h>
#include<stdlib.h>
int cmp(const void *a,const void *b){
return(*(int *)a-*(int *)b);
}
int main(){
int n=3;//n是数组长度
int a[3]={1,3,2};
qsort(a,n,sizeof(a[0]),cmp);
printf("%d",a[1]);
}
这里的程序是升序,想要降序的话将函数cmp中的返回值加个负号就可以了。
写一个程序,统计自己C语言共写了多少行代码。(将上述多个程序的Github链接附在随笔上,可以在随笔上附上关键而非全部代码)
我是通过不断读取一个100位的字符串来判断有多少行的,这样做的话如果某一行超过100位的话,就会多出一行,不过我想代码的话一行不会超过100位吧。
Github链接
你知道什么是断点吗?给出自己调试程序的例子。(可以截图贴图说明)
目前为止我都是肉眼debug,现在通过百度学习调试的方法。
通过百度断点可知
程序断点是指由于有特殊事件(中断事件)发生,计算机暂停当前的任务(即程序),转而去执行另外的任务(中断服务程序),然后再返回原先的任务继续执行。
调试的例子
首先添加断点设置变量查看
然后点击调试
点击下一步,就会执行下一条语句,然后可以看到变量变了
对比C语言的学习,你对《面向对象程序设计》的学习有什么具体目标?如何通过刻意训练提高程序设计能力和培养计算思维?如何通过“做中学”实现你的目标?
第一点就是要学会语法,虽然是死记的东西但还是很重要,其次是搞懂为什么,多问为什么或许不能马上提高你的能力,但我觉得会提升知识框架的稳固。比方说我曾经不懂为什么会有那么多的编程语言,后来我依此明白了语法糖,可能一件事用C写要十行,但用另一个语言写只要三行,效率马上就提高了上来,重要的不是工具本身,而是它方不方便。
“做中学”的话,我觉得平常没事给自己一个编程任务就是一个很好的锻炼,比如试着完成矩阵的运算,或者做一个单词本的小程序,总之,生活中有很多可以交给计算机的事情,在完成的过程中遇到的困难,都是提高自己的垫脚石。
毕业后大多数人从事的工作的要求是“提笔能写,开口能说,问策能对,遇事能办”,非常重要的技能是公文写作能力,你觉得自己写作能力如何?要怎么提高?
自己的写作能力的话,我觉得我缺少的是逻辑,平常写文章都是想到哪写哪,往往没有一个层次逻辑,我想这也和没有列提纲的习惯有关,就公文来说,我唯一想到的只有多练一种办法。