實驗8編譯預處理

2022-11-17 13:33:07 字數 880 閱讀 1157

一、實驗目的

(1)掌握巨集定義的方法;

(2)掌握檔案包含處理方法;

(3)掌握條件編譯的方法。

二、實驗內容

題目1 定義乙個帶引數的巨集,使兩個引數的值互換,並寫出程式,輸入兩個數作為使用巨集時的實參。輸出已交換後的兩個值。

#define swap(a,b) t=b;b=a;a=t

main( )

執行結果如下:

input two integers a,b:3,4↙

now,a=4,b=3

思考:可否定義乙個能實現形參變數a、b相交換的函式swap(a,b),在主函式中呼叫它實現實引數變數的交換?

題目2 輸入兩個整數,求它們相除的餘數。用帶參的巨集來實現,程式設計序。

#define surplus(a,b) a%b

main( )

執行結果如下:

input two integers a,b:60,13↙

remainder is 8

題目3 給年份year,定義乙個巨集,以判別該年份是否閏年。提示:巨集名可定義為leap_year,形參為y,即定義巨集的形式為:

#define leap_year(y)(讀者設計的字串), 在程式中用以下語句輸出結果:

if(leap_year(year)) printf("%d is a leap year",year);

else printf("%d is not a leap year",year);

#define leap_year(y) (y%4==0)&&(y%100!=0)||(y%400==0)

main( )

執行結果:

input year:1990↙

1990 is not a leap year.

C 實驗報告函式與預處理

實驗報告 1.判別素數的程式 include using namespace std int main if flag cout 用17 34 2 1 0執行和檢驗。執行結果 結果分析 對於0和1來說,兩者都不是素數。其它執行結果均正確。2.驗證歌德 猜想 include include using...

預處理命令詳解

指令用途 空指令,無任何效果 include包含乙個源 檔案 define定義巨集 undef取消已定義的巨集 if如果給定條件為真,則編譯下面 ifdef如果巨集已經定義,則編譯下面 ifndef如果巨集沒有定義,則編譯下面 elif如果前面的 if給定條件不為真,當前條件為真,則編譯下面 end...

編譯原理實驗

實驗三中間的 優化 一 實驗目的 掌握區域性優化方法 提高機器的執行速度 二 相關知識 某些編譯程式在中間 或目標 生產之後要對其進行優化,所謂優化就是對 進行等價的變換。而變換後的 執行結果與變換前的 執行結果相同。而執行速度加快或占用記憶體空間減少。中間的 優化就是對中間 進行等價的變換。基本塊...