20165234 预备做业2 学习基础和C语言基础调查

学习基础和C语言基础调查

1、技能学习经验及体会

  • 你有什么技能比大多人(超过90%以上)更好?

看到这个问题,我仔细想了想,好像的确没有什么特别出众的技能,可是我想到了许多我我的的爱好。html

我从小喜欢五子棋,而且对其有着本身的看法,可是一直未接受过棋类的培训,因此也只能算是一个爱好。多是这方面的学习与理解能力较强吧,象棋、斗地主都是我经过观看别人对战而学会的,水平也还行。同时我还很爱玩游戏,尤爱那种须要耐心的探索型游戏,以及须要思考的益智型游戏。java

体育运动方面,我从初一时开始接触排球,虽然只是在业余水平里很通常,可是每一年我都会不断参加训练,在初中、高中参加班级排球赛,乃至在大学参加院排球赛。高考完以后我才去学了游泳,在学会以后我依旧常常去游泳馆练习,上大学后我还保持着至少每周一次去游泳馆的频率。固然个人这些爱好并非比大多数人好,或者说只是很普通的爱好,可是对我而言是不错的锻炼身体的运动。算法

  • 针对这个技能的获取你有什么成功的经验?

就对这些技能的获取过程而言,论成功的经验,我以为能够归结为如下三点。编程

1. 对这些技能的热爱

我从小就对体育运动较为感兴趣,因此我愿意去接触、学习它们。从棋类游戏到益智类游戏,我都以为很是有意思,因此我愿意去进行思考并进行尝试。数组

2. 锲而不舍的练习

在学游泳时,我只用了五个课时,便掌握了蛙泳的全部要领,但接下来的五个课时都是练习。正所谓熟能生巧,通过后期不断地大量练习,才能真正掌握这一项技能。函数

3. 专业人士的指导

我不管是在学习排球仍是学习游泳时,都获得过老师和教练的指导。在习得一项技能的过程当中,老师和教练的指导是必不可少的。他们会根据个人及时反馈来告诉我正确的作法,能帮助我少走弯路。学习

  • 与老师博客中的学习经验有什么共通之处?

正如我在上一个问题里所回答的,我并无太出众的技能,可是我所拥有的这些技能/爱好,在获取的过程当中都有共通之处。编码

娄老师在博客《优秀的教学方法---作教练与作中学》中分享了一些在学习,工做,健身中的实践:spa

作中学(Learning by Doing)之背单词-扇贝网推荐:两年词汇量超过22000.设计

作中学之五笔输入法实践教程:经过一个月的训练学会五笔输入法

天天一万步,一周减十斤:经过五个月的训练减肥30斤

「作中学(Learning By Doing)」之乒乓球刻意训练一年总结: 经过一年的训练提高乒乓球技能。

娄老师经过本身的背单词经历五笔练习经历减肥经历乒乓球练习经历,详细地阐明了「作中学(Learning By Doing)」的重要性,而且总结了其中的要点:

学习是要思考的,仅仅实践是不够的;

技能是分层次的;

实践要具有必定的量才能引发质变;

技能的提高要「刻意训练」;

学习提高要有反馈。

个人学习经验也与这些要点有共通之处。“学而不思则罔,思而不学则殆”是咱们从小就听过的道理,也是我一直以来具有的学习准则,学习中的思考与实践缺一不可。而且,量变决定质变所以,要想掌握一项技能,大量的练习必不可少。而且,在学习过程当中时常作有针对性的练习,而且经过不断反馈来自我完善、自我提高。在下学期的学习中,我会争取巧妙地运用作中学(Learning By Doing)的方法,咱们即可以在实践中发现问题,解决问题,不断提高自我。

2、C语言学习调查

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

我在大一第一学期时曾经过网课的形式自学过一部分C语言,对C语言有了初步的了解。在第二学期的课堂上,老师是按照PPT来教学。由于对前面的部分比较熟悉,起初我有些松懈,但随着难度的加大,我必须在课堂上紧跟老师的思路,明白老师如何去分析一道题。同时,在课下对照课本多敲代码,多加练习。课本中有不少算法的基础实例,经过对教材进行细致研究,够获取新的知识,丰富本身的思路。

  • 目前为止估算本身写过多少行C代码?理解的状况如何?量变引发质变,如何平衡质和量?

说实话,我C语言学得很通常。平时我对练习并非特别重视,直到临近期末才开始大量地练习,我估计本身写过的代码大概有2000-3000行。我对C语言的理解程度也较为通常,前面的内容还相对熟悉,后面的不少知识点诸如指针和数组、结构体和共用体、文件操做,就比较陌生。我认为对于C语言,惟有大量的练习加深入的理解才可以掌握,因此量大才能引发质变。

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

概念 解释 表示
数组指针 指向数组的指针 (*p)[数组大小]
指针数组 数组内的元素都是指针,存储指针的数组 *p[数组大小]
函数指针 指向函数的指针包含函数的地址,调用函数 (*p)(参数)
指针函数 函数声明其返回值为某个指针时,给函数返回一个地址,用于须要指针的表达式 *p(参数)
  • 学过了C语言,你明白文件和流的区别和联系吗?如何区分文本文件和二进制文件?如何编程操做这两种文件?

我不明白,上网查询得知:

概念 解释
文件 是计算机管理数据的基本单位,是应用程序保存和读取数据的一个重要场所。
是字节序列的抽象概念,例如文件、输入/输出设备、内部进程通讯管道等。

文本文件与二进制文件的区别是逻辑上的,这二者只是在编码层次上有差别。文本文件是基于字符编码的文件,而二进制文件是基于值编码的文件。所以,文本文件与二进制文件的区别仅仅是编码上的不一样,两者无本质区别。

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

面向过程程序设计,就是分析出解决问题所须要的步骤,而后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就能够了。简单来讲,就是在设计任务时要先明白本身要作什么,而后分红每一个小任务完成,再整合到主线中完成。

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

在C语言里可用函数实现各个功能,做为不一样的模块,而后在主函数中调用各个功能模块(函数),这样在维护或升级程序时就能够只关注某个模块,能够简化编程问题。我还没写过多个源文件的程序。

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

我不知道。经过上网查阅资料得知:

概念 解释
内聚性 又称块内联系。指模块的功能强度的度量,即一个模块内部各个元素彼此结合的紧密程度的度量。若一个模块内各元素(语名之间、程序段之间)联系的越紧密,则它的内聚性就越高。
耦合性 也称块间联系。指软件系统结构中各模块间相互联系紧密程度的一种度量。模块之间联系越紧密,其耦合性就越强,模块的独立性则越差。模块间耦合高低取决于模块间接口的复杂性、调用的方式及传递的信息。
高内聚 一个软件模块是由相关性很强的代码组成,只负责一项任务,也就是常说的单一责任原则。
低耦合 一个完整的系统,模块与模块之间,尽量的使其独立存在。也就是说,让每一个模块,尽量的独立完成某个特定的子功能。模块与模块之间的接口,尽可能的少而简单。若是某两个模块间的关系比较复杂的话,最好首先考虑进一步的模块划分。这样有利于修改和组合。

——引用自百科《高内聚低耦合

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

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

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

void main()
{
    int n,i,j,a[N],b[N];
    printf("Input n:");
    scanf("%d",&n );
    printf("A:\n");
    for(i=0; i<n; i++)
    {
        scanf("%d",&a[i]);
    }
    printf("B:\n");
    for(j=0; j<n; j++)
    {
        b[j]=a[j];
        printf("%d",b[j]);
    }
}

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

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

void main()
{
    int a[20],i,b=0;
    for(i=0; i<20; i++)
    {
        scanf("%d",&a[i]);
    }
    for(i=0; i<20; i++)
    {
        if(a[i] == 5)
        {
            b=1;
            printf("第%d个数字是5",i);
        }
    }
    if(b == 0)
    printf("没有数字5\n");
}

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

#include <stdio.h>
#include <stdlib.h>
//从小到大
void main()
{
    int a[10];
    int i,j,p;
    printf("Input 10 numbers:\n");
    for(j=0; j<10; j++)
        scanf("%d",&a[j]);
    printf("\n");
    for(i=0; i<9; i++)
        for(j=0; j<9-i; j++)
            if(a[j]>a[j+1])
            {
                p=a[j];
                a[j]=a[j+1];
                a[j+1]=p;
            }
    for(j=0; j<10; j++)
        printf("%d\n",a[j]);
    printf("\n");
}


#include <stdio.h>
#include <stdlib.h>
//从大到小
void main()
{
    int a[10];
    int i,j,p;
    printf("Input 10 numbers:\n");
    for(j=0; j<10; j++)
        scanf("%d",&a[j]);
    printf("\n");
    for(i=0; i<9; i++)
        for(j=0; j<9-i; j++)
            if(a[j]<a[j+1])
            {
                p=a[j];
                a[j]=a[j+1];
                a[j+1]=p;
            }
    for(j=0; j<10; j++)
        printf("%d\n",a[j]);
    printf("\n");
}
  • 写一个程序,统计本身C语言共写了多少行代码

个人想法是用某个函数,能够统计整个文件目录下的全部程序代码的行数,并将全部程序代码行数汇总。限于水平,目前不会写。

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

断点就是程序中断的地方。在某行代码处设置断点后,调试程序时,程序运行到该行代码时会自动中止,而后就能够在这进行逐步调试。

关于这部分我有些遗忘,在网上搜索资料时发现一篇不错的博客可参考:设置断点调试程序

图:设置断点

  • 每章提出一个问题

第一章:保存源文件时需注意什么(怎样保存)?

第二章:C语言的数据类型和数组,与Java中的是否相通?数组的引用这部分不太懂。

第三章:如何利用复合语句进行运算?

第四章:类方法和实例方法的区别,类和对象在使用上的区别?

......(不懂的地方太多了)

我自己的C语言基础通常,越日后面看越费劲,我也对PPT里的不少内容只知其一;不知其二,就不笼统地提出问题来糊弄了。

在从此的学习中,我会经过上手操做与实践,在实践中加深理解,解决全部遇到的这些问题。

  • 对比C语言的学习,你对《Java程序设计》的学习有什么具体目标?如何经过刻意训练提升程序设计能力和培养计算思惟?如何经过“作中学”实现你的目标?

在接下来的学习当中,我应该端正学习态度。个人具体目标就是,养成天天练习编程的习惯,将学习Java做为天天学习生活中的一部分。能够根据天天的状况不一样来分配任务量,不管或多或少,天天都要写代码。而且,每次做业争取独立按时完成,多和班里的大佬交流讨论但不抄袭,有问题能与同窗们和老师讨论。每一节课都认真听,每一次做业也都认真完成,及时查漏补缺。在具有基础知识的条件下,作更多的拓展以增长本身的见识。

我但愿在学习Java时,思考与实践并行,努力理解课本上的大部分知识。而且在平时的学习中就一步到位,对学习中薄弱的地方进行刻意训练,不把遇到的问题堆到最后。而且,常常看看娄老师的博客,汲取经验,运用“作中学”的方法鞭策自我。

相关文章
相关标签/搜索