C语言基础调查和JAVA学习展望

一、有关学习技能的经历

掌握一项技能,我认为最重要的是练习和认真程度。

我在上幼儿园的时候学过电子琴,上台表演过多次,但是三四年之后就半途而废了,后来小学毕业之后对钢琴产生了浓厚的兴趣,开始练习钢琴。或许是电子琴的底子在,我练习接受的速度就很快。

体育运动的初学者练习时候都需要重复动作,比如「学习打乒乓球时」要练习挥拍,挥拍成千上万遍之后动作就会定型,也就是教练常说的「肌肉有了记忆能力」,以后实战中可以不假思索地做出来。

像打乒乓球一样的道理,弹钢琴如果只是练习一两遍可能会把一小段弹出来,可是效果绝对不会和练习十遍的效果一样。所以我初中的时候,每天会坚持抽出一个小时的时间练习钢琴,先从最简单的指法然后再练习老师的作业以及原来学习过的曲子。日积月累,在不经意之间已经背下来很多曲子的谱子,手已经有记忆力了,自然而然的可以弹出曲子,感觉很奇妙。后来上高中了,时间比较紧张就没有再上钢琴课了,不过有时候我还会自娱自乐一下。

为了锻炼身体,高考之后我学习了游泳。最开始的基础学习进程很快,最后一步“换气”我学习几天、喝了不少水可是还是不会。回到家之后我在网上找了教学视频,又想了想教练说的要领,发现自己还是对水有害怕的情绪,不敢再水里做动作,害怕喝到水,身体过于僵硬,所以总是找不到感觉。后来在多次尝试、练习下终于学会,不敢说我的游泳技能有多么强,不过从一开始怕水到现在克服恐惧还是有些进步的。

大一暑假回家我坚持每天去健身房游泳,一开始每天800m,很累,后来逐步每天加50m,适量的练习强度是必要的,我自己能明显感觉我的速度以及耐力有所提升。虽然还不是很快,但是我还会在今年夏天继续练习的。

二、有关C语言的学习

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

我的C大部分是自学的,结合老师上课讲的,课下自己看书,结合书上的例子在C的系统上做题,还有通过实验练习。C的练习还有依靠大二上的密数实验,编写了几个较长的程序,对他的理解进一步加深。

一项技能的掌握程度分为:新手/高级初学者/合格者/精通/专家

我认为我的C的水平勉强算一个高级初学者,还有很多知识不会,我认为还是练习量不够。仅仅依靠作业的练习量是能够应付过期末考试的,但是离真正掌握还相差甚远。

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

很惭愧的说,我没有统计过C的代码的行数,也没有将以前练习的文件保存,但是离老师要求的10000行代码还相差甚远。我认为想要理解一门语言还是需要练习,简单的程序我可以写出来。量变引起质变,保持一定量的练习再加上理解分析比较才能更好地提高C的水平。

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

数组指针:它的本质是一个指针,即指向数组的一个指针。

指针数组:它的本质是一个数组,即数组的每个元素都是指针。

我在网上找了一个例子来说明数组指针和指针数组的区别,显然很容易能判断出p1为指针数组,p2为数组指针。

函数指针:本质是一个指针,是一个指向函数的指针变量。以整数型为例写一个声明格式:int (*p1)(int a,int b);

指针函数:本质是一个函数,它的返回值为某一类型的指针(一个地址值)。以整数型为例写一个声明格式:int *p2(int a,int b);

注意指针函数与函数指针表示方法的不同,千万不要混淆。最简单的辨别方式就是看函数名前面的指针*号有没有被括号()包含,如果被包含就是函数指针,反之则是指针函数。

我认为这个方法同样也适用于指针数组和数组指针的区别。

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

流(stream):磁盘或其它外围设备中存储的数据的源点或终点,它提供或储存数据。

数据流将整个文件内的数据看作一串连续的字符(字节),数据流借助文件指针的移动来访问数据,文件指针目前所指的位置即是要处理的数据,经过访问后文件指针会自动向后移动。

流就相当于一个文件指针,有流水的意思。

文件(file):存储在计算机外部存储器中的数据的集合。文件是字符构成的序列,以字节的形式进行储存。

根据文件的储存形式,分为文本文件(ASCII文件)和二进制文件。

文本文件:文本文件在磁盘上储存的是字节所对应的ASCII码,可以在显示器上读出来,可以读懂文件内容。文本文件所占用的空间较大。

二进制文件:是按照二进制代码进行存放的,用0\1表示,虽然也可以在显示器上显示,但我们不知道内容是什么意思。二进制文件所占用的空间较小。

要打开指定的文件可以使用fopen()函数

FILE *fopen(const char *filename,const char *mode);

图片引用自《C中的文件操作》

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

面向过程是以过程为中心的编程思想。解决方法:分析出程序所需要的步骤,然后用函数把每一个步骤写出来,最后再依次调用。

参考:《面向过程》

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

我认为模块是指将一个程序分成多个步骤来完成,分别编程实现每个步骤,就是模块。函数就可以看作模块。我没有写过多个源文件的程序。

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

高内聚是模块内各个元素彼此结合的紧密程度高,一个模块只负责一项任务,即单一负责原则。低耦合是指程序中各个模块之间联系较少,每个模块的相对独立性很高,模块与模块之间的接口少而简单,这样就很容易改变各个模块的程序。

在程序设计中,将每一个步骤模块化,擅长使用已经存在的函数简化程序。

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

把数组A的内容复制到数组B中:

#include

#include

#define N 100

int main(){

int a[N],b[N];

int i,n;

printf("请输入n:\n");

scanf("%d",&n);

printf("请输入数组a:\n");

for(i=0;i

scanf("%d",&a[i]);

}

for(i=0;i

b[i]=a[i];

}

printf("请输出数组b:\n");

for(i=0;i

printf("%d ",b[i]);

}

return 0;

}

查找整数数组A中有没有数字5:

int a[100];

int i,n,flag=0;

scanf("%d",&n);

printf("请输入数组a:\n");

for(i=0;i

scanf("%d",&a[i]);

}

for(i=0;i

if(a[i]==5){

printf("此数组中有5.");

flag=1;

}

}

if(flag==0){

printf("此数组中没有5.");

}

return 0;

对整数数组A进行排序(从小到大,从大到小):

int main(){

int a[100];

int i,j,n,flag=0;

int temp;

printf("请输入n:\n");

scanf("%d",&n);

printf("请输入数组a:\n");

for(i=0;i

scanf("%d",&a[i]);

}

for(i=0;i

for(j=i+1;j

if(a[i]

temp=a[i];

a[i]=a[j];

a[j]=temp;

}

}

}

printf("请从大到小输出a:\n");

for(i=0;i

printf("%d\n",a[i]);

}

for(i=0;i

for(j=i+1;j

if(a[i]>a[j]){

temp=a[i];

a[i]=a[j];

a[j]=temp;

}

}

}

printf("请从小到大输出a:\n");

for(i=0;i

printf("%d\n",a[i]);

}

return 0;

}

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

能力有限,没能自己写出程序。我在网上找了相关的知识,找到了一段代码,现在能看懂了。不过我还是想尝试自己写出来。

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

断点:在程序的某行代码处设置断点,程序运行到就停止,开始单步调试。

单步调试数组从大到小排列的例子

三、有关JAVA的学习

1.有关ppt上的问题

(1)在第一章ppt中,安装jdk在D盘,而设置环境变量JAVA_HOME、path、classpath时却在E盘,我认为这里应该是jdk安装的路径,而非E盘。我在实际操作中按照我自己的想法更改了ppt的做法,事实证明我的想法是正确的。但是我不知道设置在E盘是否正确,如果在E盘也存在一个JDK,那应该是可以行得通的。

(2)在第二章ppt、2.3类型转换运算中,基本数据类型精度排列,float变量占4byte,long变量占8byte。我认为排序应该是:byte char short int float long double。而ppt中是:

(3)在第二章ppt中,输入基本型数据,Scanner reader=new Scanner(System.in);我没有看懂这个是什么意思。可能需要几个例子来理解一下。

(4)在第三章ppt中,自增自减运算符中:

int f=2;

int m=2;

int y=(f*++m)+m; //y=9;

我计算的y=8,在第二个m是取m=2(原值)还是取m=3(前面m运算后的值)?

(5)

class Lader

{ float above,area;

float computerArea()

{ area=(above+bottom)*height/2;

return area;

}

float bottom;

void setHeight(float h)

{ height=h;

}

float height;

}

这段代码中,bottom、height是局部变量还是成员变量呢?我比较偏向于成员变量,因为他不在方法体中。那这样是否就代表了成员变量的声明可以在方法之后?和位置无关?

(6)

int add(int x,int y,int z)

{ return x+y+z;

}

在这段代码中的意思是声明有参数的方法头,显而易见x、y、z为局部变量,局部变量是没有默认值的。在使用局部变量的时候我们要保证其有具体的值,那这个是如何直接return x+y+z的呢?

(7)

class Circle

{ double rad;

void changeRad(double newRad)

{ rad=newRad;

}

}

class Test

{ public static void main(String args[])

{ Circle cir=new Circle(10);

cir.changeRad(100);

}

}

在这段代码中,cir.changeRad(100);表达的意思是什么呢?我理解的意思是调用方法changeRad,其引用值是100,那是否rad的值由10变成100?

(8)在第五章中,子类是如何继承父类的方法?在ppt中没有看到具体的例子。

(9)在第六章中,程序设计中的“开-闭”原则是什么?

(10)在第七章中,异常类(exception)和error有什么区别?

后续的ppt我还没有阅读完,前面的ppt中已经有很多不懂的地方,没有前面的基础后面的就更不容易理解,我会在以后自学的时候及时补充我的疑问。

2.有关JAVA的学习

相比较C的学习,我会加大JAVA练习的程度。通过这几天的自学速读ppt,我觉得理解JAVA相比较C而言更困难,万事开头难,我会努力克服困难的,主张问题自己解答。在阅读ppt的同时,我也看了视频,我觉得视频中讲解的更加通俗易懂,并且讲到了很多ppt中没有的小细节,是自学理解的好办法。当然还需要实践,我自己尝试运行了Hello.java,虽然成功运行出来了,但是中间出了很多我意想不到的小问题,比如需要大写的我打的小写,因为一个小小的错误无法编译,所以下一步学习中我会多自己尝试着运行程序,结合教学视频尽多的掌握知识。我也会在后续的学习中积极补充我的问题。看过如何提问我受益很多,我会多结合自己的思考提出更有价值的问题。

c语言指针没学可以学java_20165312 C语言基础调查和JAVA学习展望相关推荐

  1. rust语言为什么没人用_为什么Rust语言正在兴起

    rust语言为什么没人用 您可能从未用Mozilla创建的开源,系统级编程语言Rust编写任何东西,但是您可能会在某个时候写. 在Stack Overflow的2019年开发人员调查中 ,开发人员将R ...

  2. 全国计算机二级考试c语言指针,全国计算机等级考试二级C语言指针检测试题.doc...

    . . . . 学习参考 全国计算机等级考试二级C语言指针测试题 一.选择题 (1)设有定义:int n1=0,n2,*p=&n2,*q=&n1;,以下赋值语句中与n2=n1;语句等价 ...

  3. 零基础学python知乎-编程零基础应当如何开始学习 Python?

    这个问题下面这么多人推荐了这么多 Python 资源,估计零基础新手看到了会眼花缭乱吧. 作为非计算机专业出身.自学编程的过来人,我知道想找到一份适合自己的入门教程不容易.不如就在这里分享一下,如何鉴 ...

  4. c语言指针面试经典选择题及答案,C语言指针经典练习题-及答案

    <C语言指针经典练习题-及答案>由会员分享,可在线阅读,更多相关<C语言指针经典练习题-及答案(11页珍藏版)>请在人人文库网上搜索. 1.C语言指针练习题及答案一.选择题1. ...

  5. 零基础学sql要多久_零基础小白如何迈出学习SQL的第一步?文科生学SQL的心得

    本文适用对象:从没接触过编程的零基础小白 首先,判断是否需要学习SQL 学习的第一步:了解SQL的用途. 比如你的目的是处理小量数据,那么excel就能满足需求,且excel简单易学,适用性广,这种情 ...

  6. c语言指针存储的第一个字节,c语言指针详解,学霸课堂记录

    指针 指针常量:和地址常量相同 指针变量:用来存储指针常量 指针:通常将指针常量和指针变量统称为指针 以字节为单位将内存进行划分,没一个字节的空间都有一个地址编号首地址:某一段空间的 第一个地址编号 ...

  7. c语言指针转换成数组,浅议C语言中灵魂数组和指针的互操作(转)

    浅议C语言中灵魂数组和指针的互操作(转)[@more@]曾听好多朋友说,C是一种怀旧的语言,因为它的历史很久远,然而自从各种面向对象的编程语言的相续出现让它的影响力日减. 当然了,这是无可非议的,但是 ...

  8. c语言指针怎样代替二维数组,c语言 指针和二维数组

    // 指针和二维数组 #include int main(int argc, const char * argv[]) { int a[3][6]; for (int i=0; i<3; i++ ...

  9. C语言指针怎么存二维数组,C语言怎么用指针代替二维数组

    1.设p是指向二维数组a[m][n]的指针变量,则有:int*p=a[0];//此时P是指向一维数组的指针.P++后,p指向a[0][1].2.如果定义int(*p1)[n];p1=a;p1++后,p ...

最新文章

  1. 近年推荐系统论文调查汇总
  2. Block Formatting Context
  3. python比较好的视频教程-哪里有免费的python3教程啊?最好是有例子的视频教学...
  4. python爬虫能干什么-python爬虫能干什么
  5. ROS学习笔记-ROS语音识别与语音输出[1]
  6. php判断数组下标,php判断json或者数组格式与给定格式是否一致
  7. 电影票上的字是怎么消失的?
  8. 亚马逊招聘,无人超市研发部门
  9. 软件工程之中期学习总结
  10. optionmenu 选项菜单
  11. 计算机导论在线阅读,计算思维与计算机导论.pdf
  12. 贪吃蛇小游戏(C语言)
  13. python结束函数_python函数结束
  14. oracle含有特殊字符查询,Oracle特殊字符查询
  15. nuc10fnh寒霜峡谷linux,英特尔(Intel)寒霜峡谷NUC10i5FNH使用体验
  16. 百度地图定位API+和风天气城市搜索API构成的天气定位模块
  17. Excel文件批量重命名
  18. 火影忍者中的天才七忍者
  19. Python学习笔记:1.2.8 字典
  20. 程序员脱发问题之个人经历

热门文章

  1. 全志T3(A40I)/T5(T507)性能对比,一代更比一代强
  2. final 有什么用?
  3. BCryptPasswordEncoder加密与MD5加密的区别
  4. 中国oracle ocm,【Oracle 10g OCM 巅峰之战】
  5. 双非渣本的实习秋招路
  6. 电脑光标突然变粗怎么调回来
  7. 关于PureMVC的个人理解与实现
  8. threejs导入模型为黑色原因
  9. 合格CTO需要具备的素质能力有哪些?
  10. Qt学习——利用QToolBox实现QQ好友列表