c語言習(xí)題集合預(yù)處理命令_第1頁
c語言習(xí)題集合預(yù)處理命令_第2頁
c語言習(xí)題集合預(yù)處理命令_第3頁
c語言習(xí)題集合預(yù)處理命令_第4頁
c語言習(xí)題集合預(yù)處理命令_第5頁
免費(fèi)預(yù)覽已結(jié)束,剩余1頁可下載查看

下載本文檔

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

文檔簡介

1、第六章 預(yù)處理命令6 1 選擇題1 下面敘述中正確的是( )。A. 帶參數(shù)的宏定義中參數(shù)是沒有類型的B. 宏展開將占用程序的運(yùn)行時間C. 宏定義命令是 C 語言中的一種特殊語句D. 使用 #include 命令包含的頭文件必須以“ .h ”為后綴2 下面敘述中正確的是( )。A. 宏定義是 C 語句,所以要在行末加分號B. 可以使用 #undef 命令來終止宏定義的作用域C. 在進(jìn)行宏定義時,宏定義不能層層嵌套D. 對程序中用雙引號括起來的字符串內(nèi)的字符,與宏名相同的要進(jìn)行置換3 在“文件包含”預(yù)處理語句中,當(dāng) #include 后面的文件名用雙引號括起時,尋找被包含文件 的方式為( )。A.

2、 直接按系統(tǒng)設(shè)定的標(biāo)準(zhǔn)方式搜索目錄B. 先在源程序所在目錄搜索,若找不到,再按系統(tǒng)設(shè)定的標(biāo)準(zhǔn)方式搜索C. 僅僅搜索源程序所在目錄D. 僅僅搜索當(dāng)前目錄4 下面敘述中不正確的是( )。A. 函數(shù)調(diào)用時,先求出實(shí)參表達(dá)式,然后帶入形參。 而使用帶參的宏只是進(jìn)行簡單的字符替 換B. 函數(shù)調(diào)用是在程序運(yùn)行時處理的,分配臨時的內(nèi)存單元。而宏展開則是在編譯時進(jìn)行的, 在展開時也要分配內(nèi)存單元,進(jìn)行值傳遞C. 對于函數(shù)中的實(shí)參和形參都要定義類型, 二者的類型要求一致,而宏不存在類型問題, 宏 沒有類型D. 調(diào)用函數(shù)只可得到一個返回值,而用宏可以設(shè)法得到幾個結(jié)果5 下面敘述中不正確的是( )。A. 使用宏的次

3、數(shù)較多時,宏展開后源程序長度增長。而函數(shù)調(diào)用不會使源程序變長B. 函數(shù)調(diào)用是在程序運(yùn)行時處理的,分配臨時的內(nèi)存單元。而宏展開則是在編譯時進(jìn)行的, 在展開時不分配內(nèi)存單元,不進(jìn)行值傳遞C. 宏替換占用編譯時間D. 函數(shù)調(diào)用占用編譯時間6 下面敘述中正確的是 ( ) 。A. 可以把 define 和 if 定義為用戶標(biāo)識符B. 可以把 define 定義為用戶標(biāo)識符,但不能把 if 定義為用戶標(biāo)識符C. 可以把 if 定義為用戶標(biāo)識符,但不能把 define 定義為用戶標(biāo)識符D. define 和 if 都不能定義為用戶標(biāo)識符7 下面敘述中正確的是( )。A. #define 和 printf 都

4、是 C 語句B.#define是 C 語句,而 printf 不是C.printf 是 C 語句,但 #define 不是 D .#define 和 printf 都不是 C 語句 8 以下敘述中正確的是( )。A. 用 #include 包含的頭文件的后綴不可以是“ .a ”包含此B. 若一些源程序中包含某個頭文件;當(dāng)該頭文件有錯時,只需對該頭文件進(jìn)行修改, 頭文件所有源程序不必重新進(jìn)行編譯C. 宏命令行可以看作是一行 C 語句D. C 編譯中的預(yù)處理是在編譯之前進(jìn)行的 9 下列程序運(yùn)行結(jié)果為( )。#define R 3.0#define PI 3.1415926#define L 2*P

5、I*R#define S PI*R*Rmain()printf(L=%f S=%fn,L,S);A. L=18.849556 S=28.274333B. 18.849556=18.849556 28.274333=28.274333C. L=18.849556 28.274333=28.274333D. 18.849556=18.849556 S=28.274333 10以下程序執(zhí)行的輸出結(jié)果是 ( ) 。#define MIN(x,y) (x)(y)?(x):(y)main()int i,j,k;i=10;j=15;k=10*MIN(i,j);printf(%dn,k);A.15 B.100

6、 C.10 D.150 11下列程序執(zhí)行后的輸出結(jié)果是 ( ) 。#define MA(x) x*(x-1)main()int a=1,b=2;printf(%d n,MA(1+a+b);A. 6B. 8 C. 10D. 1212以下程序的輸出結(jié)果是 ( ) 。#define M(x,y,z) x*y+zmain()int a=1,b=2, c=3; printf(%dn, M(a+b,b+c, c+a);A. 19 B. 17 C. 15 D. 12 13程序中頭文件 typel.h 的內(nèi)容是 ( ) 。#define N 5#define M1 N*3 程序如下:#include type

7、1.h#define M2 N*2main()int i; i=M1+M2; printf(%dn,i); 程序編譯后運(yùn)行的輸出結(jié)果是( )。A. 10 B. 20 C. 25 D. 30 14請讀程序 :#include#define SUB(X,Y) (X)*Y main()int a=3, b=4; printf(%d, SUB(a+, b+); 上面程序的輸出結(jié)果是( )。A. 12 B. 15 C. 16 D. 20 15執(zhí)行下面的程序后 ,a 的值是 ( ) 。#define SQR(X) X*Xmain( )int a=10,k=2,m=1; a/=SQR(k+m)/SQR(k+

8、m); printf(%dn,a);A. 10 B. 1 C. 9 D. 0 16設(shè)有以下宏定義#define N 3#define Y(n) (N+1)*n)則執(zhí)行語句:z=2 * (N+Y(5+1); 后,z的值為()。A. 出錯 B. 42C. 48D. 541 7以下程序的輸出結(jié)果是 ( )。#define f(x) x*xmain( )int a=6,b=2,c; c=f(a) / f(b); printf(%dn,c);A. 9 B. 6 C. 36D. 1818有如下程序#define N 2 #define M N+1 #define NUM 2*M+1 main() int

9、i; for(i=1;i=NUM;i+) printf(%dn,i); 該程序中的 for 循環(huán)執(zhí)行的次數(shù)是 ( ) 。A. 5 B. 6 C. 7 D. 8 19執(zhí)行如下程序后,輸出結(jié)果為()。#include #define N 4+1 #define M N*2+N #define RE 5*M+M*N main() printf(%d,RE/2);以上結(jié)果都不正確A.150 B.100 C. 41 D. 20以下程序的輸出結(jié)果是()。#define LETTER 0 main() char str20= C Language,c; int i; i=0;while(c=stri)!=

10、0) i+;#if LETTERif(c= a &c=A&c(y)?(x):(y) main()int a=5,b=2,c=3,d=3,t; t=MAX(a+b,c+d)*10; printf(%dn,t);2 下面程序的運(yùn)行結(jié)果是 。#define N 10 #define s(x) x*x #define f(x) (x*x) main()int i1,i2; i1=1000/s(N); i2=1000/f(N);printf(%d,%dn,i1,i2);3 設(shè)有如下宏定義#define MYSWAP(z,x,y) z=x; x=y; y=z;以下程序段通過宏調(diào)用實(shí)現(xiàn)變量a、b內(nèi)容交換,請

11、填空。float a=5,b=16,c;MYSWAP( 【1】 ,a,b);4 計(jì)算圓的周長、面積和球的體積【1】 main() float l,r,s,v;printf(input a radus: ); scanf(%f ,【 2】 );l=2.0*PI*r; s=PI*r*r; v=4.0/3*(【 3】 );printf(l=%.4fn s=%.4fn v=%.4fn,l,s,v);5 計(jì)算圓的周長、面積和球的體積#define PI 3.1415926#define 【 1】 L=2*PI*R; 【2】 ; main()3】 );float r,l,s,v; printf(input

12、 a radus: ); scanf(%f,&r); CIRCLE(r,l,s,v);printf(r=%.2fn l=%.2fn s=%.2fn v=%.2fn, 63 答案及部分解析一選擇題答案1.A2.B3.B4.B5.D6.B7.D8.D9.A10.A11.B12.D13.C14.A15.B16.C17.C18.B19.C20.B1. 解析:關(guān)于宏的習(xí)題,我們要牢記一點(diǎn):宏展開只是簡單的字符串替換。宏名無類型,宏的參 數(shù)也沒有類型,所以選項(xiàng)A) 是正確的。宏展開是在正式編譯以前進(jìn)行的,不會占用程序的運(yùn)行時間,而會占用編譯時間,所以選項(xiàng)B)錯誤。規(guī)定所有的編譯預(yù)處理命令都不是C語言中的語句,因而,編譯預(yù)處理命令不以分號作為結(jié)束符,所以選項(xiàng)C)錯誤。頭文件習(xí)慣上以“ .h ”為后綴,但它只是習(xí)慣而不是規(guī)定。所以選項(xiàng)D)錯誤。9. 解析:注意雙引號中的宏名不被展開,所以輸出結(jié)果為L=18.849556 S=28.274333 ,而不是18.849556=18.849556 28.274333=28.274333 。10. 解 析 : 宏 展 開 就 是 簡 單 的 字 符 串 替 換 。 語 句 k=10*MIN(i,j); 經(jīng) 過 宏 展 開 為k=10*(i)(j)?(i):(j);。由于 *號的優(yōu)先級要高于 號的優(yōu)先級,因此要先進(jìn)行

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論