cpp學(xué)習(xí)(二)C語言復(fù)習(xí)

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

十年的信宜網(wǎng)站建設(shè)經(jīng)驗,針對設(shè)計、前端、開發(fā)、售后、文案、推廣等六對一服務(wù),響應(yīng)快,48小時及時工作處理。全網(wǎng)營銷推廣的優(yōu)勢是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動調(diào)整信宜建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計,從而大程度地提升瀏覽體驗。創(chuàng)新互聯(lián)公司從事“信宜網(wǎng)站設(shè)計”,“信宜網(wǎng)站推廣”以來,每個客戶項目都認(rèn)真落實執(zhí)行。

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

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

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

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

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

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

點開項目屬性:

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

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

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

#include <stdio.h>   //C標(biāo)準(zhǔn)輸入輸出庫
#include<Windows.h>  //Windows庫

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

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

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

    /*
        0001000             對于這個四層菱形,用0代替空格,用1代表要打印的字符
        0011100             先打印上四層,再打印下三層
        0111110             可以發(fā)現(xiàn):左側(cè)空格的數(shù)量 = 要打印的總層數(shù) - 當(dāng)前是第幾層
        1111111             然后打印下三層,采用相同的方式
        0111110             左側(cè)空格數(shù)量 = (1,2,3),即 1 開始,到層數(shù) -1
        0011100             OK,找到規(guī)律后就可以開始編碼啦
        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");
    }
}

再次運行依然可以看到結(jié)果。

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

下一篇詳解如何使用VS調(diào)試程序。

分享名稱:cpp學(xué)習(xí)(二)C語言復(fù)習(xí)
URL地址:http://bm7419.com/article42/gejeec.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供做網(wǎng)站、建站公司網(wǎng)站排名、ChatGPT、品牌網(wǎng)站建設(shè)、搜索引擎優(yōu)化

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站建設(shè)網(wǎng)站維護(hù)公司