1. 程式人生 > >20165235 學習基礎和C語言基礎調查

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

mys 文本文 cnblogs 教材 getchar eof 學習 都是 file

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

  • 首先第一個問題:你有什麽技能比大多人(超過90%以上)更好?感覺很難回答這種問題,其實我對很多東西挺感興趣的,如果非要拿出一種比較突出的技能的話我感覺就是象棋和書法。不敢說比大多數人更好,但是在業余愛好者中間相對來說還是不錯。
  • 針對這個技能的獲取你有什麽成功的經驗?若想獲取這種技能首先最重要的是對這種技能的興趣,因為興趣是人最好的老師。因為我對象棋書法的熱愛導致我想去學習。其次是堅持,若想真正的掌握一門技能就得去堅持練習,不斷的增進自己的技能。
  • 對於第三個問題:與老師博客中的學習經驗有什麽共通之處?在老師的博客中《優秀的教學方法---做教練與做中學》也包含了相關的內容

    技能的提升要「刻意訓練」
    低水平重復是不行的,訓練時間再長都沒用
    要擺脫「舒適區」,進入「學習區」學習
    要循序漸進,不能進入「恐慌區」
    --引用自《優秀的教學方法---做教練與做中學》

  • 我們每個人都應該學會“做中學(Learning By Doing)”針對某一種特定技術或技能進行重復性的練習,從而將其熟練掌握,並且要在練習的過程中進行思考,才能將自己所學的轉化為自己的知識。

有關C語言學習的調查

  1. 你是怎麽學習C語言的?(作業,實驗,教材,其他),與你的高超技能相比,C語言的學習有什麽經驗和教訓?在學習C語言的時候首先在上課的時候認真的聽講,然後在下課之後做一些練習(敲一遍課本上的代碼或做校園網上的題),把在課堂上的盡可能的吸收為自己的東西。想學好一門技能最重要的就是要不斷練習,要保證量,因為量變是質變的前提條件,但是也不能一昧的尋求量,要還要保證每次的練習是有效的。
  2. 目前為止估算自己寫過多少行C代碼?理解的情況如何?量變引起質變,如何平衡質和量?我可能至少寫過3000行以上的代碼,比較難得地方還是有的,但總體而言還是不錯的。在每次的C語言練習中要保持量,但也不能僅僅保證量,也要關註質量,在高效的多次練習下才能有所收獲。
  3. 學過了C語言,你分的清數組指針,指針數組;函數指針,指針函數這些概念嗎?
  • 數組指針:指向數組的指針
  • 指針數組:數組內的元素都是指針,存儲指針的數組
  • 函數指針:指向函數的指針包含函數的地址,調用函數
  • 指針函數:函數聲明其返回值為某個指針時,給函數返回一個地址,用於需要指針的表達式
  1. 學過了C語言,你明白文件和流的區別和聯系嗎?如何區分文本文件和二進制文件?如何編程操作這兩種文件?關於這方面的知識我不是很了解,我會通過百度去了解。
  2. 學過了C語言,你知道什麽叫面向過程程序設計嗎?它解決問題的方法是什麽?面向過程程序設計是以什麽正在發生為主要目標進行編程,解決問題的方法是要對問題解決的過程進行編程去解決。
  3. 在C語言裏面,什麽是模塊?你寫過多個源文件的程序嗎?
    模塊是將程序依照負責部分不同,拆分成多個部分,然後再拼裝成完整的程序。沒有寫過源文件程序。
    學過了C語言,你知道什麽是“高內聚,低耦合”嗎?這個原則如何應用到高質量程序設計中?高內聚是指一個模塊內各元素聯系緊密,低耦合是指模塊之間獨立性強,我們在設計時應盡量去滿足這個基本原則,使各個模塊間功能獨立、程序設計思路明確。來自於《什麽是“高內聚,低耦合”》
  4. 學過了C語言,你如何把數組A的內容復制到數組B中?如何查找整數數組A中有沒有數字5?如何對整數數組A進行排序(從小到大,從大到小)?寫出相應的程序。
    數組A復制到數組B:
#include <stdio.h>
#include <stdlib.h>
main()
{
    char a[200] = "\0",b[200] = "\0";
    int i;
    printf("Input:\n");
    scanf("%s",a);
    for(i = 0;a[i] != ‘\0‘;i++)
    {
        b[i] = a[i];
    }
    printf("%s\n",b);
}

查找是否存在5:

#include <stdio.h>
#define N 100
int main()
{
    char a[N] = "\0";
    int i;
    printf("Input:\n");
    scanf("%s",a);
    for(i = 0;a[i] != ‘\0‘;i++)
        if(a[i]==5)
            printf("5 is existent.");
    return 0;
}

升序如下,降序同理

#include<stdio.h>
main()
{
    int i, j, temp, a[10];
    printf("ten numners:\n");
    for (i=0;i<10;i++)
        scanf("%d",&a[i]);
    printf("\n");
    for (j =0; j<9;j++)
    {
        for (i=0;i<9-j;i++)
        {
            if (a[i]>a[i+1])
            {
                temp =a[i];
                a[i]=a[i + 1];
                a[i+1]=temp;
            }
        }
    }
    printf("The sorted numbers:\n");
    for (i = 0; i < 10; i++)
        printf("%d ", a[i]);
    printf("\n");
}

  1. 寫一個程序,統計自己C語言共寫了多少行代碼。
    首先我並不知道該怎麽寫這個代碼,我想到可以計算"/0"或是“;”的個數。我學習了百度上其他人的代碼,首先要抓住一個關鍵詞EOF,這是一個計算機術語,為End Of File的縮寫,在操作系統中表示資料源無更多的資料可讀取。資料源通常稱為檔案或串流。可以理解為換行符。
#include<stdio.h>
int main()
{
    int n = 1;
    int c;
    while((c = getchar())!=EOF)
    {
        if(c == ‘\n‘) n++;
    }
    printf("%d\n",n);

    return 0;
}
  • 但是這段代碼並不正確,無法正真的統計出代碼行數,希望新學期得到老師的指導。
  • 你知道什麽是斷點嗎?給出自己調試程序的例子。 斷點就是程序執行到斷點處會停止。技術分享圖片

  • 閱讀了老師的博客怎樣快速閱讀一本書,並且看了各章ppt後,對每章提出了以下問題。
  • Java各章問題
  1. Java中如何編寫和保存源文件?如何正確的理解反編譯?
  2. 如何正確理解兩個相同類型的數組如果具有相同的引用,它們就有完全相同的元素?
  3. 怎樣正確利用“異或”運算?
  4. 類與C語言中結構體的區別是?
  5. abstract類使用意義以及無法理解開閉原則
  6. abstract類與接口的區別?
  7. 使用try~catch語句來處理異常與C語言case~default語句的區別?
  8. Integer類調用其類的方法?
  9. JFrame() 創建窗口的方法
  10. 字節輸入(出)流與字符輸入(出)流如何連接?
  11. 連接MySQL數據庫的方式
  12. 進程與線程的區別是?
  13. 如何讀取URL中的資源?
  14. 如何進行圖形的布爾運算?
  15. 鏈表的使用(難點)。
  • Java學習目標
  1. 首先要獨立思考,學會獨自解決問題。實在解決不了的問題通過網絡,老師,同學等去解決。
  2. 要學會大量的敲代碼,努力要把課本上的代碼敲一遍,孰能生巧,加強對代碼的理解。
  3. 獨立的去編寫一些代碼去解決一些實際問題,平時也要去看一些算法的書,學習一些算法,增強自己代碼的編寫能力。多看一些關於本專業的書,加強自己的專業知識。
  4. 要學會去堅持,並且嚴格要求自己,只有這樣才能學有所成。

    程序設計入門,最有效的方法要積極主動敲代碼。
    --引自與《積極主動敲代碼,使用JUnit學習Java》

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