写在前面的话
这是第一次开博客、写博客。无论事情的起因是什么样的,只希望自己所发出的动作都能给自己带来一定的收获而不是只是为了应付差事而匆匆完事。这第一篇随笔是写关于自己的成长经验和程序设计课程的结合,并由此收获的感想,也是自己在一学期里对学习程序设计这门基础课程的总结和领悟。
在人生技能道路上,你有没有专长的高超技能获取的成功经验(学习,棋类,球类,乐器,艺术,游戏,......)可以结合一下,特别要和下学期的《面向对象程序设计》课程要结合起来。
你有什么技能比大多人(超过70%以上)更好?针对这个技能的获取你有什么成功的经验?
谈及是否有专长的高超技能,感到十分的惭愧。从小到大虽然对许多事物都感兴趣,但是绝大多数的都是略知一二,为数不多的真正感兴趣的,最终也都应为种种原因没能坚持下来,所以至今都没有真正能拿得出手的专长。但是经历过,尝试过这么多的不同的实物,反而能能总结出很多的道理。有一些事物很复杂的,想要完成并不容易,当你面对它的时候,个体对它的第一印象就会产生畏惧之感,想要逃避。但是当你真正的下定决心直面它的时候,你就会真切的感受到一切都是有步骤去执行的,渐渐熟悉之后也就发现这一切都是有必然的联系的。从陌生到接触再到渐渐熟悉,这就是一个不断学习的过程,而你是否能够完成这一过程从很大程度上取决于是否有决心敢于去面对。刚刚学习C语言的时候感到很吃力。零基础,对课本上的讲解也不是很明白,所以刚开始的一段时间有些排斥。但是老师布置了作业要去完成,所以又不得不硬着头皮去接触它,理解它,熟悉它。遇到问题时好在有同学的帮助,渐渐的发现C语言也并不是不可捉摸的,它也有自己的规则和逻辑,明白了之后就会发现也不是很难。因此,我认为下学期的课程应该也是如此。所以,接触新事物之前克服恐惧是很重要的,不懂得要去尝试,要去请教。干着急不动手是不能够解决问题的。
你是怎么学习C语言的?(作业,实验,教材,其他),与你的高超技能相比,C语言的学习有什么经验和教训?
在学习C语言的时候,以课本为主,理解规则是很重要的,其次就是一些逻辑方面需要注意。因为第一学期没有带电脑所以大部分的上机操作都是利用上机课,手机完成的,所以除了完成作业,真正的实验机会不是很多。每次上课尽量跟上老师的讲解,不清楚的内容要及时利用资源解决掉。C语言的特殊性在于它是一门写给机器看的指令,在表达上面必须遵守机器语言。在初学的时候会经常在格式等方面遇到错误,而且还找不出在哪里错了。但是久而久之也能摸清其中的一些套路,错误量也就减少了。但是算法上的硬伤也就无能为力了。
目前为止估算自己写过多少行C代码?理解的情况如何?
目前为止写的代码都局限于老师挂出的题目,粗略估计一下应该写的代码行数在两千左右。通过这些题目,让我对最基础的C语言有了基本了解,但是对于指针,结构体等还是留下了一些问题需要解决。
学过了C语言,你分的清数组指针,指针数组;函数指针,指针函数这些概念吗?
-
数组指针是指指向数组的指针;
-
指针数组是指数组是由指针构成的,即数组储存的是指针;
-
函数指针是指指向函数的指针;
-
指针函数是指返回值为指针的函数;
学过了C语言,你明白文件和流的区别和联系吗?如何区分文本文件和二进制文件?如何编程操作这两种文件?
讲真,真不知道这些的区别和联系,但是查阅资料,可以知道:
文件是计算机管理数据的基本单位,同时也是应用程序保存和读取数据的一个重要场所。文件是指在各种存储介质上(如硬盘、可移动磁盘、CD等)永久存储的数据的有序集合,它是进行数据读写操作的基本对象。每个文件都有文件名、文件所在路径、创建时间及访问仅限等属性。但是,流是一串字符没有结构的数据。对象间进行信息或者数据的交换时总是先将对象或数据转换为某种形式的流,再通过流的传输,到达目的对象后再将流转换为对象数据。所以,可以把流看作是一种数据的载体,通过它可以实现数据交换和传输。
说起来很抽象,也很陌生,但是举最简单的例子当你在网上看视频的时候,向网站传送了你要看的节目的请求,让后就从线上传输出流文件提供观看。
文本文件是基于字符编码的文件,常见的编码有ASCII编码,UNICODE编码等等。二进制文件是基于值编码的文件,以二进制形式存储。在区分这两类文件上,只是判断一下文件的内容中是否含有0x00-0x07这八个字符内容,如果有的话,就是二进制文件文本文件和二进制文件。文本文件和二进制文件并无本质的差别,他们的区别在于打开这个文件的程序在对其内容的解释上,我们可以把一个典型的所谓二进制文件(bmp)当作文本文件来打开,是同样可以的,只是得到的内容就是一些乱七八糟的符号了。反过来,也是同样成立。
不知道怎么编程操作这两种文件,还要请大腿赐教。
学过了C语言,你知道什么叫面向过程程序设计吗?它解决问题的方法是什么?
面向过程是一种以过程为中心的编程思想,分析出解决问题的步骤后一步步执行最后解决问题。解决问题的重要方法是就是模块化的思想方法。
在C语言里面,什么是模块?你写过多个源文件的程序吗?
模块就是在程序中完成指定功能的部分。比如利用自定义函数能够完成一个指定功能就是一个功能模块。能力和水平有限,还没写过多个源文件的程序。
学过了C语言,你知道什么是“高内聚,低耦合”吗?这个原则如何应用到高质量程序设计中?
计算机导论中讲过高聚低耦。一个模块内各元素联系的越紧密,则它的内聚性就越高。高内聚是指一个模块是由相关性很强的代码组成,只负责一项任务。低耦合指让每个模块尽可能的独立完成摸个特定的子功能,减小每个模块之间的联系程度,这样能够对后续的设计开发和维护带来便利和降低成本。
学过了C语言,你如何把数组A的内容复制到数组B中?如何查找整数数组A中有没有数字5?如何对整数数组A进行排序(从小到大,从大到小)?写出相应的程序。
int A[10],B[10],i; //假设A,B都是含有十个元素的数组
printf("请输入数组A\n");
for(i=0;i<10;i++)
{
scanf("%d",&A[i]);
}
for(i=0;i<10;i++)
{
B[i]=A[i];
}
对于字符数组可以直接使用strcpy函数实现。
int A[10],i; //假设A是含有十个元素的数组
printf("请输入数组A\n");
for(i=0;i<10;i++)
{
scanf("%d",&A[i]);
}
for(i=0;i<10;i++)
{
if(A[i]==5)
break;
}
if(i<=9) printf("该数组有数字5");
else printf("该数组没有数字5");
排序问题可以使用冒泡法
int A[10],i,j,temp; //假设A是含有十个元素的数组 ,从小到大排列
printf("请输入数组A\n");
for(i=0;i<10;i++)
{
scanf("%d",&A[i]);
}
printf("\n");
for(i=0;i<9;i++)
{
for(j=0;j<9-i;j++)
{
if(A[j]>A[j+1])
{
temp=A[j];A[j]=A[j+1];A[j+1]=temp;
}
}
}
for(i=0;i<10;i++)
{
printf("%d ",A[i]);
}