由宏定義來(lái)實(shí)現(xiàn)求兩個(gè)數(shù)的乘積和商數(shù)之筆試實(shí)例
解:#include
main()
#define product(a,b) (a*b)
#define divide(a,b) (a/b)
{
float result,n1,n2;
printf(“input n1:”);
scanf(“%f”,&n1);
printf(“input n2:”);
scanf(“%f”,&n2);
result=product(n1,n2);
printf(“%f\n”,result);
result=divide(n1,n2);
printf(“%f/n”,result);
}
拓展:
帶參數(shù)的宏定義的一般形式如下:
#define <宏名>(<參數(shù)表>) <宏體>
其中, <宏名>是一個(gè)標(biāo)識(shí)符,<參數(shù)表>中的參數(shù)可以是一個(gè),也可以是多個(gè),視具體情況而定,當(dāng)有多個(gè)參數(shù)的時(shí)候,每個(gè)參數(shù)之間用逗號(hào)分隔,
由宏定義來(lái)實(shí)現(xiàn)求兩個(gè)數(shù)的乘積和商數(shù)之筆試實(shí)例
,資料共享平臺(tái)
《由宏定義來(lái)實(shí)現(xiàn)求兩個(gè)數(shù)的乘積和商數(shù)之筆試實(shí)例》(http://www.msguai.com)。<宏體>是被替換用的字符串,宏體中的`字符串是由參數(shù)表中的各個(gè)參數(shù)組成的表達(dá)式。例如:#define SUB(a,b) a-b
如果在程序中出現(xiàn)如下語(yǔ)句:
result=SUB(2, 3);
則被替換為:
result=2-3;
如果程序中出現(xiàn)如下語(yǔ)句:
result= SUB(x+1, y+2);
則被替換為:
result=x+1-y+2;
在這樣的宏替換過(guò)程中,其實(shí)只是將參數(shù)表中的參數(shù)代入到宏體的表達(dá)式中去,上述例子中,即是將表達(dá)式中的a和b分別用2和3代入。
我們可以發(fā)現(xiàn):帶參的宏定義與函數(shù)類似。如果我們把宏定義時(shí)出現(xiàn)的參數(shù)視為形參,而在程序中引用宏定義時(shí)出現(xiàn)的參數(shù)視為實(shí)參。那么上例中的a和b就是形參,而2和3以及x+1和y+2都為實(shí)參。在宏替換時(shí),就是用實(shí)參來(lái)替換<宏體>中的形參。
注意問(wèn)題
【由宏定義來(lái)實(shí)現(xiàn)求兩個(gè)數(shù)的乘積和商數(shù)之筆試實(shí)例】相關(guān)文章:
1.面試實(shí)例:用兩個(gè)宏定義來(lái)計(jì)算 s=(x*y)1/2
2.筆試實(shí)例:用函數(shù)實(shí)現(xiàn)將n個(gè)數(shù)按輸入順序的逆序排列
7.面試的定義和種類