版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
八、編譯預(yù)處理
宏定義
2文件包含命令3小型案例5
任務(wù)71條件編譯4任務(wù)分析1求解某校園圓形花壇的圓周長及圓面積要解決這類問題,首先為所需使用的常量確定好便于記憶和理解的符號標(biāo)識,以便構(gòu)造程序和整理程序文本,從而也方便程序的修改和移值,接下來按程序功能編碼。程序中運(yùn)用圓周長計算公式及圓面積計算公式進(jìn)行計算,公式書寫符合C語言語句形式即可。返回首頁任務(wù)分析1要解決這類問題,首先為所需使用的常量確定好便于記憶和理解的符號標(biāo)識,以便構(gòu)造程序和整理程序文本,從而也方便程序的修改和移值,接下來按程序功能編碼。程序中運(yùn)用圓周長計算公式及圓面積計算公式進(jìn)行計算,公式書寫符合C語言語句形式即可。數(shù)據(jù)需求問題輸入r/*表示圓的半徑*/問題輸出circ/*存放圓的周長*/area/*存放圓的面積*/返回首頁任務(wù)分析1求解圓周長及面積的程序*/#include<stdio.h>/*預(yù)處理,頭文件對printf,scanf函數(shù)的聲明*/#definePI3.14159/*定義符號常量PI*/doublecirc(r)doubler;{return(2.0*PI*r);}doublearea(r)返回首頁任務(wù)分析1doubler;{return(PI*r*r);}main(){doubler;/*定義雙精度型變量r*/printf(“請輸入待求圓半徑:”);/*輸入圓的半徑*/scanf(“%lf\n”,r);printf(“所求圓的周長%.4f=circ\n”,circ(r));/*所求圓的周長*/printf(“所求圓的面積%.4f=area\n”,area(r));/*所求圓的面積*/}運(yùn)行結(jié)果:請輸入待求圓半徑:1.0所求圓的周長=6.2832所求圓的面積=3.1416返回首頁宏定義1
宏定義是編譯預(yù)處理內(nèi)容之一,C語言的宏定義分為兩種形式,即帶參數(shù)的宏定義和不帶參數(shù)的宏定義兩種形式。返回首頁無參宏定義1無參宏是用一個簡單的名字代替一長的字符串,一般定義格式為:#define符號常量名字符串其中符號常量名稱為宏名,習(xí)慣上用大寫字母表示,常量名與所對應(yīng)的字符串間用空格符隔開,在程序中,凡出現(xiàn)符號常量名的地方,經(jīng)編譯預(yù)處理后就都被替換為它所對應(yīng)的字符串,即所謂的宏展開。
行尾無需符號無參宏定義1例8.1無參宏應(yīng)用舉例#include<stdio.h>#defineR3.0#definePI3.1415926#defineL2*PI*R#defineSPI*R*Rmain(){printf(“L=%f\nS=%f\n”,L,S);}程序運(yùn)行結(jié)果為:L=18.849556S=28.274333帶參宏定義1除簡單的宏定義(即不帶參的宏)外,C語言預(yù)處理還允許帶參數(shù)的宏定義,進(jìn)行預(yù)處理時不僅對定義的宏名進(jìn)行替換,而且還進(jìn)行參數(shù)替換,定義的一般格式為:#define宏名(參數(shù)表)字符串其中,字符串中應(yīng)該包含在參數(shù)表中所指定的參數(shù)注意:使用宏定義所帶的實參可以是常量、已被賦值的變量或表達(dá)式,一個宏定義所帶參數(shù)可以多于一個,使用帶參宏編程時,應(yīng)注意在宏定義中宏名和左括號間沒有空格,另外帶參宏還允許宏定義嵌套。返回首頁返回節(jié)首2
帶參宏定義例8.2帶參宏應(yīng)用舉例#include<stdio.h>#definePI3.1415926#defineCIRCLE(R,V)V=4.0/3.0*PI*R*Rmain(){floatr,v;scanf(“%f”,&r);CIRCLE(r,v);printf(“r=%6.2f,v=%6.2f\n”,r,v);}程序運(yùn)行結(jié)果為:3.5r=3.50,v=179.59返回首頁2
宏命令#undef用于終止宏定義的作用域,一般形式為:#undefine宏名例如:#defineG9.8main(){…../*G的有效范圍是從定義開始到#undefG止*/}#undefGf1(){……}分析:由于在函數(shù)f1()之前終止了宏名G的作用,故G不再在f1()中起作用,#undef也可用于函數(shù)內(nèi)部。終止宏定義2
所謂文件包含預(yù)處理是指在一個文件中將另外一個文件的全部內(nèi)容包含進(jìn)來的處理過程,即將另外的文件包含到本文件中。C語言編譯預(yù)處理命令#include實現(xiàn)包含操作,一般形式為:#include<文件名>或#include“文件名”其中,文件名是指要包含進(jìn)來的文本文件的名稱,也稱為頭文件或編譯預(yù)處理文件。
文件包含命令2
例如,在file1.c文件中有如下內(nèi)容:inta,b,c;floatx,y,z;charm,n,p;file2.c文件內(nèi)容如下:#include“file1.c”main(){……}則對file2.c文件進(jìn)行編譯處理時,在編譯處理階段將對其中的#include命令進(jìn)行”文件包含”處理,將file1.c文件中的全部內(nèi)容插入到file2.c文件中的#include“file1.c”預(yù)處理語句處,也即是將file1.c文件中的內(nèi)容包含到file2.c文件中,經(jīng)編譯預(yù)處理后,file2.c文件的內(nèi)容為:inta,b,c;floatx,y,z;charm,n,p;main(){……}文件包含命令2
不同的庫函數(shù)其功能是不一樣的,以下是C語言中常用的標(biāo)準(zhǔn)頭文件
文件包含命令表8.1C語言中的常用標(biāo)準(zhǔn)頭文件2
一般情況源程序中所有的行都參加編譯,但有時希望對其中一部分內(nèi)容只有在滿足一定條件下才進(jìn)行編譯,也即是對一部分內(nèi)容指定編譯條件,這就是“條件編譯”。適當(dāng)使用條件編譯將有助于程序的調(diào)試和移值。條件編譯分如下幾種形式:條件編譯2
1.帶#if、#else和#endif標(biāo)識的定義的一般形式為:#ifdef表達(dá)式程序段1#else表達(dá)式程序段2#endif其功能是當(dāng)表達(dá)式值為真時,則執(zhí)行程序段1;否則執(zhí)行程序段2,其表達(dá)式必須是不整型常量表達(dá)式。2.帶#ifdef標(biāo)識的定義的一般形式為:#ifdef宏名程序段1#else條件編譯2
程序段2#endif其功能是用來測試一個宏名是否被定義,若宏名被定義則編譯程序段1;否則編譯程序段2。3.帶#ifndef標(biāo)識的定義的一般形式為:#ifndef宏名程序段1#else程序段2#endif其功能是用來測試一個宏名是否曾被定義,若宏名未被定義則編譯程序段1;否則編譯程序段2。條件編譯2
例8.3從鍵盤輸入10個整數(shù),并依所設(shè)置的編譯條件將其中的最大值或最小值顯示出來。#include<stdio.h>#defineMFLAG1mai(){inti,M;intarray[10];for(i=0;i<10;i++)scanf(“%d”,&array[i]);/*鍵盤輸入整數(shù)到數(shù)組array中*/M=array[0];/*將數(shù)組中第一個元素賦給M*/for(i=1;i<10;i++) {#ifMFLAG/*根據(jù)條件編譯完成不同條件下的編譯操作*/條件編譯2
/*當(dāng)M為1時,/求10個數(shù)中的最大者,否則求最小者*/if(M<array[i])M=array[i];#elseif(M>array[i])M=array[i];#endif}printf(“M=%d”,M);}條件編譯2
提出問題:對字符的操作,有時需要將字符的大小寫進(jìn)行切換,比如輸入一組字符將它轉(zhuǎn)換為大寫形式輸出或是以小寫形式輸出等,本例程中就是要求任意輸入一行字母字符,根據(jù)需要設(shè)條件編譯,使之能將字母全改為大寫輸出或小寫輸出。小型案例2
分析問題:可先設(shè)定一個常量,作為后續(xù)進(jìn)行預(yù)處理的條件編譯命令的條件選項,依不同的條件作相應(yīng)的條件編譯。數(shù)據(jù)需求問題輸入LETTER/*作為存放字母字符的常量標(biāo)識*/str[]/*一個字符串?dāng)?shù)組*/問題輸出轉(zhuǎn)換后的字母符號相關(guān)計算公式小寫字母-32==大寫字母小型案例2
求解問題:算法如下1.讀取字符串?dāng)?shù)組的各個字符2.依LETTER標(biāo)識條件,作相應(yīng)的轉(zhuǎn)換3.用小寫字母與大寫字母間的差值為32進(jìn)行計算轉(zhuǎn)換小型案例2
程序?qū)崿F(xiàn):字符的大小寫轉(zhuǎn)換程序*/#defineLETTER1main(){charstr[20]=“Clanguage”,c;inti;
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 【語文課件】井岡翠竹 (鄂教版)課件
- 《基層醫(yī)院感染培訓(xùn)》課件
- 三年級寫作入門指導(dǎo)
- 平行和相交(黃玉紅的課件)
- 【大學(xué)課件】市場營銷調(diào)研與預(yù)測
- 一步一步走啊走視頻專用課件
- 《第三節(jié) 合理發(fā)展交通運(yùn)輸》課件1
- 固定收益策略報告:資金下還是短端上
- 《導(dǎo)師孫名松教授》課件
- 單位管理制度展示大全【職工管理篇】十篇
- BOSS GT-6效果處理器中文說明書
- 浙江省杭州市拱墅區(qū)2023-2024學(xué)年六年級(上)期末數(shù)學(xué)試卷
- 突發(fā)事件及自救互救學(xué)習(xí)通超星期末考試答案章節(jié)答案2024年
- 期末質(zhì)量評價(試題)-2024-2025學(xué)年一年級上冊數(shù)學(xué)人教版
- 生產(chǎn)與運(yùn)作管理第5版配套教材電子課件(完整版)
- 偉大的《紅樓夢》智慧樹知到期末考試答案章節(jié)答案2024年北京大學(xué)
- EIM Book 1 Unit 5 Successful people單元檢測試題
- 重慶市公路水運(yùn)工程工地試驗室管理實施細(xì)則
- 2021國家開放大學(xué)電大本科《流行病學(xué)》期末試題及答案
- 中國銀行_境外匯款申請表模板(練手)
- 中班數(shù)學(xué)活動《圖圖家請客》教案
評論
0/150
提交評論