20165201 學習基礎和C語言基礎調查

#20165201 學習基礎和C語言基礎調查

技能

  個人一項拿得出手的技能是繪畫,從 5 歲學到了 13 歲。 國畫、素描、水粉、水彩都包括在內,雖然水平不一,可是繪畫技巧是相通的。
  8 年時間,它帶給了我不少,最重要的一點,就是對<span style="color:red">基本功</span>的掌握。舉個例子,我剛學國畫的時候,趙XY老師讓咱們用小白雲畫同心圓,從最內圈開始不間斷,直到畫完最外圈,宣紙上要畫滿,天天最少一張。固然,前幾張的圓都慘不忍睹,直到過了一個月左右,纔好看些。趙老師的目的其實不是讓咱們練習畫圓,而是讓咱們充分掌握毛筆的筆鋒和手感,練的時間久了,這些天然就有了。這和婁老師博客中提到的是一樣的道理:html

套路(Kata)指針對某一種特定技術或技能進行重複性的練習,從而將其熟練掌握。這個概念借鑑於武術,指的是能夠獨自或多人共同練習的一系列動做、招式。
體育運動的初學者練習時候都須要重複動做,好比「學習打乒乓球時」要練習揮拍,揮拍成千上萬遍以後動做就會定型,也就是教練常說的「肌肉有了記憶能力」,之後實戰中能夠不假思索地作出來。編程

-- 引用自婁老師優秀的教學方法---作教練與作中學數組

  可是若是沒有<span style="color:red">興趣</span>做爲驅動,也就不會有日復一日的練習。個人爺爺在我很小的時候,教我用毛筆畫蝦,興趣大概就是從那時候培養起來的吧。
  說實話,我也有一段時間遇到瓶頸以爲堅持不下去了,有過放棄的念頭,然而正如婁老師所說:函數

現實生活中,只有極少部分人有意志力能長時間大量重複枯燥的基礎練習。半途而廢是許多人都常常面臨的事情。學習

-- 引用自婁老師作中學之乒乓球刻意訓練一年總結
  可否從入門到精通,就看有沒有<span style="color:red">毅力</span>堅持下來,將量變積累成質變。 想成功又不去付出,是毫不可能的。ui

  此外,趙老師能給個人最大幫助,就是課上在我練習的時候可以及時糾正我手法上的錯誤。這也就是婁老師所說的<span style="color:red">及時反饋</span>。我在畫鳥雀時有個別人都不會出現的毛病,我畫出來的全部鳥都長得同樣**>_<...**後來在趙老師屢次手把手的糾正下最終克服了。能夠說,僅憑本身是很難作到的。編碼

Java

  我認爲學Java也應當如此。spa

  • 首先克服對 Java 的抵觸心理
  • 簡略看一下整本書大體要學的內容
  • 萬事開頭難,嘗試編寫第一個 hello world 程序
  • 繼續學習以後的內容,對於每一個知識點要<span style="color:red">反覆練習</span>
  • 出現問題要及時向老師或同窗提問,直到問題獲得解答

C語言基礎

  • Q:你是怎麼學習C語言的?(做業,實驗,教材,其餘),與你的高超技能相比,C語言的學習有什麼經驗和教訓?
    A:去年寒假我買了一本C語言的書提早自學的,開學後又用教材、做業系統進行鞏固。期間編寫了2個版本的成績管理系統,綜合性很強,收穫很大。C語言的學習就是反覆練習的過程,當咱們編寫綜合性強的程序時,不少語句都是不須要停下來動腦子想的,好比冒泡排序、結構體等。設計

  • Q:目前爲止估算本身寫過多少行C代碼?理解的狀況如何?量變引發質變,如何平衡質和量?
    A:我大概寫過5000行以上的C代碼。量變到達足夠程度才能引發質變,可是要注意的是,必定要把握度,好比練習選擇排序,當已經可以熟練運用時,就基本表明掌握了,沒必要再刻意的反覆練習。我認爲質變的標準是:可以在編寫一個程序時不假思索的寫出這些語句。指針

  • Q:學過了C語言,你分的清數組指針,指針數組;函數指針,指針函數這些概念嗎?
    A:分得清啊。
    數組指針是一個指向數組的指針,本質是指針;
    數組指針:(* p)[數組大小]
    指針數組是一個包含若干個指針的數組,本質是數組;
    指針數組:* p[數組大小]
    函數指針是一個指向函數的指針,本質是指針;
    函數指針:(* p)(參數)
    指針函數是一個返回值爲指針的函數,本質是函數。
    指針函數:* p(參數)

  • Q:學過了C語言,你明白文件和流的區別和聯繫嗎?如何區分文本文件和二進制文件?如何編程操做這兩種文件?
    A:程序在和文件交互時,是經過數據流的形式進行的。打開文件時,數據流先從磁盤到緩衝區,再從緩衝區到程序,關閉文件時正相反。
    文本文件是以某種經常使用字符編碼方式編碼的,定長的,好比 ASCII ;而二進制文件是用自定義的編碼方式編碼的,不定長,打開二進制文件會顯示一堆亂碼。但它們在物理層面上都是二進制編碼。我沒有實際操做過這兩種文件......

  • Q:學過了C語言,你知道什麼叫面向過程程序設計嗎?它解決問題的方法是什麼?
    A:C語言是<span style="color:red">面向過程</span>的,而Java是<span style="color:red">面向對象</span>的。
    舉個例子:
    <span style="color:red">面向過程</span>是定義三個事件:吃早飯、吃午餐、吃晚飯。再肯定由 Bob 來作,也就是參數是 Bob ,重點是把過程寫出來;
    而<span style="color:red">面向對象</span>是先定義 Bob ,再肯定他要作什麼,重點是這個對象怎麼作。

  • Q:在C語言裏面,什麼是模塊?你寫過多個源文件的程序嗎?
    A:模塊就是可以實現必定功能的源文件。我尚未寫過過個源文件的程序...

  • Q:學過了C語言,你知道什麼是「高內聚,低耦合」嗎?這個原則如何應用到高質量程序設計中?
    A:高內聚就是每一個模塊獨立性強,所實現的功能具備專注性,內部各要素緊密結合;低耦合就是各個模塊之間的聯繫弱,接口較爲簡單,相互影響程度小。

  • Q:學過了C語言,你如何把數組A的內容複製到數組B中?如何查找整數數組A中有沒有數字5?如何對整數數組A進行排序(從小到大,從大到小)?寫出相應的程序。
    A:
      一、把數組A的內容複製到數組B

#include<stdio.h>
#include<string.h>
#define N 100
int main()
{
    char A[N]={"afisniuiksnfinai"},B[N];
    memcpy(B,A,strlen(A));
    printf("%s\n",B);
    return 0;
}

  二、查找整數數組A中有沒有數字5

#include<stdio.h>
int main()
{
    int A[20]={3,7,4,1,8,223,65,23,65,8,5,32,78,12,16,861,34,5,57,19};
    int i;
    for(i=0;i<20;i++)
    {
        if(A[i]==5)
        {
            printf("數組中有 5 !\n");
            break;
        }
    }
    return 0;
}

三、對整數數組A進行排序(從小到大,從大到小)
<span style="color:red">冒泡排序</span>

#include<stdio.h>
void Sortup(int N[]);
void Sortdown(int N[]);
int main()
{
    int i;
    int A[20]={3,7,4,1,8,223,65,23,65,8,5,32,78,12,16,861,34,5,57,19};
    Sortup(A);
    for(i=0;i<20;i++)
    {
        printf("%d ",A[i]);
    }
    Sortdown(A);
    for(i=0;i<20;i++)
    {
        printf("%d ",A[i]);
    }
    return 0;
}
void Sortup(int N[])
{
    int i,j,temp;
    for(i=0;i<20;i++)
    {
        for(j=i+1;j<20;j++)
        {
            if(N[i]>N[j])
            {
                temp=N[i];
                N[i]=N[j];
                N[j]=temp;
            }
        }
    }
}
void Sortdown(int N[])
{
    int i,j,temp;
    for(i=0;i<20;i++)
    {
        for(j=i+1;j<20;j++)
        {
            if(N[i]<N[j])
            {
                temp=N[i];
                N[i]=N[j];
                N[j]=temp;
            }
        }
    }
}

<span style="color:red">選擇排序</span>

#include<stdio.h>
void Sortup(int N[]);
void Sortdown(int N[]);
int main()
{
    int i;
    int A[20]={3,7,4,1,8,223,65,23,65,8,5,32,78,12,16,861,34,5,57,19};
    Sortup(A);
    for(i=0;i<20;i++)
    {
        printf("%d ",A[i]);
    }
    Sortdown(A);
    for(i=0;i<20;i++)
    {
        printf("%d ",A[i]);
    }
    return 0;
}
void Sortup(int N[])
{
    int i,j,k,temp;
    for(i=0;i<19;i++)
    {
        k=i;
        for(j=i+1;j<20;j++)
        {
            if(N[k]>N[j])
            {
                k=j;
            }
        }
        if(i!=k)
        {
            temp=N[i];
            N[i]=N[k];
            N[k]=temp;
        }
    }
}
void Sortdown(int N[])
{
    int i,j,k,temp;
    for(i=0;i<19;i++)
    {
        k=i;
        for(j=i+1;j<20;j++)
        {
            if(N[k]<N[j])
            {
                k=j;
            }
        }
        if(i!=k)
        {
            temp=N[i];
            N[i]=N[k];
            N[k]=temp;
        }
    }
}
  • Q:寫一個程序,統計本身C語言共寫了多少行代碼。
    A:上一次做業統計過了。

  • Q:你知道什麼是斷點嗎?給出本身調試程序的例子。
    A:斷點就是當咱們運行程序時,到斷點處會中止,以便逐步檢查程序。

  • Q:對比C語言的學習,你對《Java程序設計》的學習有什麼具體目標?如何經過刻意訓練提升程序設計能力和培養計算思惟?如何經過「作中學」實現你的目標? A:在學習Java時,我要堅持每週寫必定量的代碼,並在博客寫上本身的學習心得,經過進度條監督本身。   在學習C語言的過程當中,我有一個特別好的方法,就是對於同一個問題,去用多個辦法解決,好比對於排序問題,能夠用冒泡排序、選擇排序、插入排序等,也能夠直接用庫函數解決,這樣能夠加深理解。

相關文章
相關標籤/搜索