20165316 技能学习心得与c语言学习

20165316 技能学习心得与c语言学习

一、技能学习经验

我会打乒乓球,在中国,我只能说我“会”打,至于“比大多数人更好”我不敢断言,因为我无时无刻不感受到乒乓球圈子远比我想象的要深。但是,我觉得乒乓球学习的过程对我今后的学习有所启发,我希望通过总结给大家,最主要还是给自己,一个方向。

像乒乓球这类运动,主要是反复练习,我记忆最深刻的是小学一年级,刚刚能在台子上打球,教练就让我练习多球,即一次使用一个动作套路连续打200到300个球。之后每次练球都必须练习基本功。可以毫不夸张的说,基本功贯穿了一个乒乓球运动员的一生。但是,很多人会发现乒乓球运动员在比赛时经常为了救球做出一些“非套路”的动作,很多经典的照片都记录了他们的精彩瞬间,那么,是什么让他们能够打出这些精彩的对抗呢?答案很简单,是平时基本功训练形成的“球感”。最终,运动员们又不拘泥于“型”,而是追求更加内在的东西——控球能力。据说国家级运动员可以精确到把球打到一个硬币上,可见控球能力,换句话说就是自我控制能力,更为重要。这一点与娄老师在乒乓球训练总结中所叙述:“任何的学习都是在增强人的可控能力”是相同的。

另外,在打乒乓球的这十几年里,我对乒乓球的态度从“被动接受”变成了“主动学习”,很显然,反复的训练带来的不一定是枯燥和无趣,反而随着训练难度的提高和对自身要求的严格,我逐渐感受到挑战自我的乐趣。而这种乐趣,是科学的训练方法所致:每个目标都是可以达到,但有一定难度的。这样,我就不会放弃或者自大,日积月累,技术水平自然有所提升。这一点娄老师在乒乓球训练总结中也有论述。其实,与不同的对手对打也有这种效果:能够看到自己的不足,进而进行自我的,或者有教练帮助的反思和改进,最终实现自我提升。此时,比赛的胜负已经变得不再重要了。

二、c语言学习调查

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

我学习c语言主要是上课听老师讲,课下在网上平台练习,遇到不会的问题用百度查答案,将答案程序复制下来,进行分析和学习。在c语言学习过程中,我在自我学习方面比较欠缺,自认为掌握老师要求所学就可以,考试通过就可以,自我满足,没有想要进一步学习的欲望和动力,导致我c语言的学习一直停留在舒适区,简单程序重复化,没有尝试过挑战自己,没有主动探索c语言更多的功能。简言之,我的c语言基础不够牢固,对计算机语言的理解还不够深刻。

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

代码数量我在上一篇博客中也提到过,大概3000行左右,基本自己写过的都理解了(现在也快忘光了)。由此可见,没有持之以恒的练习,任何技能都会退步。所以关于质和量,我认为应该循序渐进。像我这种普通学生,理解示例程序之后不进行再创造是不行的。就是说我起码要写2到3个类似程序(解决方法类似)才能够基本掌握。所以,在学完一个知识点之后,我必须自己试一下能不能使用,这就是量变的过程;然后再考虑更难的程序,即质变。我觉得量变与质变数量上2:1到3:1最为合适。用的时间上大概要反过来量变比质变大概1:2到1:3比较合适。

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

这些概念主要是看名词吧,即“指针”、“数组”、“指针”、“数组”。所以数组指针和函数指针本质上是一个指针,分别指向数组中的一个地址和某个函数的地址;而指针数组顾名思义是一组地址;指针函数就是返回指针——一个地址的函数。

参考:百度的解释,数组指针和指针数组函数指针和指针函数

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

惭愧,不知道。但是我查到了文本文件和二进制文件的区别;二者的编程操作似乎是相同的,只是写入读取时规则不同,参阅c语言里面文本文件和二进制文件有什么区别,从侧面印证了二者的编码方式不同。

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

面向过程顾名思义就是以过程为中心,主要关注一句话里的“动词”的解决问题办法。把需要的步骤一步一步实现。

参考:杨静远学长的博客知乎的解答

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

我个人理解为把一个程序的不同步骤拆分成一个一个的模块,分别调用,进而实现预期效果。惭愧的是,我没有写过多个源文件的程序。

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

根据之前对钱老师的话的模糊记忆和我的理解,“高内聚,低耦合”是指一个程序的各个模块之间的联系尽量少,模块的泛用性尽量高的一种状态。在高质量程序设计中,我们应尽量使用现成的函数和模块,用尽量少的语言将几个模块连接起来,达到预期的目的。

参考:百度百科

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

解答如下

#include <stdio.h>
#include <stdlib.h>

void maxnumber(int a[30],int n)//从大到小排序
{
    int i, j, max, temp;
    for(i=0; i<n; i++)
    {
        max = i;
        for(j=i; j<n; j++)
        {
            if(a[max]<a[j])
            {
                max=j;
            }
        }
        if(max!=i)
        {
            temp=a[i];
            a[i]=a[max];
            a[max]=temp;
        }
    }
}
void minnumber(int a[30],int n)//从小到大排序
{
    int i, j, min, temp;
    for(i=0; i<n; i++)
    {
        min = i;
        for(j=i; j<n; j++)
        {
            if(a[min]>a[j])
            {
                min=j;
            }
        }
        if(min!=i)
        {
            temp=a[i];
            a[i]=a[min];
            a[min]=temp;
        }
    }
}
int main()
{
    int i,n,a[30],b[30];
    printf("how many numbers?\n");
    scanf("%d",&n);
    if(n>30)
    {
        printf("too many!\n");
    }
    else
    {
        printf("please input numbers:\n");
        for(i=0; i<n; i++)
        {
            scanf("%d",&a[i]);
            b[i]=a[i];//数组内容复制
        }
    }
    maxnumber(a,n);
    for(i=0; i<n; i++)
    {
        printf("%d ",a[i]);
    }
    printf("\n");
    minnumber(a,n);
    for(i=0; i<n; i++)
    {
        printf("%d ",a[i]);
    }
    return 0;
}

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

惭愧,不会写,只能放一段我改过的别人的代码。

#include <stdio.h>
#include <stdlib.h>
int main(int argc, char* argv)
{
    FILE* rf = fopen("f:\\main.txt","r");
    char a[1024][128];
    int i=0;
    while(fgets(a[i],128,rf))i++;
    int n=i;
    printf("行数:%d\n",n);
    fclose(rf);
    i=0;
    system("pause");
    return 0;
}

这个代码可以统计一个txt文档当中的代码,但是每行必须小于128字节,而且无法统计是否会溢出,有些文件(比如这里的main.txt是我用图片base64编码得到很长一段代码),就会导致崩溃,可以说只能进行简单的统计工作。

参考:百度知道

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

断点就是程序调试是自动中断的地方,比如说我在调试第9问的程序时查找崩溃的原因就是把断点设置在主程序第五行的时候程序崩溃,表明在打开文件进行循环时数据溢出导致崩溃。

JAVA学习的目标与途径

和我之前在第一篇博客中写的一样,在课程内容的学习中,基础上,我希望能够掌握这门语言,并使用它编写简单的应用程序;深层次上,既然JAVA被称作“面向对象的程序设计”,我认为相对c来讲,一定有它的独到之处,在思维方式上也一定有所不同,我希望能够了解掌握这门计算机语言的设计思路和思维模式。从而能够举一反三,触类旁通。

我认为,我应该勇敢地从“舒适区”走出来:在学习上,勇于挑战难题,平时多关注行业前沿动态,在博客园这个平台上,利用它丰富的资源,挑战难关,寻求解答;在生活中,调整自己的心态,磨练自己的意志,挤出更多时间用以提升自我价值,进而养成良好习惯,使终身受益。

写程序主要是实践,光看书是不可能有所突破,娄老师在做中学一文中提到“不光要动手,还要理解背后的原理;不光要会用工具,还要理解支撑的理论”“学习提升要有反馈”。谁都想成为“专家”,但是最终实现梦想的能有几人?因此,我计划这学期充分利用时间,进行有益的、大量的学习,在前期尽量积累经验,通过博客园增长自己的见识,让自己不至于陷入“疲于应付”的境地中,同时,通过多种方式与老师、同学们交流,甚至可以通过网络学习一些“大神”的操作。简而言之,仰望星空,脚踏实地,相信在老师“做中学”的正确思想引导下,我能够实现目标。

原文地址:https://www.cnblogs.com/treebeard123/p/8372903.html

时间: 2024-11-05 11:31:56

20165316 技能学习心得与c语言学习的相关文章

20165334 学习基础与c语言学习心得

学习基础和c语言学习心得 一.技能学习 ??我觉得在男生中,我做饭应该算不错的.我是小学四年级开始学做饭,从刚开始的学煮饭,到后来的蒸馒头,到最后的炒家常菜真的很有成就感.首先,我觉得做任何事情兴趣很重要,因为小时候喜欢美食,所以特别喜欢做东西给别人吃:其次我觉得别人的鼓励也非常重要,它会是你坚持下去的动力.因为受到爸爸对我做饭的鼓励,做晚饭从一开始的西红柿鸡蛋面到后来的三菜一汤,虽然做饭花的时间越来越多,但自己的成就感也越来越强.看着别人吃自己做的东西,自己感到很开心.所以这和娄老师下面这段话

黑马程序员——c语言学习心得—— 指针

黑马程序员——c语言学习心得—— 指针 -------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 1,打开文件fopen(文件名,打开方式);例如:FILE *fp = fopen("a1","r");  返回的是文件的指针(文件在内存缓冲区的首地址)fopen函数反回值 是指向 a1文件的指针,通常赋值给一个指针变量关于文件名a1 也可以是一个“路径+文件名”   c:\abc.txt----------------

黑马程序员——c语言学习心得——位运算符

黑马程序员——c语言学习心得——位运算符 -------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 位运算符C语言提供了六种位运算符: & 按位与 | 按位或 ^ 按位异或 ~ 取反 << 左移 >> 右移 1. 按位与运算 按位与运算符"&"是双目运算符.其功能是参与运算的两数各对应的二进位相与.只有对应的两个二进位均为1时,结果位才为1 ,否则为0.参与运算的数以补码方式出现. 例如:9&

黑马程序员——c语言学习心得—— 电影购票系统

黑马程序员——c语言学习心得——  电影购票系统 -------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 1,基础信息类 #import <Foundation/Foundation.h> #import "Cinema.h" void buyMovieTicket(){ //购买电影票 //调用 电影院的类的 buyTicket的方法 //                  [[Cinema alloc] init]; C

黑马程序员——c语言学习心得——函数传递二维数组

黑马程序员——c语言学习心得——函数传递二维数组 -------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 一.定义指针的时候一定要初始化.   变量定义的时候给变量初始化,这是保证不出错的一个很好的习惯.尤其是在指针的使用上,如果我们没有给指针初始化,就会出现野指针,该指针的指向并不是我们所希望的,一旦错误的释放了这个指针,就会发生内存的访问.那么如何初始化指针变量呢,一般有以下几种方法:   1.初始化空指针   int* pInteger=N

黑马程序员——oc语言学习心得—— 属性声明和赋值

黑马程序员——oc语言学习心得—— 属性声明和赋值 -------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 1,在oc中所有类继承与终极父类Object2,声明字符变量采用N是string  *_xxx 实例变量一般以下划线开头3,在oc中方法以+ -号区分 -号开头是实例方法或对象方法  +号开头是类方法  前置用对象调用 后者用类名调用4,在xcode4以后声明@property 不用在写@snysize  自动生成get.set方法5,属性

黑马程序员——c语言学习心得——位运算符a

黑马程序员——c语言学习心得——位运算符 -------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- c语言中经常需要通过函数传递二维数组,有三种方法可以实现,如下: 方法一, 形参给出第二维的长度. 例如: #include <stdio.h>void func(int n, char  str[ ][5] ){int i;for(i = 0; i < n; i++)  printf("/nstr[%d] = %s/n"

黑马程序员—oc语言学习心得—block

黑马程序员—oc语言学习心得—block -------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 1,程序一般用typedef定义一个block类型 然后调用 typedef void(^xxx)(); 可使用助记符 inlineblock 2,Block内部可以访问外部变量:默认情况下,Block内部不能修改外部的局部变量 给局部变量加上__block关键字,则这个局部变量可以在block内部进行修改. 3,block的作用: 利用block封

黑马程序员——oc语言学习心得----NSFileManager

黑马程序员——oc语言学习心得----NSFileManager -------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 自己总结了下NSFileManager的简单几个用法 : // 首先要创建文件管理器 NSFileManager *fm=[NSFileManager defaultManager]; 1,判断文件是否存在 fileExistsAtPath: 2,判断文件是否是目录 fileExistsAtPath: 3, 判断文件是否可读