20165115 C语言学习心得

学习经验问题

如果将比大多数人好的大多数人定义为超过90%以上的话,我估计我除了高考的排名以外,没有什么可以达到这个标准了。然而这也并不能算得上是什么成功的技能,否则我也不会来到电科院了。至于其他的技能,一方面并没有一个合理的量化标准来进行衡量,另一方面这点数我心里还是有的。

但是若抛开这个衡量的标准,单单从掌握的还算可以这一方面来进行讨论的话,针对这几个问题还是可以进行一定的阐述的。相对而言,综合一下各种学习过的兴趣爱好,我觉得想在一项技能中获得成功,最重要的一点就是要保证自己有充足的兴趣和热情能够投入到这项技能当中。兴趣能够保证不让技能的获取变得枯燥,热情则能够保证投入充足的精力去掌握这项技能。想要精通一项技能,时间和效率都是必不可少的环节。只有通过大量且高效的训练才能达到最好的效果。这就和娄老师在博文中强调的有一些共同之处了。大量的训练是掌握一项技能不可或缺的一个步骤,但是如何对训练内容进行把控也是非常重要的一环。就像学习C语言时,虽然每天都能保证五六十行代码的训练量,到了后半个学期甚至可以达到每天近百行代码的量,但这当中有很多是为了刷分而刷的垃圾代码,真正有挑战性的可以达到良好训练效果的可能只有几十行。所以说兼顾效率和质量的训练才能称得上是有效的训练

C语言学习调查

先贴几段代码:

这个是进行数组复制和查找数组中是否含5的程序:

#include <stdio.h>
#include <stdlib.h>
#define N 5
int main()
{
    int a[N],b[N];
    int i,num;
    printf("Please enter the array you want:\n");
    for(i=0;i<5;i++)
    {
        scanf("%d",&a[i]);
    }
    for(i=0;i<5;i++)
    {
        b[i]=a[i];
    }
    for(i=0;i<5;i++)
    {
        printf("%d ",b[i]);
    }
    printf("\n");
    printf("Please enter the num you want to search:\n");
    scanf("%d",&num);
    for(i=0;i<5;i++)
    {
        if(a[i]==num)
        {
            printf("a[%i]is the num you‘re looking for",i);
            return 0;
        }
    }
    printf("Can‘t find the num");
    return 0;
}

这个是进行整数数组排序的程序:

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

int main()
{
    int a[10],t,i,j,choice;
    printf("Please enter the array you want:\n");
    for(i=0;i<10;i++)
    {
        scanf("%d",&a[i]);
    }
    printf("Please enter the order you want:\n1from small to large\n2from large to small\n");
    while(scanf("%d",&choice)!=EOF)
    {
        if(choice==1)/*从小到大排序*/
        {
            for(i=0;i<10;i++)
            {
                for(j=i+1;j<10;j++)
                {
                    if(a[i]>=a[j])
                    {
                        t=a[i];
                        a[i]=a[j];
                        a[j]=t;
                    }
                }
            }
            for(i=0;i<10;i++)
            {
                printf("%d ",a[i]);
            }
            return 0;
        }
        else if(choice==2)/*从大到小排序*/
        {
            for(i=0;i<10;i++)
            {
                for(j=i+1;j<10;j++)
                {
                    if(a[i]<=a[j])
                    {
                        t=a[i];
                        a[i]=a[j];
                        a[j]=t;
                    }
                }
            }
            for(i=0;i<10;i++)
            {
                printf("%d ",a[i]);
            }
            return 0;
        }
        else
        {
            printf("Error!\n");
        }
    }
    return 0;
}

这两个程序都是比较粗糙的程序,仅仅能够大致上完成题目中的要求。也没有对程序进行边界检测。而且这两个程序都应该可以进行进一步的简化。但仅从完成情况进行考虑的话,这两个程序的实现算是相当简单顺利的,基本都是一遍完成没有出现什么太大的问题。所以说虽然有一段时间没有使用C语言,对于它的使用还没有完全生疏。对于其它的几个问题的大致解答情况如下:

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

主要是通过大量的练习与答疑完成学习任务的。实验更多的侧重于阶段性测试,教材上的训练主要是完成了每一章练习题最后的学生身份信息系统。这一份作业可以说是一份质量相当高的训练题,这套题涵盖的知识点也可以说是非常全面。在学期末的时候,我在这一套题目上面花费了将近两周的时间,反复调试并不断地进行修改,最后这一个程序得到了徐老师的认可。而在完成这一个程序的过程中,我对我之前存在的问题有了很深刻的认识并改正了很多在编程上面的误区。这一段经历让我明白了,大量的训练着实重要,但有时候针对性强、质量高的练习更有四两拨千斤的奇效。这一道题目的三百多行代码可能比四五百行简单的代码都要有效得多。

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

因为当时并没有每天统计写出的代码数量,所以我只能大致的估算一下,可能有大概有四千到五千行代码。写过的代码中,只要没出现运行错误的应该都可以称得上是理解,从这个角度出发,大概能有百分之八十的理解效率。关于量与质的平衡问题,我认为这需要按情况分析。就像我在学习C语言的时候,作业系统的做题数量会计入最后的总评当中,但是每天能够投入的时间与精力毕竟有限,所以就需要刷一部分简单题目保证自己的分数不会太低。我当时的比例大概是简单题:难题=5:2,我认为这样的比例对于我来说是能够保证量的同时也能保证每天可以学到新的东西。

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

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

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

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

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

指针及其相关应用,徐老师在上课时无数次强调过其重要性,并且数次提到指针是C语言的精髓。因此在指针方面也对我们提出了较高的要求,虽然有一段时间没有系统回顾过这一方面的内容,但是上面提到的这几点还是可以分清的。

但是文件这一方面就有一些差距了。因为文件在学的时候并不是作为考点来学的,所以在掌握了基本的应用之后就没有深入使用了。所以这些还没有掌握的很好。

面向过程程序设计大概的意思就是以过程为主导,大致流程是分析程序流程之后用函数按步骤实现。解决问题的方法就是通过不同的函数实现不同的步骤,在需要用的时候将函数组合调用出来。

模块是指能够实现某一功能的子程序或程序段。没有写过多个源文件的程序。

关于“高内聚,低耦合”的有关内容我了解的并不是很多。

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

这一个要求我并不是非常理解,没有什么思路。是进入所有能找到的文件当中统计代码行数在进行叠加?如果是这样进行的话,以我目前对文件的掌握程度,我应该是编不出这个程序的。

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

断点一般是编辑器当中对程序的调试工具,通过设置断点可以从很长的程序的中间某一个部分进行运行,方便程序员进行错误检查。

这个图片中的红点处就是一处断点的设置。

对比C语言的学习,你对《Java程序设计》的学习有什么具体目标?如何通过刻意训练提高程序设计能力和培养计算思维?

Java程序设计的最终目标就是掌握Java这种语言,当然这只是一个很虚的难以量化的目标。我觉得一个可以量化的具体目标就是娄老师之前要求过得4000行代码,当然,不仅仅是数量问题,这4000行代码中,我认为至少有百分之七十的代码是有挑战性的代码。这样才能够真正学到东西。提高程序设计能力和培养计算思维方面,积极寻找针对性练习不失为一种很好的方法。

原文地址:https://www.cnblogs.com/zcy20165115/p/8361733.html

时间: 2024-10-13 06:08:06

20165115 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, 判断文件是否可读

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

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