C語言程序設(shè)計(jì) 課件 于紅 模塊三 編程初級(jí)應(yīng)用_第1頁
C語言程序設(shè)計(jì) 課件 于紅 模塊三 編程初級(jí)應(yīng)用_第2頁
C語言程序設(shè)計(jì) 課件 于紅 模塊三 編程初級(jí)應(yīng)用_第3頁
C語言程序設(shè)計(jì) 課件 于紅 模塊三 編程初級(jí)應(yīng)用_第4頁
C語言程序設(shè)計(jì) 課件 于紅 模塊三 編程初級(jí)應(yīng)用_第5頁
已閱讀5頁,還剩98頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

高級(jí)語言程序設(shè)計(jì)模塊三編程初級(jí)應(yīng)用任務(wù)3.1函數(shù)的應(yīng)用C語言程序設(shè)計(jì)基礎(chǔ)與實(shí)踐課程組04技能點(diǎn)拓展03技能點(diǎn)詳解02技能點(diǎn)分析目錄CONTENTS任務(wù)3.1函數(shù)的應(yīng)用01問題引入05技能點(diǎn)檢測一問題引入一款游戲的開發(fā),需要公司各部門各司其職,通力合作。策劃部門負(fù)責(zé)主策劃,劇情,文案,系統(tǒng),版本等;美術(shù)部門負(fù)責(zé)場景,2D,3D,人物,原畫,平面,視頻等;程序部門負(fù)責(zé)主程序,客戶端,引擎等。同樣,一個(gè)較大規(guī)模程序的設(shè)計(jì)也需要化整為零,讓各部分完成相對(duì)獨(dú)立的功能,這些獨(dú)立的部分就是函數(shù)。那么如何編寫自定義函數(shù),如何調(diào)用它們呢?04技能點(diǎn)拓展03技能點(diǎn)詳解02技能點(diǎn)分析目錄CONTENTS01問題引入05技能點(diǎn)檢測任務(wù)3.1函數(shù)的應(yīng)用二技能點(diǎn)分析1、了解函數(shù)的概念2、掌握函數(shù)的定義與調(diào)用3、能夠使用自定義函數(shù)去解決規(guī)模較大的問題學(xué)習(xí)目標(biāo)1.什么是函數(shù)?為什么要使用函數(shù)?2.函數(shù)定義的一般格式是什么?3.什么是形參?什么是實(shí)參?4.函數(shù)調(diào)用的方法是什么?學(xué)期預(yù)習(xí)04技能點(diǎn)拓展03技能點(diǎn)詳解02技能點(diǎn)分析目錄CONTENTS01問題引入05技能點(diǎn)檢測任務(wù)3.1函數(shù)的應(yīng)用三技能點(diǎn)詳解函數(shù)就是一段封裝好的,可以重復(fù)使用的代碼,它使得我們的程序更加模塊化,不需要編寫大量重復(fù)的代碼。函數(shù)可以提前保存起來,并給它起一個(gè)獨(dú)一無二的名字,只要知道它的名字就能使用這段代碼。函數(shù)還可以接收數(shù)據(jù),并根據(jù)數(shù)據(jù)的不同做出不同的操作,最后再把處理結(jié)果反饋給我們。函數(shù)還有很多叫法,比如方法、子例程或程序,等等。三技能點(diǎn)詳解——1庫函數(shù)C語言在發(fā)布時(shí)已經(jīng)為我們封裝好了很多函數(shù),它們被分門別類地放到了不同的頭文件中(暫時(shí)先這樣認(rèn)為),使用函數(shù)時(shí)引入對(duì)應(yīng)的頭文件即可。這些函數(shù)都是專家編寫的,執(zhí)行效率極高,并且考慮到了各種邊界情況,各位讀者請(qǐng)放心使用。C語言自帶的函數(shù)稱為庫函數(shù)。庫(Library)是編程中的一個(gè)基本概念,可以簡單地認(rèn)為它是一系列函數(shù)的集合,在磁盤上往往是一個(gè)文件夾。C語言自帶的庫稱為標(biāo)準(zhǔn)庫,其他公司或個(gè)人開發(fā)的庫稱為第三方庫。C標(biāo)準(zhǔn)庫提供了大量的程序可以調(diào)用的內(nèi)置函數(shù)。例如,函數(shù)strcat()用來連接兩個(gè)字符串,函數(shù)memcpy()用來復(fù)制內(nèi)存到另一個(gè)位置。自己編寫的函數(shù)稱為自定義函數(shù),自定義函數(shù)和庫函數(shù)在編寫和使用方式上完全相同,只是由不同的機(jī)構(gòu)來編寫。三技能點(diǎn)詳解——2函數(shù)的定義函數(shù)是一組一起執(zhí)行一個(gè)任務(wù)的語句。每個(gè)C程序都至少有一個(gè)函數(shù),即主函數(shù)main(),所有簡單的程序都可以定義其他額外的函數(shù)。C語言中的函數(shù)定義的一般形式如下:在C語言中,函數(shù)由一個(gè)函數(shù)頭和一個(gè)函數(shù)主體組成。下面列出一個(gè)函數(shù)的所有組成部分:函數(shù)類型:也即函數(shù)返回值類型,一個(gè)函數(shù)可以返回一個(gè)值。有些函數(shù)執(zhí)行所需的操作而不返回值,在這種情況下,函數(shù)類型是關(guān)鍵字void。函數(shù)名:是所定義函數(shù)的名稱,它可以是C語言中任何合法的標(biāo)識(shí)符。注意,在一個(gè)程序中函數(shù)名必須是唯一的,別的函數(shù)都是通過函數(shù)名來調(diào)用函數(shù)的。三技能點(diǎn)詳解——2函數(shù)的定義形式參數(shù)表:是由“<類型><參數(shù)名>”對(duì)組成的參數(shù)表,每對(duì)之間用逗號(hào)隔開。被調(diào)函數(shù)就是通過這些形參,接收從調(diào)用函數(shù)傳遞過來的數(shù)據(jù)。定義的函數(shù)可以有參數(shù),也可以沒有參數(shù),分別稱為有參函數(shù)和無參函數(shù)。不過,即使是無參函數(shù),其后面的圓括號(hào)也不能省略。函數(shù)體:函數(shù)體由一對(duì)花括號(hào)“{}”括起,包含一組定義函數(shù)執(zhí)行任務(wù)的語句。以下是max()函數(shù)的源代碼。該函數(shù)有兩個(gè)參數(shù)num1和num2,會(huì)返回這兩個(gè)數(shù)中較大的那個(gè)數(shù):三技能點(diǎn)詳解——2函數(shù)的定義三技能點(diǎn)詳解——3函數(shù)聲明函數(shù)聲明會(huì)告訴編譯器函數(shù)名稱及如何調(diào)用函數(shù)。函數(shù)的實(shí)際主體可以單獨(dú)定義。函數(shù)聲明包括以下幾個(gè)部分:針對(duì)上面定義的函數(shù)max(),以下是函數(shù)聲明:intmax(intnum1,intnum2);在函數(shù)聲明中,參數(shù)的名稱并不重要,只有參數(shù)的類型是必需的,因此下面也是有效的聲明:intmax(int,int);當(dāng)您在一個(gè)源文件中定義函數(shù)且在另一個(gè)文件中調(diào)用函數(shù)時(shí),函數(shù)聲明是必需的。在這種情況下,您應(yīng)該在調(diào)用函數(shù)的文件頂部聲明函數(shù)。三技能點(diǎn)詳解——4函數(shù)的調(diào)用創(chuàng)建C函數(shù)時(shí),會(huì)定義函數(shù)做什么,然后通過調(diào)用函數(shù)來完成已定義的任務(wù)。當(dāng)調(diào)用有參函數(shù)時(shí),會(huì)發(fā)生參數(shù)值的傳遞,實(shí)參會(huì)把值傳遞給形參,被調(diào)函數(shù)接收了傳遞過來的實(shí)參后,就依據(jù)這些數(shù)據(jù)執(zhí)行自己函數(shù)體里的語句。執(zhí)行結(jié)束后,就把控制返回到調(diào)用者發(fā)出函數(shù)調(diào)用的地方,繼續(xù)它的執(zhí)行。根據(jù)一個(gè)函數(shù)是否由返回值,C語言將以兩種不同的方式對(duì)它們進(jìn)行調(diào)用。(1)沒有返回值的函數(shù),是以函數(shù)調(diào)用語句的方式進(jìn)行調(diào)用的,即:(2)有返回值的函數(shù),是以函數(shù)表達(dá)式的方式調(diào)用的,即:三技能點(diǎn)詳解——4函數(shù)的調(diào)用這兩種調(diào)用方式的區(qū)別是:前者是一個(gè)語句,以分號(hào)結(jié)尾;后者是一個(gè)表達(dá)式,凡是一個(gè)表達(dá)式能出現(xiàn)的地方,它都可以出現(xiàn)。比如出現(xiàn)在賦值語句的右邊;比如出現(xiàn)在一個(gè)算術(shù)表達(dá)式里參與計(jì)算等等。函數(shù)調(diào)用時(shí),在實(shí)際參數(shù)表中,必須列出與被調(diào)函數(shù)定義的形參個(gè)數(shù)相等、類型相符、次序相同的實(shí)參,各實(shí)參之間仍以逗號(hào)分隔。三技能點(diǎn)詳解——5函數(shù)調(diào)用中的參數(shù)傳遞(1)傳值方式向函數(shù)傳遞參數(shù)的傳值調(diào)用方法,調(diào)用者是把實(shí)參變量的值賦給被調(diào)用的形參變量的。由于實(shí)參變量和形參變量占用的是內(nèi)存中不同的存儲(chǔ)區(qū),被調(diào)函數(shù)對(duì)形參的加工,是在形參變量自己的存儲(chǔ)區(qū)里進(jìn)行,所以不會(huì)影響到實(shí)參變量。所以,這種數(shù)據(jù)傳遞的方式是單向的。(2)引用方式通過引用傳遞方式,形參為指向?qū)崊⒌闹羔槪?dāng)對(duì)形參的指向操作時(shí),就相當(dāng)于對(duì)實(shí)參本身進(jìn)行的操作。傳遞指針可以讓多個(gè)函數(shù)訪問指針?biāo)玫膶?duì)象,而不用把對(duì)象聲明為全局可訪問。三技能點(diǎn)詳解——5函數(shù)調(diào)用中的參數(shù)傳遞(3)參數(shù)為數(shù)組的傳遞方式如果您想要在函數(shù)中傳遞一個(gè)一維數(shù)組作為參數(shù),您可以用下面三種方式來聲明函數(shù)形式參數(shù),這三種聲明方式的結(jié)果是一樣的,因?yàn)槊糠N方式都會(huì)告訴編譯器將要接收一個(gè)整型指針。同樣地,您也可以傳遞一個(gè)多維數(shù)組作為形式參數(shù)。方式1:形式參數(shù)是一個(gè)已定義大小的數(shù)組:三技能點(diǎn)詳解——5函數(shù)調(diào)用中的參數(shù)傳遞方式2:形式參數(shù)是一個(gè)非固定長度的數(shù)組:方式3:形式參數(shù)是一個(gè)指針:三技能點(diǎn)詳解——6函數(shù)的嵌套調(diào)用函數(shù)的嵌套調(diào)用是指當(dāng)前被調(diào)用的函數(shù)里又調(diào)用了另一個(gè)函數(shù),這就類似于在大盒子里裝小盒子,小盒子里可以再裝更小的盒子。如下所示:我們看到在主函數(shù)main()中調(diào)用了func2()函數(shù),而在func2()函數(shù)中又調(diào)用了func1()函數(shù),如此就構(gòu)成了函數(shù)的嵌套調(diào)用。案例3.1.1函數(shù)的調(diào)用在這個(gè)案例中,我們定義了一個(gè)max()函數(shù)用來實(shí)現(xiàn)求兩數(shù)中較大者,然后在主函數(shù)main()中對(duì)其進(jìn)行調(diào)用。/*****************************************內(nèi)容簡述:通過調(diào)用max()函數(shù)求兩數(shù)中的較大者。*****************************************/#include

<stdio.h>intmax(intnum1,intnum2);//函數(shù)聲明intmain(){

inta=100;

intb=200;intret;

ret=max(a,b);//調(diào)用max()函數(shù)

printf("Maxvalueis:%d\n",ret);

return0;}intmax(intnum1,intnum2)//定義max()函數(shù)返回兩個(gè)數(shù)中較大的那個(gè)數(shù){

intresult;

if(num1>num2) result=num1;

elseresult=num2;

returnresult;}三技能點(diǎn)詳解——案例案例3.1.2

傳值方式參數(shù)傳遞在這個(gè)案例中,我們定義了一個(gè)swap()函數(shù)用來實(shí)現(xiàn)交換兩數(shù)值,swap()函數(shù)的參數(shù)是普通變量,然后在主函數(shù)main()中對(duì)其進(jìn)行調(diào)用。/*****************************************內(nèi)容簡述:查看調(diào)用swap()函數(shù)是否能交換兩數(shù)值。****************************************/#include

<stdio.h>voidswap(intx,inty);//函數(shù)聲明intmain(){

inta=100;

intb=200;

printf("交換前,a的值:%d\n",a);

printf("交換前,b的值:%d\n",b);swap(a,b);//調(diào)用swap()函數(shù)

printf("交換后,a的值:%d\n",a);

printf("交換后,b的值:%d\n",b);

return0;}

voidswap(intx,inty)//定義swap()函數(shù){

inttemp;temp=x;x=y;y=temp;}三技能點(diǎn)詳解——案例案例3.1.3引用方式參數(shù)傳遞在這個(gè)案例中,我們定義了一個(gè)swap()函數(shù)用來實(shí)現(xiàn)交換兩數(shù)值,swap()函數(shù)的參數(shù)是指針變量,然后在主函數(shù)main()中對(duì)其進(jìn)行調(diào)用。/*****************************************內(nèi)容簡述:查看調(diào)用swap()函數(shù)是否能交換兩數(shù)值。*****************************************/#include

<stdio.h>voidswap(int*x,int*y);//函數(shù)聲明intmain(){

inta=100;

intb=200;

printf("交換前,a的值:%d\n",a);

printf("交換前,b的值:%d\n",b);swap(&a,&b);//調(diào)用swap()函數(shù),&a為指向a的指針,&b為指向b的指針

printf("交換后,a的值:%d\n",a);

printf("交換后,b的值:%d\n",b);

return0;}voidswap(int*x,int*y)//函數(shù)定義{

inttemp;temp=*x;*x=*y;*y=temp;}三技能點(diǎn)詳解——案例案例3.1.4

參數(shù)為數(shù)組的傳遞方式在這個(gè)案例中,我們定義了一個(gè)getAverage()函數(shù)用來求5個(gè)整數(shù)的平均值,getAverage()函數(shù)的參數(shù)是數(shù)組,然后在主函數(shù)main()中對(duì)其進(jìn)行調(diào)用。/*******************************************************內(nèi)容簡述:通過調(diào)用getAverage()函數(shù)實(shí)現(xiàn)求5個(gè)整數(shù)的平均值*******************************************************/#include

<stdio.h>

double

getAverage(int

arr[],intsize)//函數(shù)定義{

int

i;

doubleavg;

doublesum=0;

for(i=0;i<size;++i) { sum+=arr[i]; } avg=sum/size;

returnavg;}

intmain(){

intbalance[5]={1000,2,3,17,50};

double

avge;

avge=getAverage(balance,5);//函數(shù)調(diào)用,傳遞一個(gè)指向數(shù)組的指針作為參數(shù)

printf("平均值是:%f\n",avge);

return0;}三技能點(diǎn)詳解——案例案例3.1.5

函數(shù)的嵌套調(diào)用案例題目:求任意3個(gè)整數(shù)的方差,方差公式如下:/*******************************內(nèi)容簡述:求任意3個(gè)整數(shù)的方差*******************************/#include

<stdio.h>#include

<math.h>floatavg(int

a,int

b,intc)//定義求平均值函數(shù)avg(){

floatm; m=(a+b+c)/3.0;

returnm;}floatvar(int

d,int

e,intf)//定義求方差函數(shù)var(){

float

ave,vai;

ave=avg(d,e,f);//調(diào)用avg()函數(shù)求出平均值賦給ave

vai=(pow((ave-d),2)+pow((ave-e),2)+pow((ave-f),2))/3.0;//求出方差

return

vai;}

intmain(){

int

x,y,z;

floatw;

printf("請(qǐng)輸入3個(gè)整數(shù):");

scanf("%d,%d,%d",&x,&y,&z); w=var(x,y,z);//調(diào)用求方差函var()

printf("方差是:%f\n",w);

return0;}三技能點(diǎn)詳解——案例04技能點(diǎn)拓展03技能點(diǎn)詳解02技能點(diǎn)分析目錄CONTENTS01問題引入05技能點(diǎn)檢測任務(wù)3.1函數(shù)的應(yīng)用四技能點(diǎn)拓展——1作用域規(guī)則任何一種編程中,作用域是程序中定義的變量所存在的區(qū)域,超過該區(qū)域變量就不能被訪問。C語言中有三個(gè)地方可以聲明變量:在函數(shù)或塊內(nèi)部的局部變量在所有函數(shù)外部的全局變量在形式參數(shù)的函數(shù)參數(shù)定義中讓我們來看看什么是局部變量、全局變量和形式參數(shù)。四技能點(diǎn)拓展——1作用域規(guī)則(1)局部變量在某個(gè)函數(shù)或塊的內(nèi)部聲明的變量稱為局部變量。它們只能被該函數(shù)或該代碼塊內(nèi)部的語句使用。局部變量在函數(shù)外部是不可知的。下面是使用局部變量的實(shí)例。在這里,所有的變量a、b和c是main()函數(shù)的局部變量。如下例所示:四技能點(diǎn)拓展——1作用域規(guī)則(2)全局變量全局變量是定義在函數(shù)外部,通常是在程序的頂部。全局變量在整個(gè)程序生命周期內(nèi)都是有效的,在任意的函數(shù)內(nèi)部能訪問全局變量。全局變量可以被任何函數(shù)訪問。也就是說,全局變量在聲明后整個(gè)程序中都是可用的。下面是使用全局變量和局部變量的實(shí)例:四技能點(diǎn)拓展——1作用域規(guī)則在程序中,局部變量和全局變量的名稱可以相同,但是在函數(shù)內(nèi),如果兩個(gè)名字相同,會(huì)使用局部變量值,全局變量不會(huì)被使用。下面是相關(guān)實(shí)例:運(yùn)行結(jié)果:四技能點(diǎn)拓展——2形式參數(shù)函數(shù)的形式參數(shù),被當(dāng)作該函數(shù)內(nèi)的局部變量,如果與全局變量同名它們會(huì)優(yōu)先使用。如下例所示:運(yùn)行結(jié)果:四技能點(diǎn)拓展——2形式參數(shù)全局變量與局部變量在內(nèi)存中的區(qū)別是全局變量保存在內(nèi)存的全局存儲(chǔ)區(qū)中,占用靜態(tài)的存儲(chǔ)單元;局部變量保存在棧中,只有在所在函數(shù)被調(diào)用時(shí)才動(dòng)態(tài)地為變量分配存儲(chǔ)單元。當(dāng)局部變量被定義時(shí),系統(tǒng)不會(huì)對(duì)其初始化,您必須自行對(duì)其初始化。定義全局變量時(shí),系統(tǒng)會(huì)自動(dòng)對(duì)其初始化,如下所示:正確地初始化變量是一個(gè)良好的編程習(xí)慣,否則有時(shí)候程序可能會(huì)產(chǎn)生意想不到的結(jié)果,因?yàn)槲闯跏蓟淖兞繒?huì)導(dǎo)致一些在內(nèi)存位置中已經(jīng)可用的垃圾值。04技能點(diǎn)拓展03技能點(diǎn)詳解02技能點(diǎn)分析目錄CONTENTS01問題引入05技能點(diǎn)檢測任務(wù)3.1函數(shù)的應(yīng)用五技能點(diǎn)檢測1)以下函數(shù)定義正確的是:(

)。A)doublefun(intx,inty)B)doublefun(intx;inty)C)doublefun(intx,inty);D)doublefun(intx,y)2)C語言規(guī)定,簡單變量作實(shí)參,它與對(duì)應(yīng)形參之間的數(shù)據(jù)傳遞方式是:(

)。A)地址傳遞;B)單向值傳遞;C)雙向值傳遞;D)由用戶指定傳遞方式3)以下關(guān)于C語言程序中函數(shù)的說法正確的是:(

)。A)函數(shù)的定義可以嵌套,但函數(shù)的調(diào)用不可以嵌套;B)函數(shù)的定義不可以嵌套,但函數(shù)的調(diào)用可以嵌套;C)函數(shù)的定義和調(diào)用均不可以嵌套;D)函數(shù)的定義和點(diǎn)用都可以嵌套。五技能點(diǎn)檢測4)以下正確的函數(shù)形式是:(

)。A)doublefun(intx,inty)B)fun(intx,y){z=x+y;returnz;}{intz;returnz;}C)fun(x,y)D)doublefun(intx,inty){intx,y;doublez;{doublez;z=x+y;returnz;}z=x+y;returnz;}5)若用數(shù)組名作為函數(shù)調(diào)用的實(shí)參,傳遞給形參的是(

)。A)數(shù)組的首地址B)數(shù)組第一個(gè)元素的值C)數(shù)組中全部元素的值D)數(shù)組元素的個(gè)數(shù)課后作業(yè)完成課堂任務(wù),在線提交;完成技能檢測,在線提交;C語言程序設(shè)計(jì)基礎(chǔ)與實(shí)踐模塊一編程技術(shù)基礎(chǔ)任務(wù)3.2多文件編程C語言程序設(shè)計(jì)基礎(chǔ)與實(shí)踐課程組04技能點(diǎn)拓展03技能點(diǎn)詳解02技能點(diǎn)分析目錄CONTENTS任務(wù)3.2多文件編程01問題引入05技能點(diǎn)檢測一問題引入

進(jìn)入數(shù)字經(jīng)濟(jì)時(shí)代,開源技術(shù)的重要價(jià)值日漸凸顯,已經(jīng)成為數(shù)字經(jīng)濟(jì)的基礎(chǔ)設(shè)施與底座。開源技術(shù)是一個(gè)巨大的知識(shí)寶庫,我們?cè)谙碛眠@個(gè)知識(shí)寶庫的同時(shí),當(dāng)知這個(gè)知識(shí)寶庫正是無數(shù)前人的奉獻(xiàn)積累而成的。

那么如何使我們的C語言編程代碼能夠共享交流,實(shí)現(xiàn)開源技術(shù)的價(jià)值呢?這就需要我們掌握多文件編程的方法,使編程思路更清晰、程序結(jié)構(gòu)更簡單、更易于程序的讀寫和移植。04技能點(diǎn)拓展03技能點(diǎn)詳解02技能點(diǎn)分析目錄CONTENTS01問題引入05技能點(diǎn)檢測任務(wù)3.2多文件編程二技能點(diǎn)分析1.掌握頭文件編寫方法;2.學(xué)會(huì)使用多文件編程模式編寫程序。學(xué)習(xí)目標(biāo)1.什么是多文件編程?多文件編程具有哪些優(yōu)點(diǎn)?2.頭文件一般包括哪些內(nèi)容?3.頭文件的引用格式有哪些?它們之間有何異同點(diǎn)?學(xué)期預(yù)習(xí)04技能點(diǎn)拓展03技能點(diǎn)詳解02技能點(diǎn)分析目錄CONTENTS01問題引入05技能點(diǎn)檢測任務(wù)3.2多文件編程三技能點(diǎn)詳解——1頭文件多文件編程就是將程序中所用的變量、函數(shù)或宏定義等程序元素分散到兩個(gè)以上的源文件中定義實(shí)現(xiàn),并通過包含頭文件方式實(shí)現(xiàn)在多個(gè)源文件中共享。三技能點(diǎn)詳解——1頭文件

頭文件是擴(kuò)展名為.h的文件,有兩種類型的頭文件:程序員編寫的頭文件和編譯器自帶的頭文件。在前面的程序中,我們已經(jīng)多次使用到

stdio.h

頭文件,它是編譯器自帶的頭文件。頭文件一般包含全局變量的聲明、函數(shù)的聲明、宏定義、結(jié)構(gòu)體定義等,如stdio.h頭文件中包含putchar()、getchar()、printf()、scanf()等標(biāo)準(zhǔn)輸入輸出函數(shù)的聲明。1)頭文件的引用格式

使用預(yù)處理指令#include引用用戶自編和系統(tǒng)自帶的頭文件。它的形式有以下兩種:三技能點(diǎn)詳解——1頭文件格式一:#include<文件名>

本命令的特點(diǎn)是在文件名的首尾用尖括號(hào)括起來。文件名可以帶路徑。在預(yù)處理時(shí)將只在所指定的標(biāo)準(zhǔn)目錄(即C系統(tǒng)安裝后形成的include子目錄,該子目錄中有系統(tǒng)提供的頭文件)中查找包含文件。格式二:#include"文件名"

本命令格式的特點(diǎn)是在文件名的首尾用雙引號(hào)括起來。其中,文件名指出的是待包含進(jìn)來的文件,且可以帶路徑。若文件名帶路徑,則預(yù)處理時(shí)在指定的路徑下去查找。若查找不到,再到系統(tǒng)指定的標(biāo)準(zhǔn)目錄中找。找到文件后,用文件內(nèi)容替換該命令。因此格式二的查找功能包含了格式一的查找功能。另外,兩種格式的include后可以不帶空格。2)頭文件的引用操作如果文件A中有一條文件包含預(yù)處理命令:#include<B>該命令將指定文件B的內(nèi)容替換掉文件A中“#include<B>”命令,共同組成一個(gè)程序文件,即在文件A中產(chǎn)生文件B的一個(gè)副本。例如,如果一個(gè)程序中有一個(gè)頭文件

header.h,包含的代碼如下:char*test(void);三技能點(diǎn)詳解——1頭文件三技能點(diǎn)詳解——1頭文件3)頭文件的編寫結(jié)構(gòu)

如果一個(gè)頭文件被引用兩次,編譯器會(huì)處理兩次頭文件的內(nèi)容,這將產(chǎn)生錯(cuò)誤。為了防止這種情況,標(biāo)準(zhǔn)的做法是把文件的整個(gè)內(nèi)容放在條件編譯語句中,一般結(jié)構(gòu)如下:#ifndef_HEADER_H_#define_HEADER_H_……#endif這種結(jié)構(gòu)就是通常所說的包裝器#ifndef。“_HEADER_H_”通常以下劃線“_”作為開頭和結(jié)尾,下劃線之間的字符串通常是大寫的頭文件名,并且“#ifndef”后的標(biāo)識(shí)符和“#define”后面的完全相同,但不同的頭文件中的標(biāo)識(shí)符是不同的。三技能點(diǎn)詳解——2多文件編程

假如我們現(xiàn)在需要編程實(shí)現(xiàn)輸出從鍵盤輸入的兩個(gè)整數(shù)中最大值和最小值,首先我們編寫一個(gè)只含有一個(gè)源文件test.c的程序。#include

<stdio.h>

intmax(intx,inty);//max函數(shù)聲明intmin(intx,inty);//min函數(shù)聲明

voidmain(void){

inta,b,m,n; printf("請(qǐng)輸入第一個(gè)數(shù):"); scanf("%d",&a); printf("請(qǐng)輸入第二個(gè)數(shù):"); scanf("%d",&b); m=max(a,b);//max函數(shù)調(diào)用 n=min(a,b);//min函數(shù)調(diào)用 printf("max=%d\n",m); printf("min=%d\n",n);}

intmax(intx,inty)//max函數(shù)定義{

intm; m=x>y?x:y;

returnm;}

intmin(intx,inty)//min函數(shù)定義{

intn; n=x<y?x:y;

returnn;}三技能點(diǎn)詳解——2多文件編程

根據(jù)前面所說的多文件編程的基本思路,下面我們把上面的程序改寫為多文件編程的形式。在各個(gè)文件中,一個(gè)源文件對(duì)應(yīng)一個(gè)頭文件,且文件主名相同,如maxmin.c源文件對(duì)應(yīng)maxmin.h,通常主程序main.c不編寫main.h。頭文件maxmin.h#ifndef_MAXMIN_H_#define_MAXMIN_H_

intmax(intx,inty);//函數(shù)聲明intmin(intx,inty);//函數(shù)聲明

#endif主程序main.c#include

<stdio.h>#include

"maxmin.h"

voidmain(void){

inta,b,m,n; printf("請(qǐng)輸入第一個(gè)數(shù):"); scanf("%d",&a); printf("請(qǐng)輸入第二個(gè)數(shù):"); scanf("%d",&b); m=max(a,b); n=min(a,b); printf("max=%d\n",m); printf("min=%d\n",n);}三技能點(diǎn)詳解——2多文件編程子程序maxmin.c#include

"maxmin.h"

intmax(intx,inty)//max函數(shù)定義,比較出最大值{

intm; m=x>y?x:y;

returnm;}

intmin(intx,inty)//min函數(shù)定義,比較出最小值{

intn; n=x<y?x:y;

returnn;}案例3.2.1計(jì)算器采用多文件編程方式編寫一個(gè)簡單計(jì)算器的程序,可以實(shí)現(xiàn)對(duì)輸入的兩個(gè)整數(shù)進(jìn)行加、減、乘、除計(jì)算,并輸出計(jì)算的結(jié)果。********************************************************************內(nèi)容簡述:兩個(gè)整數(shù)的加、減、乘、除的簡單計(jì)算器*******************************************************************/counter.h頭文件:#ifndef_COUNTER_H_#define_COUNTER_H_

intadd(int

x,inty);//加法函數(shù)的聲明intsub(int

x,inty);//減法函數(shù)的聲明int

mul(int

x,inty);//乘法函數(shù)的聲明floatdiv(int

x,inty);//除法函數(shù)的聲明

#endif

三技能點(diǎn)詳解——案例display.h頭文件:#ifndef_DISPLAY_H_#define_DISPLAY_H_

#include

<stdio.h>

void

disp_result(int

x,inty);//打印輸出結(jié)果的函數(shù)聲明

#endif

getnum.h頭文件:#ifndef_GETNUM_H_#define_GETNUM_H_

#include

<stdio.h>

intgetnum1(void);//輸入第一整數(shù)的函數(shù)聲明intgetnum2(void);//輸入第二整數(shù)的函數(shù)聲明

#endif

counter.c源文件:intadd(int

x,inty)//加法函數(shù)的定義{

return

x+y;}

intsub(int

x,inty)//減法函數(shù)的定義{

returnx-y;}

int

mul(int

x,inty)//乘法函數(shù)的定義{

returnx*y;}

floatdiv(int

x,inty)//除法函數(shù)的定義{

return(float)x/y;}三技能點(diǎn)詳解——案例display.c源文件:#include

"counter.h"#include

"display.h"

void

disp_result(int

x,inty){

ints;

floatt;

s=add(x,y);//加法運(yùn)算的結(jié)果

printf("%d+%d=%d\n",x,y,s);

s=sub(x,y);//減法運(yùn)算的結(jié)果

printf("%d-%d=%d\n",x,y,s);

s=mul(x,y);//乘法運(yùn)算的結(jié)果

printf("%d*%d=%d\n",x,y,s);

t=div(x,y);//除法運(yùn)算的結(jié)果

printf("%d/%d=%.2f\n",x,y,t);}getnum.c源文件:#include

"getnum.h"

intgetnum1()//輸入第一個(gè)整數(shù){

inta;

printf("請(qǐng)輸入第一個(gè)整數(shù):");

scanf("%d",&a);

returna;}

intgetnum2()//輸入第二個(gè)整數(shù){

inta;

printf("請(qǐng)輸入第二個(gè)整數(shù):");

scanf("%d",&a);

returna;}三技能點(diǎn)詳解——案例main.c源文件:#include

"getnum.h"#include

"display.h"

voidmain(void){

int

a,b; a=getnum1();//調(diào)用函數(shù)getnum1,獲取第一個(gè)整數(shù) b=getnum2();//調(diào)用函數(shù)getnum2,獲取第二個(gè)整數(shù)

disp_result(a,b);//顯示運(yùn)算結(jié)果}實(shí)現(xiàn)算術(shù)運(yùn)算的子程序?qū)?yīng)counter.c的頭文件對(duì)應(yīng)display.c的頭文件對(duì)應(yīng)getnum.c的頭文件實(shí)現(xiàn)打印輸出的子程序通過調(diào)用子程序中的函數(shù)完成所有功能的主程序獲取輸入數(shù)值的子程序三技能點(diǎn)詳解——案例04技能點(diǎn)拓展03技能點(diǎn)詳解02技能點(diǎn)分析目錄CONTENTS01問題引入05技能點(diǎn)檢測任務(wù)3.2多文件編程四技能點(diǎn)拓展——1條件編譯條件編譯是在對(duì)源程序編譯之前的處理中,根據(jù)給定的條件,決定只編譯其中的某一部分源程序,而不編譯另外一部分源程序。1)控制條件為常量表達(dá)式的條件編譯(1)類單分支格式#if常量表達(dá)式程序段#endif功能是:如果常量表達(dá)式為真(即非0),程序段被編譯。否則,程序段不被編譯。四技能點(diǎn)拓展——1條件編譯(2)類雙分支格式:#if常量表達(dá)式程序段1

#else

程序段2

#endif功能是:如果常量表達(dá)式的值為真(即非0),則在程序編譯時(shí)只對(duì)程序段1進(jìn)行編譯,否則只對(duì)程序段2進(jìn)行編譯。四技能點(diǎn)拓展——1條件編譯(3)類多分支格式:#if常量表達(dá)式1程序段1#elif常量表達(dá)式2程序段2#elif

常量表達(dá)式n程序段n#else

程序段n+1#endif2)控制條件為定義標(biāo)識(shí)符的條件編譯(1)格式1:

#ifdef標(biāo)識(shí)符

程序段1#else

程序段2#endif(2)格式2:

#ifndef標(biāo)識(shí)符程序段1#else

程序段2#endif04技能點(diǎn)拓展03技能點(diǎn)詳解02技能點(diǎn)分析目錄CONTENTS01問題引入05技能點(diǎn)檢測任務(wù)3.2多文件編程五技能點(diǎn)檢測完成課堂任務(wù),在線提交;完成技能檢測,在線提交;C語言程序設(shè)計(jì)基礎(chǔ)與實(shí)踐模塊二編程初級(jí)應(yīng)用任務(wù)3.3

編程規(guī)范C語言程序設(shè)計(jì)基礎(chǔ)與實(shí)踐課程組04技能點(diǎn)拓展03技能點(diǎn)詳解02技能點(diǎn)分析目錄CONTENTS任務(wù)3.3編程規(guī)范01問題引入05技能點(diǎn)檢測一問題引入

大江東流,日月交替,大自然生生不息,用規(guī)則演繹著生命的軌跡。火車之所以能夠奔馳千里,是因?yàn)樗冀K離不開兩條鐵軌;風(fēng)箏之所以能高高飛翔,是因?yàn)樗偸乔橄抵种械木€;宇宙間無數(shù)顆恒星亙古不變地燦爛,是因?yàn)樗鼈兌及凑兆约旱能壍肋\(yùn)行。不以規(guī)矩,不成方圓。我們要編寫一個(gè)高質(zhì)量的代碼,就必須遵守一定的規(guī)范,這樣才能保證代碼的易讀性和易維護(hù)性。那么規(guī)范化的編程有哪些要求呢?04技能點(diǎn)拓展03技能點(diǎn)詳解02技能點(diǎn)分析目錄CONTENTS01問題引入05技能點(diǎn)檢測任務(wù)3.3編程規(guī)范二技能點(diǎn)分析1.了解C語言編程的基本規(guī)范2.能夠使用簡化版本對(duì)程序注釋3.能夠使用編程規(guī)范編寫代碼學(xué)習(xí)目標(biāo)1.程序編寫過程種,為什么需要注意代碼的規(guī)范化?2.代碼規(guī)范化主要體現(xiàn)在那幾個(gè)方面?3.文件注釋的完整版本的規(guī)范寫法是什么?4.函數(shù)注釋的完整版本的規(guī)范寫法是什么?

學(xué)期預(yù)習(xí)04技能點(diǎn)拓展03技能點(diǎn)詳解02技能點(diǎn)分析目錄CONTENTS01問題引入05技能點(diǎn)檢測任務(wù)3.3編程規(guī)范三技能點(diǎn)詳解

代碼規(guī)范化的原則是在遵守編譯器要求的代碼規(guī)范下,追求代碼整體清晰、美觀、易閱讀、易排錯(cuò),有利于團(tuán)隊(duì)程序開發(fā)。一般來說,規(guī)范化主要從結(jié)構(gòu)、排版、注釋、命名四個(gè)方面入手。三技能點(diǎn)詳解——1結(jié)構(gòu)每個(gè)C程序通常分為兩個(gè)文件。一個(gè)文件用于保存程序的聲明,稱為頭文件。另外一個(gè)文件用于保存程序的實(shí)現(xiàn),稱之為定義文件。C程序的頭文件以“.h”為后綴,C程序的定義文件以“.c”為后綴。/************************************函數(shù)聲明:文件名,版本,歷史信息等信息***********************************//*頭文件包含*/#include

<xxxxx.h>

#include

"xxxxx.h"

/*變量定義*/intnum_man;

/*函數(shù)聲明*/voidsum_add(void);

/*主函數(shù)*/voidmain(void){sum_add();//子函數(shù)使用

}

/************************************函數(shù)聲明:文件名,函數(shù)版本等信息***********************************/voidsum_add(void)/*子函數(shù)*/

{

//子函數(shù)體}1)空行

空行起著分隔程序段落的作用,空行得體將使程序的布局更加清晰。兩個(gè)相對(duì)獨(dú)立的程序塊、定義變量后必須要加空行。比如上面幾行代碼完成的是一個(gè)功能,下面幾行代碼完成的是另一個(gè)功能,那么它們中間就要加空行。voidDemoFunc(void){ uint8_ti;

//局部變量和語句間空一行

/*功能塊1*/

for(i=0;i<10;i++) {

//... }

//不同的功能塊間空一行

/*功能塊2*/

for(i=0;i<20;i++) {

//... }}三技能點(diǎn)詳解——2排版2)空格

在兩個(gè)以上的關(guān)鍵字、變量、常量進(jìn)行對(duì)等操作時(shí),它們之間的操作符之前、之后或者前后要加空格;(1)逗號(hào)、分號(hào)只在后面加空格。inta,b,c;(2)比較操作符,賦值操作符"="、"+=",算術(shù)操作符"+"、"%",邏輯操作符"&&"、"&",位域操作符"<<"、"^"等雙目操作符的前后加空格。if(current_time>=MAX_TIME_VALUE)a=b+c;a*=2;a=b^2;(3)"!"、"~"、"++"、"--"、"&"(地址運(yùn)算符)等單目操作符前后不加空格。*p='a';//內(nèi)容操作"*"與內(nèi)容之間flag=!isEmpty;//非操作"!"與內(nèi)容之間p=&mem;//地址操作"&"與內(nèi)容之間i++;//"++","--"與內(nèi)容之間(4)"->"、"."前后不加空格。p->id=pid;//"->"指針前后不加空格(5)if、for、while、switch等與后面的括號(hào)間應(yīng)加空格,使if等關(guān)鍵字更為突出、明顯,函數(shù)名與其后的括號(hào)之間不加空格,以與保留字區(qū)別開。if(a>=b&&c>d)三技能點(diǎn)詳解——2排版3)對(duì)齊

成對(duì)的符號(hào)一定要成對(duì)書寫,如()、{}。不要寫完左括號(hào)然后寫內(nèi)容最后再補(bǔ)右括號(hào),這樣很容易漏掉右括號(hào),尤其是寫嵌套程序的時(shí)候。{和}分別都要獨(dú)占一行。#include

<stdio.h>intmain(void){

if(…)

return0;}三技能點(diǎn)詳解——2排版4)代碼行

一行代碼只做一件事情,如只定義一個(gè)變量,或只寫一條語句。這樣的代碼容易閱讀,并且便于寫注釋。if、else、for、while、do等語句自占一行,執(zhí)行語句不得緊跟其后。#include

<stdio.h>

intmain(void){

if(…-){

while(…-)}

return0;}三技能點(diǎn)詳解——2排版三技能點(diǎn)詳解——3注釋行注釋一行注釋采用//…,多行注釋必須采用/*…*/。在一般情況下,源程序有效注釋量必須在20%以上。/*變量定義*/intnum_man;//班級(jí)男生人數(shù)0~50之間

a=a+1;//a自身加1(沒有必要)文本注釋主要針對(duì)整個(gè)文件進(jìn)行的注釋,這個(gè)注釋內(nèi)容較多,便于閱讀者快速了解文件的相關(guān)信息。/****************************************************************Copyright(C),2021-2023,C語言項(xiàng)目開發(fā)組*文件名:main.c*內(nèi)容簡述:實(shí)現(xiàn)小球沿著不同方向碰撞墻壁,并實(shí)現(xiàn)反彈。*文件歷史:*版本

日期

作者

說明*1.02021-12-01課題組

實(shí)現(xiàn)小球的碰撞轉(zhuǎn)向*2.02022-06-12課題組

采用函數(shù),優(yōu)化程序****************************************************************/

針對(duì)一些練習(xí)用的小函數(shù),不需要填寫全部信息,可以采用簡化版本。/****************************************************************內(nèi)容簡述:根據(jù)給定的年、月、日計(jì)算是星期幾?需要采用基姆拉爾森算法。*Weekday=(d+2*m+3*(m+1)/5+y+y/4-y/100+y/400)%7****************************************************************/三技能點(diǎn)詳解——3注釋函數(shù)注釋主要針對(duì)一個(gè)函數(shù)進(jìn)行的注釋,這個(gè)注釋內(nèi)容較多,便于閱讀者快速了解函數(shù)的相關(guān)信息。在函數(shù)實(shí)現(xiàn)之前,應(yīng)該給出和函數(shù)的實(shí)現(xiàn)相關(guān)的足夠而精練的注釋信息。內(nèi)容包括本函數(shù)功能介紹,調(diào)用的變量、常量說明,形參說明,特別是全局變量。/***************************************************************函數(shù)名:voidPositionBall(intx,inty)*功

能:在不同位置繪制小球*輸

入:小球的x方向的坐標(biāo)window_left--window_right*小球y方向的坐標(biāo)window_top--window_bottom*輸

出:無**************************************************************/針對(duì)一些練習(xí)用的小程序,不需要如此嚴(yán)格,可以采用簡化版本。/***************************************************************功

能:根據(jù)輸入年月日,計(jì)算星期**************************************************************/三技能點(diǎn)詳解——3注釋命名主要是標(biāo)識(shí)符的命名,命名要清晰、明了,有明確含義,同時(shí)使用完整的單詞或大家基本可以理解的縮寫,避免使人產(chǎn)生誤解。temp可縮寫為tmp;

flag可縮寫為flg;

message可縮寫為msg;statistic可縮寫為stat;

increment可縮寫為inc;

unsigned

chardat01;//修改unsignedcharliv_date;voidSet00(unsigned

charc);//修改voidSetName(unsignedcharc);

intClass_width;//局部整形變量,教室寬度charStudent_name;//全局字符型變量,學(xué)生名字函數(shù)命名,單詞詞間首字母大寫,voidCommInit();三技能點(diǎn)詳解——4命名案例1.2.1簡化規(guī)范根據(jù)給定的年、月、日計(jì)算是星期幾?需要采用基姆拉爾森算法,算法公式如下Weekday=(d+2*m+3*(m+1)/5+y+y/4-y/100+y/400)%7。針對(duì)一些練習(xí)用的小程序,我們采用簡化規(guī)范,簡化規(guī)范主要體現(xiàn)在注釋上面。三技能點(diǎn)詳解——5案例見教材內(nèi)容!案例1.2.2標(biāo)準(zhǔn)規(guī)范

針對(duì)一些能夠進(jìn)行拓展的程序,我們需要較為詳細(xì)的注釋,確保程序的可讀性和可移植性,我們進(jìn)行標(biāo)準(zhǔn)的規(guī)范。

實(shí)現(xiàn)小球沿著不同方向碰撞墻壁,并實(shí)現(xiàn)反彈。三技能點(diǎn)詳解——5案例見教材內(nèi)容!04技能點(diǎn)拓展03技能點(diǎn)詳解02技能點(diǎn)分析目錄CONTENTS01問題引入05技能點(diǎn)檢測任務(wù)3.3編程規(guī)范四技能點(diǎn)拓展——1頭文件路徑在引用頭文件時(shí),不要使用絕對(duì)路徑。如果使用絕對(duì)路徑,當(dāng)需要移動(dòng)目錄時(shí),必須修改所有相關(guān)代碼,繁瑣且不安全;使用相對(duì)路徑,當(dāng)需要移動(dòng)目錄時(shí),只需修改編譯器的某個(gè)選項(xiàng)即可。#include“/project/inc/hello.h”//不應(yīng)使用絕對(duì)路徑#include“../inc/hello.h”//可以使用相對(duì)路徑在引用頭文件時(shí),使用<>來引用預(yù)定義或者特定目錄的頭文件,使用“”來引用當(dāng)前目錄或者路徑相對(duì)于當(dāng)前目錄的頭文件。#include

<stdio.h>

//標(biāo)準(zhǔn)頭文件#include

<projdefs.h>

//工程指定目錄頭文件

#include“global.h”//當(dāng)前目錄頭文件#include“inc/config.h”//路徑相對(duì)于當(dāng)前目錄的頭文件為了防止頭文件被重復(fù)引用,應(yīng)當(dāng)用

ifndef/define/endif結(jié)構(gòu)產(chǎn)生預(yù)處理塊。#ifndef__DISP_H//文件名前名加兩個(gè)下劃線“__”,后面加“_H”#define__DISP_H......#endif頭文件中只存放“聲明”而不存放“定義”,通過這種方式可以避免重復(fù)定義。/*模塊1頭文件:module1.h*/extern

inta=5;//在模塊1的.h文件中聲明變量

/*模塊1實(shí)現(xiàn)文件:module1.c*/uint8_tg_ucPara;//在模塊1的.h文件中定義全局變量g_ucPara如果其它模塊需要引用全局變量g_ucPara,只需要在文件開頭包含module1.h/*模塊2實(shí)現(xiàn)文件:module2.c*/#include“module1.h”//在模塊2中包含模塊1的.h文件......g_ucPara=0;......四技能點(diǎn)拓展——2.頭文件防重包含04技能點(diǎn)拓展03技能點(diǎn)詳解02技能點(diǎn)分析目錄CONTENTS01問題引入05技能點(diǎn)檢測任務(wù)3.3編程規(guī)范五技能點(diǎn)檢測完成課堂任務(wù),在線提交;完成技能檢測,在線提交;C語言程序設(shè)計(jì)基礎(chǔ)與實(shí)踐模塊三編程初級(jí)應(yīng)用任務(wù)3.4編程錯(cuò)誤排查C語言程序設(shè)計(jì)基礎(chǔ)與實(shí)踐課程組04技能點(diǎn)拓展03技能點(diǎn)詳解02技能點(diǎn)分析目錄CONTENTS任務(wù)3.4編程錯(cuò)誤排查01問題引入05技能點(diǎn)檢測一問題引入現(xiàn)實(shí)生活中,我們總是會(huì)不停的犯錯(cuò),為了避免犯錯(cuò)我們會(huì)制定很多規(guī)則,也會(huì)采取許多措施,比如開車,我們會(huì)制定很多交通規(guī)則,為了遵守交通規(guī)則我們會(huì)采取很多措施,比如十字路口會(huì)設(shè)定交通燈,汽車座椅會(huì)有安全帶,測速系統(tǒng)會(huì)有超速警告,甚至還有攝像頭進(jìn)行駕駛員疲勞駕駛監(jiān)測。程序員要編寫一個(gè)好的程序,就必須遵守代碼規(guī)范,編程工具也會(huì)提供很多工具幫助程序員檢查語法、調(diào)試程序,那么這個(gè)工具如何使用呢?04技能點(diǎn)拓展03技能點(diǎn)詳解02技能點(diǎn)分析目錄CONTENTS01問題引入05技能點(diǎn)檢測任務(wù)3.4編程錯(cuò)誤排查二技能點(diǎn)分析1.編譯程序2.設(shè)置斷點(diǎn)3.單步執(zhí)行命令4.使用數(shù)據(jù)提示檢查變量學(xué)習(xí)目標(biāo)1.什么叫編譯2.什么是調(diào)試?3.什么是斷點(diǎn)?學(xué)期預(yù)習(xí)04技能點(diǎn)拓展03技能點(diǎn)詳解02技能點(diǎn)分析目錄CONTENTS01問題引入05技能點(diǎn)檢測任務(wù)3.4編程錯(cuò)誤排查

寫在源文件中的源代碼是人類可讀的源。它需要"編譯",轉(zhuǎn)為機(jī)器語言,這樣CPU可以按給定指令執(zhí)行程序。C語言編譯器用于把源代碼編譯成最終的可執(zhí)行程序。

“調(diào)試”這一術(shù)語可能有很多不同的含義,但從字面上看,它指從代碼中刪除bug。現(xiàn)在,可通過多種方法實(shí)現(xiàn)此目的。例如,你可以通過掃描代碼以查找拼寫錯(cuò)誤來進(jìn)行調(diào)試,也可以使用代碼分析器進(jìn)行調(diào)試。你可以使用性能探查器來調(diào)試代碼,也可以使用“調(diào)試器”進(jìn)行調(diào)試。

調(diào)試器是一種非常專業(yè)的開發(fā)人員工具,它可附加到正在運(yùn)行的應(yīng)用,并允許你檢查代碼。毫無疑問,軟件開發(fā)人員編寫的代碼并不總是按照預(yù)期行事。有時(shí)它執(zhí)行一些完全不同的操作!三技能點(diǎn)詳解——1如何啟動(dòng)調(diào)試我們?cè)趧?chuàng)建完程序后,通過“調(diào)試”菜單的“啟動(dòng)調(diào)試”,或者按F5啟動(dòng)調(diào)試功能/**************************************************程序內(nèi)容:利用雙重循環(huán)打印10行*號(hào),n行有n個(gè)星號(hào)*************************************************/#include

<stdio.h>//該頭文件定義了

printf()函數(shù)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論