習題九
1.以下敘述中錯誤的是。
A.C語言程序中的#include和#define均不是C語句
B.在C語言中,預處理命令都以“#”開頭
C.每個C語言程序必須在開頭包含預處理命令#include
D.一行中不能有多條預處理命令
2.有以下程序:
#defineP3
voidF(intx)
{return(P*x*x);}
voidmain()
{printf("%d\n",F(3+5));}
程序運行後的輸出結果是。
A.192B.29C.25D.編譯出錯
3.有以下的宏定義:
#defineSQR(x)x*x
則表達式a=16,a/=SQR(2+1)/SQR(2+1)執行後的值是。
A.16B.2C.9D.1
4.程序中,頭文件type1.h的內容是:
#defineN5
#defineM1N+3
源程序如下:
#include"type1.h"
#defineM2N+2
main()
{inti;
i=M1+M2;
printf("%d\n",i);
}
程序執行後的結果是。
A.10B.20C.25D.30
5.以下程序執行後的結果是。
#include
#defineF(x,y)(x)*(y)
main()
{inta=3,b=4;
printf("%d\n",F(a++,b++));
}
A.12B.15C.16D.20
6.以下程序執行後的結果是。
#defineM(x,y,z)x*y+z
main()
{inta=1,b=2,c=3;
printf("%d\n",M(a+b,b+c,c+a));
}
A.19B.17C.15D.12
7.下列說法不正確的是。
A.有參宏的參數不占內存空間
B.宏定義可以嵌套定義
C.宏定義可以遞歸定義
D.宏展開時,隻作替換,不含計算過程
8.下列說法正確的是。
A.宏名必須用大寫字母表示
B.預處理命令行必須在源程序的開頭
C.當程序有語法錯誤時,預處理的時候就能夠檢查出來
D.宏定義必須寫在函數之外