学习C语言以及C语言基础调查
学习声乐的心得
- 你有什么技能比大多人(超过90%以上)更好?
就我个人而言,在所有的兴趣之中,做得比较好的应该属于声乐。
- 针对这个技能的获取你有什么成功的经验?
我对于声乐处始于兴趣,成功的经验谈不上, 不过为了提高自己演唱的技巧,我确实有本人的几点拙见。
首先,兴趣是最好的老师,它会给你带来探索和练习的动力;
其次,为了提高自己的水平,模仿与借鉴是不可避免的;
最后,经常与相近水准的人交流,因为处于同一位置,对彼此的困惑与瓶颈可以有更深的了解。
- 与老师博客中的学习经验有什么共通之处?
我阅读过娄老师的博客优秀的教学方法---做教练与做中学,并且观看了电影卡特教练的简介。
实践要具备一定的量才能引起质变。
我十分赞同楼老师的观点,以声乐表演为例,我曾经在学校选修过李玲老师的
声乐表演艺术这门课程,李老师也说过,想要提高自己的演唱水平仅仅靠上课时不够的,他需要重复性的大量练习,才能质上的提升。以马克思基本原理——量变引起质变,来看这也是合理。
C语言基础调查
Q:你是怎么学习C语言的?(作业,实验,教材,其他),与你的高超技能相比,C语言的学习有什么经验和教训?
A:关于C语言的学习,坦诚的说,我并没有好好听课,大部分的学习靠的的是自学课本内容,做题,以及搜索引擎上的内容。对于C语言,我最大的教训,也可以说遗憾,就是没有彻底理解指针,而指针又是C语言的精髓,我对此十分后悔。所以,在学习JAVA的过程中我不会再有任何含糊。
Q:目前为止估算自己写过多少行C代码?理解的情况如何?量变引起质变,如何平衡质和量?
A:C代码的练习行数在预备作业一中也有提到过,据不完全统计应该有2000+行。所学的基础内容掌握较为牢固,但对于C语言指针的运用不慎熟练。
关于量变与与质变的问题,我觉得在接触到一个新的领域时,应以量为主,通过大量的训练,迅速提高自己。在达到一定的瓶颈后应以量为辅,多思考,来突破自我。
Q:学过了C语言,你分的清数组指针,指针数组;函数指针,指针函数这些概念吗?((x[4])())[4]这个声明中的x是什么东东?
数组指针:指的是数组名的指针,即数组首元素地址的指针。即是指向数组的指针。
指针数组:数组元素全为指针的数组称为指针数组。
(两者的区别就想像一把钥匙连着很多线和一根线上串了很多钥匙)
函数指针:函数指针是指向函数的指针变量。 因此“函数指针”本身首先应是指针变量。
指针函数:指针函数是一个函数,返回类型是一个指针。
x不是什么东东,应该是个数组。
Q:学过了C语言,你明白文件和流的区别和联系吗?如何区分文本文件和二进制文件?如何编程操作这两种文件?
A:学过了C语言我也不会,所以我网上学习了一下。
- 文件:文件是计算机管理数据的基本单位,同时也是应用程序保存和读取数据的一个重要场所。
特性:每个文件都有文件名、文件所在路径、创建时间及访问仅限等属性。 - 流:流是字节序列的抽象概念,例如文件、输入/输出设备、内部进程通信管道等。流提供一种向后备存储器写入字节和从后备存储器读取字节的方式。除了和磁盘文件直接相关的文件流以外,流还有多种类型。流可以分布在网络中、内存中或者是磁带中。
所以可以说,文件若是没有结构,则为流文件,属于流。有结构的每个单位被称作一个逻辑记录。
A:文本文件是特殊的二进制文件两者并无本质差异,区别在于打开这个文件的程序在对其内容的解释上。
- 关于编程:文本文件的编程是使用printf,根据ASIC II码作为储存规则,而二进制文本则是fwrite,不根据ASIC II码。若是将字符串“HELLO”写入硬盘中,两种文件执行结果相同且所占字节数相同;但两者最大的区别就是对数字的处理上,例如数字9,用文本文件写入硬盘中只需一个字节,应二进制文件9为1001,写入硬盘中需要4个字节。
Q:学过了C语言,你知道什么叫面向过程程序设计吗?它解决问题的方法是什么?
面向过程程序设计其实是一种C语言设计思想,分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用。
Q:在C语言里面,什么是模块?你写过多个源文件的程序吗?
A:就我个人理解,模块相当于一个黑盒子,完成编程后我就可以不去管他的代码,只需要掌握它的I/O就可以。一个较复杂的工程可以模块化,根据面向过程程序设计的思想,分析解决问题所需要的步骤,将其模块化。
我没有写过多个源文件的程序,不过我参考了如何在一个源文件中调用另一个源文件的函数,大致了解了一下,在完成在完成这篇博客后,我会去实践证实,如有需要会向老师请教。
Q:学过了C语言,你知道什么是“高内聚,低耦合”吗?这个原则如何应用到高质量程序设计中?
耦合性:也称块间联系。指软件系统结构中各模块间相互联系紧密程度的一种度量。模块之间联系越紧密,其耦合性就越强,模块的独立性则越差。模块间耦合高低取决于模块间接口的复杂性、调用的方式及传递的信息
内聚性:又称块内联系。指模块的功能强度的度量,即一个模块内部各个元素彼此结合的紧密程度的度量。若一个模块内各元素(语名之间、程序段之间)联系的越紧密,则它的内聚性就越高。
因此高内聚低耦合的意思是模块内程序联系紧密,模块之间相互独立,这也是程序模块化黑盒子的思想体现。在运用到高质量的程序设计时,应遵循“高内聚,低耦合”的思想,降低模块之间的联系,提高模块内各元素的联系性。
Q:学过了C语言,你如何把数组A的内容复制到数组B中?如何查找整数数组A中有没有数字5?如何对整数数组A进行排序(从小到大,从大到小)?写出相应的程序。
#include <stido.h>
#include <string.h>
#define N 50
main()
{
char a[N],b[N];
printf("string a is:");
gets(a);
memcpy(a,b,sizeof(a));
puts(b);
}
#include <stdio.h>
#include <string.h>
main()
{
int a[5],i,flag=0;
int num;
for(i=0;i<=4;i++)
{
scanf("%d",&a[i]);
{
for(i=0;i<=4;i++)
{
if (a[i]==5)
{
printf("有数字5");
}
}
}
#include <stdio.h>
int main()
{
int a[6];
int i;
for (i = 0; i < 6; ++i)
{
scanf("%d", &a[i]);
}
int j, k;
for (i = 0; i < 6; ++i)
{
k = i;
for (j = i+1; j < 6; ++j)
{
if (a[k] > a[j])k = j;
}
if (k!=i){
int t = a[k];
a[k] = a[i];
a[i] = t;
}
}
for (i = 0; i < 6; ++i)
{
printf("%d ", a[i]);
}
printf("\n");
return 0;
}// 从小到大升序
#include <stdio.h>
int main()
{
int a[6];
int i;
for (i = 0; i < 6; ++i)
{
scanf("%d", &a[i]);
}
int j, k;
for (i = 0; i < 6; ++i)
{
k = i;
for (j = i+1; j < 6; ++j)
{
if (a[k] < a[j])k = j;
}
if (k!=i){
int t = a[k];
a[k] = a[i];
a[i] = t;
}
}
for (i = 0; i < 6; ++i)
{
printf("%d ", a[i]);
}
printf("\n");
return 0;
}//从大到小降序
Q:写一个程序,统计自己C语言共写了多少行代码。
参考了一些网上的资料,还没有一个大致的想法,会单独找一个时间发出来。
Q:你知道什么是断点吗?给出自己调试程序的例子。
断点就是在程序设计的过程中用来对部分程序内容进行调试的手段。
每章的问题
- 1.如何安装JDK,以及系统环境编译是什么,反编译如何进行?
- 2.类型转换算法具体如何进行,java中的基础与c语言基础内容有什么细微的差异?
- 3.没什么问题,好像与c语言内容差不多。。
- 4.子类与继承有什么用?instanceof的用法?程序设计提倡的开-闭原则是什么?
- 6.接口的口体有什么方法,
- 7.为什么叫做匿名类,异常类,断言是什么?
- 8.string和stringbuffer类有什么不同,这么多类别需要如何有技巧性的掌握?
- 9.组件类和容器类的异同,java处理事件的模式是什么?
- 10.inputstream和outputstream创建对像的具体内容。
- 11.JDBC技术的用处?
- 12.线程是什么,wait方法怎么做?
- 13.URL类,RMI是什么?
- 14.网站设计中的图形音乐也是用java设计的吗?
- 15.泛型类与集合框架的定义以及具体用法。
关于JAVA学习
对于新学期java的学习我觉得充满了挑战但也不乏趣味,所以我新学期的目标就是在快乐之中出色的掌握java。
对于自身水平的提高,就像我上文中提到的那样:在接触到一个新的领域时,应以量为主,通过大量的训练,迅速提高自己。在达到一定的瓶颈后应以量为辅,多思考,来突破自我。这也体现了做中学的意志。学而不思则罔,思而不学则殆,做中学,学中思,我相信一定可以的掌握java这么课程。