欧美色欧美亚洲高清在线观看,国产特黄特色a级在线视频,国产一区视频一区欧美,亚洲成a 人在线观看中文

  1. <ul id="fwlom"></ul>

    <object id="fwlom"></object>

    <span id="fwlom"></span><dfn id="fwlom"></dfn>

      <object id="fwlom"></object>

      C語言程序設計教案 第九章 編譯預處理

      時間:2019-05-13 00:19:28下載本文作者:會員上傳
      簡介:寫寫幫文庫小編為你整理了多篇相關(guān)的《C語言程序設計教案 第九章 編譯預處理》,但愿對你工作學習有幫助,當然你在寫寫幫文庫還可以找到更多《C語言程序設計教案 第九章 編譯預處理》。

      第一篇:C語言程序設計教案 第九章 編譯預處理

      第九章 編譯預處理

      課題:

      教學目的: 教學重點: 教學難點: 第九章 編譯預處理

      1、了解預處理的概念及特點

      2、掌握有參宏與無參宏的定義及使用,領(lǐng)會文件包含的使用及效果 掌握宏的使用,文件包含 有參宏與無參宏的使用

      步驟一 復習引導

      ANSI C標準規(guī)定可以在C源程序中加入一些“預處理命令”,以改進程序設計環(huán)境,提高編程效率。

      這些預處理命令是由ANSI C統(tǒng)一規(guī)定的,但它不是C語言本身的組成部分,不能直接對它們進行編譯。必須在對程序進行通常的編譯之前,先對程序中這些特殊的命令進行“預處理”,即根據(jù)預處理命令對程序作相應的處理。經(jīng)過預處理后程序不再包括預處理命令了,最后再由編譯程序?qū)︻A處理后的源程序進行通常的編譯處理,得到可供執(zhí)行的目標代碼。

      步驟二 講授新課

      C語言與其他高級語言的一個重要區(qū)別是可以使用預處理命令和具有預處理的功能。C提供的預處理功能主要有以下三種: 宏定義、文件包含、條件編譯。

      分別用宏定義命令、文件包含命令、條件編譯命令來實現(xiàn)。為了與一般C語句相區(qū)別,這些命令以符號“ #” 開頭。

      §9.1宏定義

      宏: 代表一個字符串的標識符。

      宏名:被定義為“宏”的標識符。

      宏代換(展開):在編譯預處理時,對程序中所有出現(xiàn)的 “宏名”,用宏定義中的字符串去代換的過程。

      一、不帶參數(shù)的宏定義

      一般形式:

      #define

      標識符

      字符串

      #define PI 3.1415926

      main()

      { float l, s, r, v;

      printf(“input radius:”);

      scanf(“%f”, &r);

      l = 2.0*PI*r;

      s = PI*r*r;

      v = 3.0/4*PI*r*r*r;

      printf(“%10.4f,%10.4f,%10.4n”, l, s, v);

      }

      例如:由鍵盤輸入y值,求表達式:

      3(y2+3y)+ 4(y2+3y)+ y(y2+3y)#define M(y*y+3*y)main(){ int s, y;

      printf(“Input a number :”);scanf(“%d”,&y);

      s=3*M+4*M+y*M;

      printf(“s=%dn”,s);} 先宏展開:s=3*(y*y+3*y)+4*(y*y+3*y)+ y*(y*y+3*y)再與源程序合并

      說明:

      ⑴宏名一般用大寫表示,以便與變量名區(qū)分。⑵使用宏名使程序易讀,易修改。⑶只作簡單的置換,不作正確性檢查。⑷宏定義不是C語句,不必在行末加分號。

      ⑸宏名的作用域一般從自定義命令到本源文件結(jié)束。⑹可以用# undef命令終止宏定義的作用域。⑺宏定義允許嵌套,允許層層置換。

      ⑻宏名在源程序中用雙引號括起來,則TC中預處理不對其作宏代換。

      例: printf(“L=%f”, L);中雙引號內(nèi)L不替換。

      ⑼宏定義與定義的變量不同,宏只作字符替換,不分配內(nèi)存空間。⑽對“輸出格式”進行宏定義,可以減少書寫麻煩 例如:

      #define P printf #define D “%d,%d,%dn”

      #define F “%6.2f,%6.2f,%6.2fn” main(){ int a=5,c=8,e=11;

      float b=3.8,d=9.7;f=21.08;

      P(D,a,c,e);

      P(F,b,d,f);

      P(F,a+b,c+d,e+f);}

      二、帶參數(shù)的宏定義

      格式:#define

      宏名(參數(shù)表)字符串

      例:#define s(a,b)a*b

      {……

      area =s(3,2);

      ……}

      對帶參的宏展開后,為area=3*2;

      例: #define M(y)y*y+3*y

      {……

      k=M(5);

      ……}

      對其展開后,為k=5*5+3*5;

      說明:

      ⑴對帶參數(shù)的宏展開只是將宏名后括號內(nèi)的實參

      字符串代替#define命令行中的形參。

      ⑵宏定義時,在宏名與帶參數(shù)的括號之間不應加

      空格,否則將空格以后的字符都作為替代字符

      串的一部分。

      ⑶帶參宏定義,形參不分配內(nèi)存單元,因此不必

      作類型定義。(與函數(shù)的區(qū)別之一)⑷帶參宏與函數(shù)的區(qū)別之二:

      例如: main(){ int i=1;

      while(i<=5)

      printf(“%dt”,SQ(i++));} SQ(int y){ return(y)*(y);} 其結(jié)果為:1

      如:

      #define SQ(y)((y)*(y))main(){ int i =1;

      while(i<=5)

      printf(“%dt”,SQ(i++));} 運行結(jié)果: 2 12 30

      例:利用宏定義求兩個數(shù)中的大數(shù)。

      #define MAX(a,b)(a>b)?a:b main(){int x, y, max;

      scanf(“%d%d”, &x, &y);

      max =MAX(x, y);

      printf(“max=%dn”, max);} 帶參的宏定義和函數(shù)不同:

      1、函數(shù)調(diào)用時,先求實參表達式值,后代入。而帶參的宏只是進行簡單的字符替換。

      2、函數(shù)調(diào)用是在程序運行時處理的,分配臨時的內(nèi)存單元。而宏展開則是在編譯時進行的,不分配內(nèi)存單元,不進行值的傳遞,也無“返回值”。

      3、對函數(shù)中的實參和形參都要定義類型,類型應一致。而宏不存在類型問題,宏名和參數(shù)無類型,只是一個符號代表,展開時代入指定的字符即可。

      4、調(diào)用函數(shù)只可得到一個返回值,而用宏可以設法得到幾個結(jié)果。

      5、使用宏次數(shù)多時,宏展開后使源程序增長,而函數(shù)調(diào)用不使源程序變長。

      6、宏替換不占運行時間,只占編譯時間。

      而函數(shù)調(diào)用則占用運行時間(分配單元、保留現(xiàn)場、值傳遞、返回)一般用宏代表簡短的表達式比較合適。

      也可利用宏定義實現(xiàn)程序的簡化。例9.5:

      #define PR printf #define NL “n” #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[]=“CHINA”;

      a=1;b=2;c=3;d=4;

      PR(D1,a);

      PR(D2,a,b);

      PR(D3,a,b,c);

      PR(D4,a,b,c,d);

      PR(S, string);}

      §9.2 “文件包含”處理

      “文件包含”處理是指將指定的被包含文件的全部內(nèi)容插到該控制行的位置處,使其成為源文件的一部分參與編譯。因此,被包含的文件應該是源文件。通常置于源程序文件的首部,故也稱為“頭文件”。

      C編譯系統(tǒng)提供的頭文件擴展名為“.h”,但設計者可根據(jù)實際情況,自行確定包含文件的后綴、名字及其位置。

      一般形式,#include “文件名”

      #include <文件名>

      文件format.h

      #define PR printf #define NL “n” #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” 文件file1.c #include “format.h” main(){ int a,b,c,d;

      char string[]=“CHINA”;

      a=1;b=2;c=3;d=4;

      PR(D1,a);

      PR(D2,a,b);

      PR(D3,a,b,c);

      PR(D4,a,b,c,d);

      PR(S, string);} 注:被包含的文件應是源文件,而不應是目標文件。

      頭文件除了可以包含函數(shù)原型和宏定義外,也可以包括結(jié)構(gòu)體類型定義和全局變量定義等。說明:

      1、一個include命令只能指定一個被包含文件,如果要包含n個文件,要用n個include命令。

      2、如果文件1包含文件2,而文件2中要用到文件3的內(nèi)容,則可在文件1中用兩個include命令分別包含文件2和文件3,而且文件3應出現(xiàn)在文件2之前,即在“file1.c”中定義:

      #include “file3.h”

      #include “file2.h”

      3、在一個被包含文件中又可以包含另一個被包含文件,即文件包含是可以嵌套的。

      4、被包含文件(file2.h)與其所在的文件(file1.c),在預編譯后已成為同一個文件。

      5、在#include 命令中,文件名可以用雙引號或尖括號括起來。

      如: #include

      #include “file2.h” 二者的區(qū)別:

      用尖括號時稱為標準方式,系統(tǒng)到存放C庫頭文件所在的目錄中尋找要包含的文件。

      用雙引號時,系統(tǒng)先在用戶當前目錄中尋找要包含的文件,若找不到,再按標準方式查找。#include “c:tcincludemyfile.h”

      /*正確*/ #include

      /*正確*/ #include

      /*錯誤*/

      用尖括號:帶路徑:按指定路徑去尋找被包含文件,但此時被包含文件不能以“.h”結(jié)尾,否則錯誤。

      不帶路徑:僅從指定標準目錄下找。

      用引號: 帶路徑:按指定路徑去尋找被包含文件,不再從當前目錄和指定目錄下找。

      不帶路徑:先在當前目錄下找,找不到再在系統(tǒng)指定的標準目錄下找。

      步驟三 課堂小結(jié)

      本課主要講解了宏定義、“文件包含”處理。對帶參數(shù)的宏的使用,及與函數(shù)的使用的區(qū)別。搞清經(jīng)常使用的頭文件。

      步驟四 布置作業(yè) 上機作業(yè):(第九章課后練習)9.4 書面作業(yè):(第九章課后練習)9.7、9.8

      第二篇:《c語言程序設計新視角》第九章編譯預處理小結(jié)

      《c語言程序設計新視角》第九章 編譯預處理小結(jié) 編譯是把語句翻譯成機器碼,預編譯是在譯碼前進行的處理法,文件包含把已有的文件為我所用來添加,宏定義的作用是替換,方便程序編輯的好方法,條件編譯可實現(xiàn)按需編譯,方便調(diào)試讓代碼適應性更佳。

      第三篇:【好程序員學習筆記】C語言 編譯預處理命令

      文件包含:

      把指定的文件插入到預處理命令行所在的位置并取代該命令行,即把指定的文件和當前的源程序文件連接成一個源文件。#include<文件名>

      在文件包含目錄中去查找指定的文件,并將該文件添加到源文件中。一個被包含的文件中可以含有文件包含命令來包含另一個文件。#include“文件名”

      命令中文件名的位置是當前源文件的位置,若在當前目錄中未找到該文件,則再到“包含目錄”中去查找。

      用一個標識符表示一個字符串,稱為宏,被定義為宏的標識符稱為宏名。在編譯預處理時對程序中所有出現(xiàn)的宏名用宏定義中的字符串去代換,這就是宏替換。它是由系統(tǒng)編譯程序時自動完成的。

      無參宏定義

      #define 標識符 字符串 如

      #define PI 3.14 使用宏時要注意:

      (1)宏定義是用宏名來表示一個字符串,在宏展開時用字符串取代宏名。

      2)宏定義不是變量定義或語句,在行末不能加分號,如果加上分號則分號也成為字符串的一部分。

      (3)宏定義可以出現(xiàn)在程序的任何地方,其作用域是宏定義命令所在位置開始到源程序結(jié)束。如果要終止其作用域可使用#undef命令。

      (4)宏定義允許嵌套,在宏定義的字符串中可以使用已經(jīng)定義的宏名。在宏展開時將逐層替換。

      (5)#define PI 3.1415926 #define AREA PI*y*y 有參宏定義

      #define 宏名(形參表)字符串

      對帶參數(shù)的宏,在調(diào)用中不僅要進行宏展開,而且還要用實參去替換形參。帶參宏調(diào)用的語法格式如下: 宏名(實參表); #define M(x)x+1 K=M(3);K=3+1 定義有參宏時要注意以下幾點:

      (1)有參宏定義中,宏名和形參表之間不能有空格出現(xiàn)。

      (2)在函數(shù)中,調(diào)用時要把實參的值賦給形參,進行“值傳遞”。而在帶參宏調(diào)用中,只是符號替換,不存在值傳遞問題。

      (3)宏定義中的形參只能是標識符,而宏調(diào)用中的實參可以是表達式。

      字符串內(nèi)的形參通常用括號括起來以避免出錯。

      在使用宏時不僅要將形式參數(shù)用括號括起來,還應將其整體用括號括起來。#define S(y)((y)*(y))條件編譯

      條件編譯可以按不同的條件去編譯不同的程序段。1#ifdef #ifdef 標識符 程序段1 #else 程序段2 #endif 功能:如果標識符已被#define定義過,則對程序段1進行編譯,否則對程序段2進行編譯。格式中的#else部分可以沒有,即: #ifdef 標識符

      程序段 #endif

      2、#ifndef 語法格式如下: #ifndef 標識符 程序段1

      #else 程序段2 #endif 功能與ifdef形式的功能正好相反。

      3、#if 常量表達式 #if 常量表達式 程序段1 #else 程序段2 #endif 功能:如果常量表達式的值為真(非0),則對程序段1進行編譯,否則對程序段2進行編譯,因此可以使程序在不同條件下,完成不同的功能。

      上面介紹的條件編譯實現(xiàn)的邏輯也可以用條件語句來實現(xiàn),但是用條件語句將會對整個源程序進行編譯,生成的目標代碼程序較長,運行時間也較長,采用條件編譯則根據(jù)條件只編譯其中的程序段1或程序段2,生成的目標程序較短。

      第四篇:C語言程序設計教案

      C語言程序設計教案

      C語言程序設計教案

      C 語言程序設計教案 C 語言概述 【教學目的】 1)了解 C 的發(fā)展 教學目的】 2)熟悉 C 的特點 教學重點】 【教學重點】 C 語言的特點 難點)(難點)教學方法】 【教學方法】 例舉法,推導法,歸納法 課時計劃】 【課時計劃】2 課時 【授課時間】2005-11-1 授課時間】 教學過程】 【教學過程】 導 言 程序的目的是處理數(shù)據(jù),所以設計程序首先的知道這門語言可以處理什么樣的數(shù)據(jù) 新課內(nèi)容 一,C 語言的歷史及其特征 二,簡單 C 語言的程序?qū)嵗?# include “stdio.h” main(){int a,b,sum;printf(“enter two numbers:”);scanf(“%d%d”,&a,&b);sum=a+b+6;printf(“%d”,sum);} 三,編輯,編譯,連接,運行一個 C 語言程序 四,C 語言的特點 課堂練習】 【課堂練習】 1.C 語言規(guī)定,必須以()作為主函數(shù)名..A.stdio B.function C.include D.main 2.C 程序的基本構(gòu)成單位是().A.子程序 B.函數(shù) C.過程 D.函數(shù)和過程 函數(shù)和過程 【小 結(jié)】 總結(jié):C 語言特點 課后作業(yè)】 【課后作業(yè)】7 頁 2 【板書設計 板書設計】 板書設計 一,C 語言的歷史及其特征 二,簡單 C 語言的程序?qū)嵗?# include “stdio.h” main()1 C 語言程序設計教案 {int a,b,sum;printf(“enter two numbers:”);scanf(“%d%d”,&a,&b);sum=a+b+6;printf(“%d”,sum);} 三,編輯,編譯,連接,運行一個 C 語言程序 四,C 語言的特點 教學后記】 【教學后記】 學生聽課認真,積極回答老師提出的問題.課堂教學效果很好,能夠按時完成課堂練習題.對軟件開發(fā)這個專業(yè)很有信心.2 C 語言程序設計教案 數(shù) 據(jù) 類 型 【教學目的】 1)常量.變量概念簡要介紹 教學目的】 2)詳細介紹,三種類型的常量.變量的使用規(guī)則,占內(nèi)存大小及范圍 教學重點】 【教學重點】 變量的使用 教學難點】 【教學難點】 變量占內(nèi)存空間大小 授課時間】 【授課時間】2005-11-2 課時計劃】 【課時計劃】2 課時 【教學方法】舉例法 教學方法】 方法 教學過程】 【教學過程】 導 言 程序 = 數(shù)據(jù)結(jié)構(gòu) + 算法 + 程設方法 + 語言工具 新課內(nèi)容 一, 數(shù)據(jù)類型分類 1.基本類型 2.構(gòu)選類型 3.指針類型 4.空類型 二, 常量,變量 1, 常量,符號常量(1)定義:其值不改變(2)分類 a.整型: 2,0,-1 b.實型: 2.2 ,-3.4 c.字符: 'a','c' 2,變量(1)定義:值可以改變(2)組成因素 int a=20;變量名:a 變量值:20(3)標識符 a.定義:標識符,變量名,函數(shù)名,數(shù)組名等;b.規(guī)則: 已字母下劃線打頭 c.長度:ANSIC 不限 TURBOC 限 32 個字符(4)使用:先定義后使用 三, 數(shù)據(jù) 1,整型數(shù)據(jù) 3 C 語言程序設計教案.整型常量表示方法 a.十進制 123 ,-123 b.八進制 o35,o27 c.十六進制 oxA3,ox12.整型變量 a.形式: 2 進制 a.分類: int 2b short int 2b long int 4b b.定義 int a, b unsigned int c,d;long e, f,.整型,常量類型 2, 實型數(shù)據(jù).表示方法 123, 123.0 ,0.0.實型變量 float 4b double 8b long double 16b double 類型.類型 float a;double b;b=1234.789 a=123456.789 3,字符數(shù)據(jù).字符常量.一般字符 例子:“b”,“c”,“1”,'!'.特殊字符常量 說明: 以 開頭的 :.字符變量.定義 char c1, c2;c1='A';c2='b'.舉例 輸出: a,A 4 C 語言程序設計教案 97,65.字符串變量 1.定義:例 “123”“A” , 2.以字符'