20165309 技能学习经验与C语言

技能学习经验与C语言

技能学习经验

你有什么技能比大多人(超过90%以上)更好?针对这个技能的获取你有什么成功的经验?与老师博客中的学习经验有什么共通之处?

从小到大,或是出于兴趣、或是出于父母的要求,我涉猎过的技能有很多,比如游泳、太极、围棋等等,但能称得上比大多数人(此处不敢妄言是大于90%)更好的,应该是小提琴。

开始接触小提琴到现在也差不多有十四年了,我大致经历了这样几个过程:嫌苦嫌累被追着打着练琴、为了考级每天自觉练琴、面临升学压力放弃学琴,和发觉兴趣所在拉琴消遣。其中,我得到的不仅仅是在大大小小舞台比赛上的证书奖状,而且是自信乐观的生活态度。

我的技能学习经验可由两个词概括出来:练习和兴趣。正如娄老师在《做教练与做中学》中所说的“实践要具备一定的量才能引起质变”及《做中学之乒乓球刻意训练一年总结》一文中的“肌肉记忆”,要想学会一件东西,反复练习是必不可少的,渐渐地变被动为主动了、进而形成一种惯性了,才有可能真正去熟习它。而兴趣,在我看来是很好的助力剂,它支撑着我们不要放弃,带领着我们探索乐趣,让我们想着办法地琢磨如何去做得更好,自然,我们的本领也会变得更强。下学期对Java课程的学习也该如此,我们要在“刻意训练”下循序渐进,直至熟练掌握要领。

有关C语言学习的调查

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

答:我主要是通过刷题库里面的题和读教材学习C语言的,我认为C语言学习是要在大量练习的基础上能够真正地理解。在理解这一点上,我就存在着不足,不会触类旁通,因此在面对中等以上难度编程问题的时候经常会手足无措。今后的学习一定要注重理解,不然真的很吃亏。

目前为止估算自己写过多少行C代码?理解的情况如何?量变引起质变,如何平衡质和量?

答:目前为止大概写过3000行以上的C代码。真正是自己编写的代码能够完全理解,有过参考的代码能做到看懂,但对指针、结构体和文件方面的理解还不充分。我认为平衡质和量,就先要对每个量负责,以自然地产生质变。

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

答:数组指针是个指针,指向数组;指针数组是个数组,里面的元素是指针。函数指针是个指针,指向函数;指针函数是函数,返回值是指针。

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

答:不知道。参考了《流和文件的区别》《文本文件和二进制文件的区别》后,我才了解到这些知识。流类似于分段操作,大文件使用流可以提高操作效率。文本文件和二进制文件在编码上有区别:文本文件基于字符编码,基本为定长编码;二进制文件基于值编码,可看做是变长编码。

文本方式写时,每遇到一个''\n'',它将其换成''\r \n'',然后再写入文件;当文本读取时,它每遇到一个''\r\n''将其反变化为''\n'',然后送到读缓冲区。二进制读写时,其不存在任何转换,直接将写缓冲区中数据写入文件。

-- 引用自《文本文件与二进制文件区别

学过了C语言,你知道什么叫面向过程程序设计吗?它解决问题的方法是什么?

答:面向过程程序设计的中心是过程,即解决问题的步骤,并结合调用函数的方法实现。

在C语言里面,什么是模块?你写过多个源文件的程序吗?

答:函数是C的基本模块。没有写过多个源文件的程序。

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

答:高内聚是指一个模块内各元素联系紧密,低耦合是指模块之间独立性强,我们在设计时应尽量去满足这个基本原则,使各个模块间功能独立、程序设计思路明确。

参考:《什么是高内聚、低耦合?》

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

答:

#include <stdio.h>
#include <stdlib.h>
#define N 100
int main()
{
    char a[N] = "\0",b[N] = "\0";
    int i;
    printf("Input:\n");
    scanf("%s",a);
    for(i = 0;a[i] != '\0';i++)
	{
        b[i] = a[i];
    }
    printf("%s\n",b);

    return 0;
}
#include <stdio.h>
#include <stdlib.h>
#define N 100
int main()
{
    char a[N] = "\0";
    int i;
    printf("Input:\n");
    scanf("%s",a);
    for(i = 0;a[i] != '\0';i++)
		if(a[i]==5)
			printf("5 is existent.");
    return 0;
}

升序如下,降序同理:

#include <stdio.h>
#include <stdlib.h>
#define N 10
int main()
{
	int i,j,t,p,a[N];
    for(i=0;i<N;i++)
	{ 
		printf("%2d:",i+1);
		scanf("%d",&a[i]);
	}
	for(i=0;i<N-1;i++)
	{ 
		p=i;
		for(j=i+1;j<N;j++)
			if(a[p]>a[j])
				p=j;
		if(p!=i)
		{
			t=a[p];
			a[p]=a[i];
			a[i]=t;
		}
	}
	for(i=0;i<N;i++)
		printf("%d",a[i]);
}

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

答:不会写。

你知道什么是断点吗?给出自己调试程序的例子。

答:程序执行至断点,会暂停。

参考怎样快速阅读一本书,快速阅读一下云班课中有PPT,每章提出一个问题

  • 类加public和不加public有什么区别?
  • 显示转换的格式里面的类型名是谁的?
  • switch语句中default是否是必要的?
  • 为什么要将源文件编译得到的类的字节码文件保存在有包名的类的存储目录?
  • 上转型对象可以调用子类重写的实例方法是什么意思?
  • 为什么接口可以实现回调?
  • 断言的功能能否用if实现?
  • 为什么C语言的标准库里没有string类型?
  • JPanel面板的布局如何改变?
  • 什么情况下需要序列化呢?
  • utf-8和gb2312的区别是什么?
  • 重写run()方法后是要从哪个类中调用?
  • 设计广播数据报网络程序时的D类地址具体是什么?
  • 绘制图像时的observer起了什么作用?
  • 泛型的安全性怎么体现?

对比C语言的学习,你对《Java程序设计》的学习有什么具体目标?如何通过刻意训练提高程序设计能力和培养计算思维?如何通过“做中学”实现你的目标?

我对学习Java的目标是:养成良好的学习习惯,每天至少敲50行代码,能够保质保量、及时反馈地完成老师布置下来的任务,锻炼出自己独立编程的能力。吸取C语言学习时的经验教训,我们应该适当增加编程训练的难度,选择有挑战的题去做,从而提高对自身编程能力的要求,做到在实践中增强理解,把知识化为己有。

posted @ 2018-02-02 09:31  20165309吴思佳  阅读(355)  评论(3编辑  收藏  举报