中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

cpp學習(二)C語言復習

發布時間:2020-06-11 09:44:07 來源:網絡 閱讀:559 作者:若年少有為 欄目:編程語言

接下來復習一下C語言部分,畢竟C++與C語言本自同根生,并且在匯編層面C與C++可以說完全相同。假如你沒有C語言基礎的話,可以先暫停去學習一下C語言,C語言可以看“C語言之父”譚浩強的《C語言程序設計》或者觀看學堂在線的免費公開課,在此推薦清華大學的c++課程:http://www.xuetangx.com/courses/course-v1:TsinghuaX+00740043X_2015_T2+sp/courseware/a0f3bf5a4c044dfaaad6814821533699/
最起碼要先了解C基礎才能進行接下來的學習。
基礎包括:(想到哪寫哪,有點亂,但是知道這些以后就可以開始動手了)

0.C基本數據類型
1.順序結構 、選擇結構、循環結構
2.程序都要從main()入口, 然后從最上面順序往下讀。(當然,這種說法其實是錯誤的,有興趣的話我會在以后寫明。)
3.函數的定義與使用
4.編譯預處理不是C語言的一部分,不占運行時間
5.在函數中不可以再定義函數
6.每個C語言程序寫完后,都是先編譯,后鏈接,最后運行。
7.標識符合法的要求是由字母,數字,下劃線組成,并且由下劃線或字母開頭。
8.C語言只有八、十、十六進制,沒有二進制。
9.復合的賦值表達式
a.自增自減語法,以及符號在前與在后的區別
b.基本的位運算與邏輯運算、算術運算
c.指針部分最好理解,如果實在不理解,在以后的博客中,我會講解一部分匯編知識,以便d.大家深入理解指針。
e.文件操作如果不理解也沒關系
//應該還有很多沒想到的知識點…不過,在項目中遇到了再通過注釋的方式詳解吧,這樣更//好理解一點。
好,在此假設屏幕前的你已經有了最基本的C語言知識。
我們來動手寫兩個小項目,進一步熟悉C語言的語法以及VS這款IDE。

項目一:打印菱形。(可以說是灰常簡單了)
項目二:寫一個C語言版的貪食蛇。(初學者看到,可能覺得自己肯定寫不出來,其實只要具備一定的C語言基礎,都可以很簡單的寫出來,只不過苦于無人指導,遇到一個棘手的問題可能就真的過不了這個坎了,在此我會盡可能詳細的講解可能遇到的問題,如果仍無法解決的話,歡迎請求遠程協助:QQ:1149375463,一些知識細節,遇到后會在項目注釋里盡可能的寫詳細。)

在此再次推薦VS,因為VS擁有良好的調試功能,包括對于變量在內存中的觀察,優秀的斷點,以及可以反匯編,在以后與bug做斗爭的過程中,會讓你事半功倍。
首先與第一篇一樣,新建工程,新建cpp文件:
cpp學習(二)C語言復習
然后編碼:

#include <stdio.h>   //C標準輸入輸出庫
#include<Windows.h>  //Windows庫
int main()          //程序主函數,當main函數執行結束后,進程退出
{
    int line = 0;  //上半部分層數,此后所說的層數都是之上半部分層數
    char draw;                          //要輸入什么字符組成的菱形
    scanf("%c", &draw); 
    printf("請輸入你想打印的行數:");  //printf()函數,屬于stdio.h
    scanf("%d", &line);                 //scanf()函數,屬于stdio.h
    /*  
        0001000             對于這個四層菱形,用0代替空格,用1代表要打印的字符
        0011100             先打印上四層,再打印下三層
        0111110             可以發現:左側空格的數量 = 要打印的總層數 - 當前是第幾層
        1111111             然后打印下三層,采用相同的方式
        0111110             左側空格數量 = (1,2,3),即 1 開始,到層數 -1
        0011100             OK,找到規律后就可以開始編碼啦
        0001000
    */
    //打印上line層
    for (int i = 0; i < line; i++) {
        for (int n = 0; n < line - 1 - i; n++) {
            printf(" ");
        }
        for (int j = 0; j < 2 * i + 1; j++) {
            printf("%c",draw);
        }
        printf("\n");
    }
    //打印下line-1層
    for (int i = 0; i < line - 1; i++){
        for (int n = 0; n < i + 1; n++){
            printf(" ");
        }
        for (int j = 0; j < 2 * (line - 1 - i) - 1; j++){
            printf("%c",draw);
        }
        printf("\n");
    }
    system("pause");    //system()函數,屬于windows.h,便于觀察結果
    return 0;           //執行完return語句時退出進程
}

點擊本地Windows調試器或者快捷鍵或者快捷鍵ctrl+F5
如果你使用了和我一樣的IDE,一定會遇到:
cpp學習(二)C語言復習

這是因為VS為了避免開發者疏忽導致程序在使用某些函數時產生溢出,引發漏洞或程序崩潰,所以基于原標準庫開發了一套安全函數庫,在VS中使用安全函數可以在一定程度上使此程序更加健壯。但在學習過程中通常是不必要的。因此我們:

點開項目屬性:

cpp學習(二)C語言復習
找到C/C++目錄,將SDL檢查置為否
cpp學習(二)C語言復習

oK,接下來運行便可看到,用你輸入的圖形打印了輸入行數的菱形。
cpp學習(二)C語言復習

接下來我們將程序的功能部分寫成一個函數,讓代碼具有更好的可讀性,得到如下代碼:

#include <stdio.h>   //C標準輸入輸出庫
#include<Windows.h>  //Windows庫

void PrinDia(char , int );  //PrinDia函數的聲明

int main()          //程序主函數,當main函數執行結束后,進程退出
{
    char draw;
    int line;
    printf("請輸入你想打印的圖形:");
    scanf("%c", &draw);
    printf("請輸入你想打印的行數:");  //printf()函數,屬于stdio.h
    scanf("%d", &line);                 //scanf()函數,屬于stdio.h
    PrinDia(draw, line);
    system("pause");    //system()函數,屬于windows.h,便于觀察結果
    return 0;           //執行完return語句時退出進程
}

void PrinDia(char draw,int line) {
//   line   //上半部分層數,此后所說的層數都是之上半部分層數
//   draw;  //要輸入什么字符組成的菱形

    /*
        0001000             對于這個四層菱形,用0代替空格,用1代表要打印的字符
        0011100             先打印上四層,再打印下三層
        0111110             可以發現:左側空格的數量 = 要打印的總層數 - 當前是第幾層
        1111111             然后打印下三層,采用相同的方式
        0111110             左側空格數量 = (1,2,3),即 1 開始,到層數 -1
        0011100             OK,找到規律后就可以開始編碼啦
        0001000
    */
    //打印上line層
    for (int i = 0; i < line; i++) {
        for (int n = 0; n < line - 1 - i; n++) {
            printf(" ");
        }
        for (int j = 0; j < 2 * i + 1; j++) {
            printf("%c", draw);
        }
        printf("\n");
    }
    //打印下line-1層
    for (int i = 0; i < line - 1; i++) {
        for (int n = 0; n < i + 1; n++) {
            printf(" ");
        }
        for (int j = 0; j < 2 * (line - 1 - i) - 1; j++) {
            printf("%c", draw);
        }
        printf("\n");
    }
}

再次運行依然可以看到結果。

OK,接下來便是另一個項目,C語言版的貪食蛇。在此之前需要學習一下如何使用VS調試程序,VS自帶了很強大的調試器,可以在以后的學習中很好的處理自己的bug。
好啦,建議屏幕前的你再好好復習一下C語言吧,一定一定要復習好C語言,或者觀看清華大學課程的前幾章基礎,熟練一下語法......莫貪快歐~

下一篇詳解如何使用VS調試程序。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

苏尼特右旗| 炎陵县| 彩票| 贵阳市| 白沙| 定陶县| 克什克腾旗| 和平区| 华宁县| 界首市| 荣成市| 柯坪县| 高安市| 三台县| 志丹县| 新巴尔虎右旗| 武冈市| 西昌市| 宁强县| 上犹县| 新乡市| 秭归县| 江阴市| 托克托县| 黔东| 临夏县| 安仁县| 呼玛县| 新巴尔虎右旗| 象州县| 蒙城县| 游戏| 华容县| 楚雄市| 隆回县| 普格县| 当雄县| 彭山县| 黑河市| 滦平县| 娄烦县|