




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、第九章編譯預處理9.1 選擇題【題9.1 以下敘述中不正確的是 。A預處理命令行都必須以 #1開始B)在程序中凡是以#號開始的語句行都是預處理命令行C) C程序在執(zhí)行過程中對預處理命令行進行處理D)以下是正確的宏定義#define IBM_PC【題9.2 以下敘述中正確的是。A 在程序的一行上可以出現(xiàn)多個有效的預處理命令行B)使用帶參的宏時,參數的類型應與宏定義時的一致C)宏替換不占用運行時間,只占編譯時間D)在以下定義中C R是稱為“宏名”的標識符#define C R 045【題9.3】請讀程序:#define ADD(x) x+x main()int m=1,n=2,k=3;int su
2、m=ADD(m+n)*k;printf("sum=%d ,sum);上面程序的運行結果是 。A) sum=9B) sum=10C) sum=12D) sum=18【題9.4】以下程序的運行結果是 。#define MIN(x,y) (x)<(y)?(x):(y) main() int i=10,j=15,k;k=10*MIN(i,j);printf( "%d n" ,k);A) 10B) 15C) 100D) 150【題9.5 在宏定義#define PI 3.14159 中,用宏名PI代替一個A)常量B)單精度數C)雙精度數D)字符串【題9.6】以下程序的
3、運行結果是#include <stdio.h>2.84+yprintf("%d ,(int)(a)PR(a); putchar( 'n')#define FUDGE(y)#define PR(a)#define PRINT1(a) main()int x=2;PRINT1(FUDGE(5)*x);A) 11B) 12C) 13D) 15OB)宏名無類型D)宏名必須用大寫字母表示【題9.7】以下有關宏替換的敘述不正確的是A)宏替換不占用運行時間C)宏替換只是字符替換【題9.8】C語言的編譯系統(tǒng)對宏命令的處理是 A)在程序運行時進行的B)在程序連接時進行的C)
4、和C程序中的其它語句同時進行編譯的D)在對源程序中其它成份正式編譯之前進行的【題9.9 若有宏定義如下:#define X 5#define Y X+1#define Z Y*X/2則執(zhí)行以下printf語句后,輸出結果是 int a; a=Y;printf("d n”,Z);printf("%d n” , -a);A) 7B) 12C) 12D) 76655【題9.10若有以下宏定義如下:#define N 2 #define Y(n) (N+1)*n)則執(zhí)行語句z=2*(N+Y(5);后的結果是。A)語句有錯誤B) z=34C) z=70D) z無定值【題 9.11 若
5、有宏定義:#define MOD(x,y) x%y則執(zhí)行以下語句后的輸出為 int z,a=15,b=100;z=MOD(b,a);printf( "%d n” ,z+);A) 11B) 10C) 6D)宏定義不合法【題9.12】以下程序的運行結果是 。#define MAX(A,B) (A)>(B)?(A):(B)#define PRINT(Y) printf( "Y=%d t”,丫) main()int a=1,b=2,c=3,d=4,t;t=MAX(a+b,c+d);PRINT(t);A) Y=3B)存在語法錯誤C) Y=7D) Y=0【題9.13】以下程序段中
6、存在錯誤的是 。A) #define array_size 100int array1array_size;B) #define PI 3.14159#define S(r) PI*(r)*(r) area=S(3.2);C) #define PI 3.14159#define S(r) PI*(r)*(r) area=S(a+b);D) #define PI 3.14159#define S(r) PI*(r)*(r) area=S(a);【題9.14】請讀程序:#include <stdio.h>#define MUL(x,y) (x)*y main() int a=3,b=4
7、,c;c=MUL(a+,b+); printf( "%d n" ,c);上面程序的輸出結果是 。A) 12B) 15C) 20D) 16【題9.15 #define能作簡單的替代,用宏替代計算多項式 4*x*x+3*x+2之值的函數f,正 確的宏定義是。A) #define f(x) 4*x*x+3*x+2B) #define f 4*x*x+3*x+2C) #define f(a) (4*a*a+3*a+2)D) #define (4*a*a+3*a+2) f(a)【題9.16】對下面程序段:#define A 3#define B(a) (A+1)*a) x=3*(A+
8、B(7);正確的判斷是。A)程序錯誤,不許嵌套宏定義B) x=93C) x=21D)程序錯誤,宏定義不許有參數2) 【題9.17】以下程序中,第一個輸出值是(1) ,第二個輸出值是( #include <stdio.h># define M 3# define N (M+1)# define NN N*N/2 main() printf( "d n”,NN);printf( "d , 5*NN); 【1】A)3B)4Q 6D)82 A)17B)18Q 30D)40【題9.18】以下程序的輸出結果為 。#include <stdio.h>#define
9、 F(y) 3.84+y#define PR(a) printf( "%d ,(int)(a)#define PRINT(a) PR(a); putchar( 'n')main() int x=2;PRINT(F(3)*x); A) 8B) 9C) 10D) 11【題9.19】以下程序的輸出結果為 。#define PT 5.5#define S(x) PT*x*x main()int a=1,b=2;printf( "4.1f n",S(a+b);A) 12.0B) 9.5C) 12.5D) 33.5【題9.20】以下在任何情況下計算平方數時都不
10、會引起二義性的宏定義是 。 A) #define POWER(x) x*x B) #define POWER(x) (x)*(x) C) #define POWER(x) (x*x) D) #define POWER(x) (x)*(x)【題9.21】在“文件包含”預處理語句的使用形式中,當#3后面的文件名用“ ”(雙引號)括起時,尋找被包含文件的方式是 。 A)直接按系統(tǒng)設定的標準方式搜索目錄 B)先在源程序所在目錄搜索,再按系統(tǒng)設定的標準方式搜索 C)僅僅搜索源程序所在目錄 D)僅僅搜索當前目錄【題9.22】在“文件包含”預處理語句的使用形式中,當 #include后面的文件名用 <
11、 > (尖 括號)括起時,尋找被包含文件的方式是 。 A)僅僅搜索當前目錄 B)僅僅搜索源程序所在目錄 C)直接按系統(tǒng)設定的標準方式搜索目錄 D)先在源程序所在目錄搜索,再按系統(tǒng)設定的標準方式搜索【題9.23】請讀程序: #define LETTER 0 main() char str20="C Language” ,c;int i; i=0; while(c=stri)!= 0') i+; #if LETTER if(c>= 'a' &&c<= 'z') c=c-32;#else if(c>='
12、A' &&c<= 'Z')c=c+32;#endif printf("%C ,c);上面程序的運行結果是 。A C LanguageB) c languageC) C LANGUAGE D) c lANGUAGE【題9.24】以下正確的描述是。A) C語言的預處理功能是指完成宏替換和包含文件的調用B)預處理指令只能位于 C源程序文件的首部C)凡是C源程序中行首以“ #"標識的控制行都是預處理指令D) C語言的編譯預處理就是對源程序進行初步的語法檢查【題9.25】C語言提供的預處理功能包括條件編譯,其基本形式為:#XXX標記符程序
13、段1#else程序段2#endif這里XXX可以是。A)define 或 includeB)ifdef或 includeC)ifdef 或 ifndef 或define D)ifdef或 ifndef或 if9.2 填空題【題9.26 設有以下宏定義:#define WIDTH 80#define LENGTH WIDTH+40則執(zhí)行賦值語句:v=LENGTH*20; (v為int型變量)后,v的值是【題9.27】設有以下宏定義:#define WIDTH 80#define LENGTH (WIDTH+40)則執(zhí)行賦值語句:k=LENGTH*20; (k為int型變量)后,k的值是【題9.2
14、8】下面程序的運行結果是 。#define DOUBLE(r) r*r main() int x=1,y=2,t;t=DOUBLE(x+y); pri ntf( "%d n" ,t);【題9.29】下面程序的運行結果是 。#define MUL(z) (z)*(z)main()printf( "d n”,MUL(1+2)+3);【題9.30】下面程序的運行結果是 。#define POWER(x) (x)*(x) main() int i=1;while(i<=4) printf( "%d t",POWER(i+); printf( “
15、n”);【題9.31】下面程序的運行結果是 。#define EXCH (a,b ) int t; t=a; a=b; b=t; main() int x=5,y=9;EXCH(x,y); printf( "x=%d,y=%d n” ,x,y);【題9.32】下面程序的運行結果是 。#define MAX(a,b,c) (a)>(b)?(a)>(c)?(a):(c):(b)>(c)?(b):(c) main() int x,y,z;x=1;y=2;z=3;printf("%d,” ,MAX(x,y,z);printf("%d,” ,MAX(x+y
16、,y,y+x);printf( "%d n” ,MAX(x,y+z,z);【題9.33】下面程序的運行結果是 。#define SELECT(a,b) a<b?a:b main() int m=2,n=4;printf( "%d n",SELECT(m,n);【題9.34】下面程序的運行結果是 。#define MAX(a,b) (a>b?a:b)+1main()int i=6,j=8,k; printf( "%d n”,MAX(i,j);【題9.35 設有宏定義如下:#define MIN(x,y) (x)<(y)?(x):(y)#d
17、efine T(x,y,r) x*r*y/4則執(zhí)行以下語句后,s1的值為【1,s2的值為【2】。 int a=1,b=3,c=5,s1,s2;s1=MIN(a=b,b-a);s2=T(a+,a*+b,a+b+c);【題9.36】請讀程序:#include <stdio.h>#define BOT (-2)#define TOP (BOT+5)#define PRI(arg) printf("%d n" ,arg)#define FOR(arg) for(;(arg);(arg)-) main() int i=BOT產TOP; FOR(j) switch(j) c
18、ase 1: PRI(i+);case 2: PRI(j); break; default: PRI(i); 執(zhí)行FOR1環(huán)時,j的初值是【1】,終值是【2】。【題9.37】下面程序的運行結果是 。#define PR(ar) printf("%d ,ar)main() int j,a=1,3,5,7,9,11,13,15,i=5; for(j=3;j;j-) switch(j) case 1:case 2: PR(ai+); break;case 3: PR(a-i);【題9.38】下面程序的運行結果是 #define PRI printf#define NL " n&q
19、uot;#define D"%d#define D1 D NL#define D2 D D NL#define D3 D D D NL#define D4 D D D D NL#define S"%S'main()int a,b,c,d;char string尸 "TABLE ; a=1; b=2; c=3; d=4;PRI(D1,a);PRI(D2,a,b);PRI(D3,a,b,c);PRI(D4abed); PRI(S,string);【題9.39】以下程序的運行結果是 #define A 4#define B(x) A*x/2 main() flo
20、at c,a=4.5;c=B(a);printf( "%5.1f n" ,c);【題9.40】以下程序的運行結果是 #include <stdio.h>#define sw(x,y) xA=y; yA=x; xA=y; main()int a=10,b=01;sw(a,b);printf( "%d,%d n” ,a,b);【題9.41】以下程序的輸出結果是 。#define PR(a) printf( "%d t",(int)(a)#define PRINT(a) PR(a); printf("ok! ”)main()in
21、t i,a=1;for(i=0;i<3;i+)PRINT(a+i); printf( “ n”);【題9.42】以下程序的輸出結果是 。main()int b=5;#define b2#define f(x) b*(x) int y=3;printf("%d n” ,f(y+1);#undef b printf("%d n” ,f(y+1);#define b3 printf("%d n” ,f (y+1);【題9.43】設有以下程序,為使之正確運行,請在口中填入應包含的命令行。(注:try_me() 函數在a:myfile.txt中有定義。)口main()
22、 printf(“ n”);try_me(); printf(“ n”);【題9.44】設有以下程序,為使之正確運行,請在口中填入應包含的命令行。/* a.c */ 【1】 【2】main() printf( “ n”); try_me();/* 函數調用 */printf( “ n”);注:try_me()函數在 myfile.txt 中有定義,其內容如下:/* myfile.txt */ try_me()char c;if(c=getchar()!= , n )try_me(); putchar(c);【題9.45】設有以下程序,為使之正確運行,請在口中填入應包含的命令行。 口main()
23、int x=2,y=3;printf( "d n”,pow(x ,y);【題9.46】以下程序的運行結果是 。main()int a=10,b=20,c;c=a/b;#ifdef DEBUGprintf( "a=%d,b=%d: ,a,b);#endif printf( "c=%d n” ,c);【題9.47】以下程序的運行結果是 。#define DEBUGmain()int a=14,b=15,c;c=a/b;#ifdef DEBUGprintf( "a=%o,b=%o: ,a,b);#endif printf( "c=%d n” ,c);
24、【題9.48】以下程序的運行結果是 。#define DEBUG main()int a=20,b=10,c;c=a/b;#ifndef DEBUGprintf("a=%o,b=%o: ,a,b);#endifprintf("c=%d n” ,c);9.3 編程題【題9.49】輸入兩個整數,求它們相除的余數。用帶參的宏來編程實現(xiàn)?!绢}9.50】試定義一個帶參的宏 swap(x,y),以實現(xiàn)兩個整數之間的交換,并利用它將一維數組a和b的值進行交換。9.3編程鹿【夏立山】構入兩個整塊,求它m切除的柴散 用帶哆的走來懈哩實現(xiàn).理見5。試定義一個帝壽的宏5/&以實現(xiàn)兩個循敬
25、之同的交換.并枸用,已耕 漳 數翔0和L的他進仃笑換.JI 4 5 I) EHS. ID B【眼9.15】C« y. 2D DK 9, 25) i【理工 I” 工題立2】廣【題53】H E攫仇"Ht也t期iT】U 題也a】P I則9,9】口 9, 11 1 B I題乳 12】C («£!?. 133 1> 【睥務 3】R 工盤“6】日 I卷出17】UtH觸9. UH H t9. 11J B B ».21 B 9.22 C【題 9.23E 9. 24 C【題 史2f 】附。【題即 0。 9. 28 l 6 也 9一292 19. 30 2 12E潁立箱】工=9,尸5【咫9.顯】3,3,5 1題9, 33】2 1密9,安9t 醫(yī)工 36L 32J 2fiE
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 外墻冬季施工方案
- 防滑地磚樓面施工方案
- 2025年天津法檢筆試試題及答案
- 2025年找貨運司機面試題及答案
- 低利率時代的投資和資產配置策略
- 噴射砂漿加固施工方案
- 清理植被灌木施工方案
- 鋼構的施工方案
- 2025年唐山工業(yè)職業(yè)技術學院單招職業(yè)適應性測試題庫參考答案
- 2025年山東省濱州地區(qū)單招職業(yè)適應性測試題庫新版
- 最實用的渣土系數表
- 重癥病人營養(yǎng)支持ICU
- 工會組建工作實務課件
- 外浮頂儲罐·內浮頂儲罐泡沫堰PPT
- 甘肅省平涼市各縣區(qū)鄉(xiāng)鎮(zhèn)行政村村莊村名明細及行政區(qū)劃代碼
- (完整版)初中道德與法治課程標準
- 自動化腹膜透析(APD)的臨床應用課件
- 滌綸長絲生產標準工藝簡介
- 數字圖像處理-6第六章圖像去噪課件
- 監(jiān)理施工設計圖紙簽發(fā)表
- DB43∕T 801-2013 二次張拉低回縮鋼絞線豎向預應力短索錨固體系設計、施工和驗收規(guī)范
評論
0/150
提交評論