学习基础和C语言基础调查
关于优势技能
- 说来惭愧,读书多年,爱好不少,但是真的能拿的出手的、能被叫做特长的不多。至今,能在同龄人中处于较领先位置的也只有从四年级开始练起的乒乓球。记得开始练习乒乓球是从颠球开始的,从最初的一次颠几个,到后面的几十个、几百个,虽然花了不少时间,但是在球感的培养上打下了良好的基础到后面练习正反手的基础推打、拉球,每次训练的挥拍次数也至少有5000次,包括平时的对抗赛训练和体能、力量训练等等,为以后的活动打下了良好的基础。
- 读了娄老师的博客做中学之乒乓球刻意训练一年总结之后呢,我的感触也是十分的深刻,远远地超过了其他几篇博客的感受。不仅仅是佩服于娄老师的毅力,同时也在与自己练习乒乓球以来的训练过程进行比较。目前的问题就是:量变不够,无法引起决定性的质变。
关于C语言学习
- 你是怎么学习C语言的?(作业,实验,教材,其他),与你的高超技能相比,C语言的学习有什么经验和教训?
C语言的学习大概是采用“教材-实验”结合的方法。先学习教材内容,然后进行第一次实验练习,当遇到难以解决的问题时返回教材,从书上寻找解决问题的方法,直到对所学内容掌握为止;接下来进行第二次实验练习,通过第二次实验的练习来检验自己是否真正掌握所学的内容。 - 目前为止估算自己写过多少行C代码?理解的情况如何?量变引起质变,如何平衡质和量?
关于写过的C语言代码数量,大致有如下估算:20行左右小程序及作业系统80个左右,共约1600行;50行左右程序30个左右(有重复的练习),约1500行;150行左右程序7个,共约1050行,大致总代码量在4000左右。对于一般的C语言概念理解较为透彻,但涉及链表的后续内容感觉较为吃力。至于对量变和质变,我的理解大致是这样的:简单的问题可以通过大量的练习加深印象,强化记忆,达到最终烂熟于心信手拈来的地步;但是对于复杂问题则更应该注重于对问题本身的理解,大量反复的练习不仅浪费时间,还很难有特别好的效果。以C语言的学习为例,在学习函数一章的时候,就应该 采用大量的练习,比如把之前设计的简单程序改成函数实现,或者构建不同功能的函数;但在链表学习中,就应该先针对结构体和指针的内容进行练习,再理解这两部分知识点在链表里的应用。很可惜,在之前C语言的学习中并没有采用这种学习方法。 - 学过了C语言,你分的清数组指针,指针数组;函数指针,指针函数这些概念吗?
数组指针和指针数组:在我的理解中,这是一个偏正短语,数组指针,即为(指向)数组(首地址)的指针,本质上是一个指针,它的指向是数组首元素的地址。指针数组,即为(由)指针(构成)的数组,本质上是一个数组,其构成元素是若干个指针。
函数指针和指针函数:仍然是偏正短语。函数指针,即为(指向)函数的指针,其定义代码为:
int ( *f )( int x )
指针函数,即为(返回变量为)指针的函数,其定义代码为
int *f( int x , int y )
- 学过了C语言,你明白文件和流的区别和联系吗?如何区分文本文件和二进制文件?如何编程操作这两种文件?
在C语言学习中,文件的处理的确是我的薄弱环节,所以没办法指出老师提出问题中几种文件的区别以及对它们操作的过程,希望利用假期时间重新学习C语言文件部分。 - 学过了C语言,你知道什么叫面向过程程序设计吗?它解决问题的方法是什么?
对面向过程的理解:面向过程针对的是动作,也就是我们所说的算法,一个动作可以是张三做也可以是李四做,一个算法也可以用3带入计算也可以用4,把动作或者算法总结起来,就是面向过程程序设计里的过程,在C语言里,这个把过程总结起来的操作就是函数的构建。用高度相似的算法和解决问题的方法,当遇到类似问题的时候就用该方法解决,也就是函数的调用。 - 学过了C语言,你知道什么叫面向过程程序设计吗?它解决问题的方法是什么?
C语言的模块:在我的理解里C语言的模块就是一个或几个函数的集合体。至于多个源文件的代码还没有写过。 - 学过了C语言,你知道什么是“高内聚,低耦合”吗?这个原则如何应用到高质量程序设计中?
我的理解是把复杂的程序过程,用很多函数的形式进行串联,在主程序内减少运算过程。 - 学过了C语言,你如何把数组A的内容复制到数组B中?如何查找整数数组A中有没有数字5?如何对整数数组A进行排序(从小到大,从大到小)?写出相应的程序。
#include <stdio.h>
#include <stdlib.h>
int main()//复制数组内容
{
int a[20],b[20];
int n;
int i,j,k;
for (i=0; ;i++)
{
printf("请输入原数组数字个数
");
scanf("%d",&n);
if (n>20 || n<=0)
{
printf("error!
");
}
else
{
break;
}
}
printf("请输入数组a的值:
");
for (j=0;j<n;j++)
{
scanf("%d",&a[j]);
}
printf("数组b的数值为:");
for (k=0;k<n;k++)
{
b[k]=a[k];
printf("%2d",b[k]);
}
}
#include <stdio.h>
#include <stdlib.h>
int main()//数组中5的个数
{
int a[20];
int n,i,j;
int temp=0;
printf("输入数组a中元素的个数:
");
scanf("%d",&n);
if (n>20 || n<=0)
{
printf("error!
");
}
else
{
printf("请输入数组元素:
");
for (i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
for (j=0;j<n;j++)
{
if (a[j]==5)
{
temp+=1;
}
}
printf("数组里有%d个5
",temp);
}
}
#include <stdio.h>
#include <stdlib.h>
int main()//由小到大排列
{
int a[20];
int n,i,j,k,l;
int temp=0;
printf("输入数组a中元素的个数:
");
scanf("%d",&n);
if (n>20 || n<=0)
{
printf("error!
");
}
else
{
printf("请输入数组元素:
");
for (i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
for (j=0;j<n;j++)
{
for (k=0;k<n-1-j;k++)
{
if (a[k]>a[k+1])//由大到小排列为条件变成<.
{
temp=a[k];
a[k]=a[k+1];
a[k+1]=temp;
}
}
}
for (l=0;l<n;l++)
{
printf("%5d",a[l]);
}
}
}
-
写一个程序,统计自己C语言共写了多少行代码。
由于对文件知识掌握不够,我只有一个思路。开始将所有的程序(.c或.txt文件)放在同一个根目录下面,并在每个循环里第一个写入break;然后循环导入程序,每个程序的运算数之和大概就是程序总行数。 -
你知道什么是断点吗?给出自己调试程序的例子。
在此前钱老师的C语言第二次实验中有过关于断点程序调试的讲解,从那时候我才开始学会断点的使用,断点即程序运行中在此中断的点。当时在做成绩管理系统时曾使用过该方法调试。
针对Java提出的问题
- Java编译环境是如何作用的?即Java程序如何在编译器中作用?
- Java长整型是怎么定义进制的?
- 对if( ((x=0)0) || ((y=20)20) )这个地方不是很理解,是把(x=0)作为一个变量吗?
- 建立类之后如何实现对类的调用?
- 子类只能有一个父类,那么如何实现多层的类?比如说人-运动员-篮球运动员。
- 接口的具体作用是什么?相当于C语言中的什么(或者类似于什么)?
- 断言语句和C语言中的断点有什么联系和区别?
- 几种实用类的联系和区别?
- JFrame的构造方式是什么?
- 流的操作与文件的直接操作有什么不同?
对Java学习的展望
计算机语言的作用我认为最主要的是应用,希望通过这学期的学习能够初步完成对自己有用程序的编写。