20165202 学习基础和c语言基础调查
你有什么技能比大多人(超过90%以上)更好?
我对自行车运动的兴趣始于初中时期,不敢说比大多数人更好,但在业余爱好者中相对来说还不错。
针对这个技能的获取你有什么成功的经验?
接触自行车运动几年里,我从最初的骑游组织转到竞技团队当中,通过不断深入的接触我真正感受到了自行车的魅力,从感受自然亲近自然的目的转到了对速度的追求,并在京津冀地方性比赛中取得过一些成绩。我认为自身的提高主要源自以下几点:
-
对自行车运动的热爱
-
不断的练习
-
教练科学的指导
与老师博客中的学习经验有什么共通之处?
在对一些成功经验进行总结后不难发现,我所列出的几项因素与老师在《做中学之乒乓球刻意训练一年总结》一文中提到的经验很吻合,自行车运动作为一项耐力运动,需要的就是重复练习提高自己的体能。
体育运动的初学者练习时候都需要重复动作,比如学习打乒乓球时要练习挥拍,挥拍成千上万遍之后动作就会定型,也就是教练常说的“肌肉有了记忆能力”,以后实战中可以不假思索地做出来。
-引自《优秀的教学方法---做教练与做中学》
有了学习与提高的目标,在持续的实践中发现问题,通过教练(老师)的反馈得到科学的指导,不断实现自身的进步更加乐于学习。通过阅读娄老师的文章我第一次了解到“做中学(Learning By Doing)”这一概念,在我看来这种实践反馈提高的循环正是“做中学”的体现。
有关C语言学习的调查
- 你是怎么学习C语言的?(作业,实验,教材,其他),与你的高超技能相比,C语言的学习有什么经验和教训?
在上课听完老师的授课后,下课结合教材内容吸收理解,之后进行编程练习。学编程是离不开写代码的,有时候上课感觉听懂了,到作业系统中做题还是无从下手。大一下学习C语言时没有投入足够的时间,缺乏练习是很大的失误。 - 目前为止估算自己写过多少行C代码?理解的情况如何?量变引起质变,如何平衡质和量?
大约2500行,一些基础的比较好理解,但随着后面内容难度加深理解有一定困难。量变是质变的前提,但不能盲目追求量,更应该注重理解吸收,低效的凑数的“量”难以引起质变。 - 学过了C语言,你分的清数组指针,指针数组;函数指针,指针函数这些概念吗?
数组指针:指向数组的指针
指针数组:数组内的元素都是指针,存储指针的数组
函数指针:指向函数的指针包含函数的地址,调用函数
指针函数:函数声明其返回值为某个指针时,给函数返回一个地址,用于需要指针的表达式 - 学过了C语言,你明白文件和流的区别和联系吗?如何区分文本文件和二进制文件?如何编程操作这两种文件?
不太清楚 - 学过了C语言,你知道什么叫面向过程程序设计吗?它解决问题的方法是什么?
首先分析出解决问题的步骤,然后用函数把这些步骤逐步实现,使用时依次调用。 - 在C语言里面,什么是模块?你写过多个源文件的程序吗?
依照负责部分不同,将一个软件或程序拆分成多个部分,完成后再拼装成完整的程序。没有写过 - 学过了C语言,你知道什么是“高内聚,低耦合”吗?这个原则如何应用到高质量程序设计中?
不太清楚,根据百度所查资料
耦合性:也称块间联系。指软件系统结构中各模块间相互联系紧密程度的一种度量。模块之间联系越紧密,其耦合性就越强,模块的独立性则越差。模块间耦合高低取决于模块间接口的复杂性、调用的方式及传递的信息
内聚性:又称块内联系。指模块的功能强度的度量,即一个模块内部各个元素彼此结合的紧密程度的度量。若一个模块内各元素(语名之间、程序段之间)联系的越紧密,则它的内聚性就越高。
所谓高内聚是指一个软件模块是由相关性很强的代码组成,只负责一项任务,也就是常说的单一责任原则。
耦合:一个软件结构内不同模块之间互连程度的度量。
对于低耦合,粗浅的理解是:一个完整的系统,模块与模块之间,尽可能的使其独立存在。也就是说,让每个模块,尽可能的独立完成某个特定的子功能。模块与模块之间的接口,尽量的少而简单。如果某两个模块间的关系比较复杂的话,最好首先考虑进一步的模块划分。这样有利于修改和组合。
- 学过了C语言,你如何把数组A的内容复制到数组B中?如何查找整数数组A中有没有数字5?如何对整数数组A进行排序(从小到大,从大到小)?写出相应的程序。
数组A复制到数组B:
#include <stdio.h>
void main()
{
int n,i,a[100],b[100],j;
printf("Input n:");
scanf("%d",&n );
printf("A:\n");
for (i=0; i<n; i++)
{
scanf("%d",&a[i]);
}
printf("B:\n");
for (j=0; j<n; j++) {
b[j]=a[j];
printf("%d",b[j]);
}
}
在A中查找数字5:
#include <stdio.h>
void main()
{
int a[30],i,b=0;
for(i=0;i<30;i++)
{
scanf("%d",&a[i]);
}
for(i=0;i<n;i++)
{
if(a[i]==5){
b=1;
printf("第%d个元素是5",i);}
}
if(b==0)
printf("没有元素5\n");
}
对A进行排序(从小到大):
#include <stdio.h>
void main()
{
int a[10];
int i,j,t;
printf("Input 10 numbers:\n");
for(j=0; j<10; j++)
scanf("%d",&a[j]);
printf("\n");
for(i=0; i<9; i++)
for(j=0; j<9-i; j++)
if(a[j]>a[j+1])
{
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
for(j=0; j<10; j++)
printf("%d\n",a[j]);
printf("\n");
}
对A进行排序(从大到小):
#include <stdio.h>
void main()
{
int a[10];
int i,j,t;
printf("Input 10 numbers:\n");
for(j=0; j<10; j++)
scanf("%d",&a[j]);
printf("\n");
for(i=0; i<9; i++)
for(j=0; j<9-i; j++)
if(a[j]<a[j+1])
{
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
for(j=0; j<10; j++)
printf("%d\n",a[j]);
printf("\n");
}
- 写一个程序,统计自己C语言共写了多少行代码。
#include <stdio.h>
void main()
{
int ch,lines;
FILE *fp;
char filename[FILENAME_MAX];
printf("Input filename:");
while(scanf("%s",filename) == 1)
{
fp = fopen(filename,"rt");
if(fp == NULL)
{
printf("error!");
printf("Input filename:");
continue;
}
lines = 0;
while((ch = fgetc(fp)) != EOF)
{
if(ch == '\n') ++lines;
}
fclose(fp);
printf("%s 的行数为 %d\n",filename,lines);
printf("Input filename:");
}
}
- 你知道什么是断点吗?给出自己调试程序的例子。
在某处设置断点后,调试程序时,程序运行到该行代码时会中断,方便逐步调试查找问题。 - Java各章问题
1.Java如何编写源文件
2.8种基本数据类型具体区分
3.怎样利用“异或”运算
4.如何创建对象
5.abstract类使用意义
6.接口回调的实现
7.匿名类的使用
8.Integer类调用其类方法
9.JFrame构造方法
10.如何构造随机流
11.通配符的使用
12.区分进程与线程
13.接收数据包
14.绘制图形方法
15.使用泛型类声明对象 - 对比C语言的学习,你对《Java程序设计》的学习有什么具体目标?如何通过刻意训练提高程序设计能力和培养计算思维?如何通过“做中学”实现你的目标?
利用好码云与云班课,同时制定进度条督促自己完成学习任务。老师在首次作业中提到了我们的代码行数要求,努力平均到每天不能拖到一天仓促赶工。
正如老师所说,用正确的方式做事情可以有效改善我们的效率,无论学习还是做事首先要有正确的心态,应付了事的态度做什么都不会出彩。
正解的动作不容易受伤让我意识到「用正确的方式做事情,可以做的更好,效率更高」,这太神奇了。所以现在干什么事情,很少糊弄,一定要花时间做的事,就尽力做好,可能这是最省事的方法。