精品-清华大学C语言课件 第16章02 include指令
合集下载
清华大学C语言教学课件(共16个PPT)第1个共26页文档
常成 于困约 ,而败 于奢靡 。——陆 游 52、 生 命 不 等 于是呼 吸,生 命是活 动。——卢 梭
53、 伟 大 的 事 业,需 要决心 ,能力 ,组织 和责任 感。 ——易 卜 生 54、 唯 书 籍 不 朽。——乔 特
55、 为 中 华 之 崛起而 读书。 ——周 恩来
清华大学C语言教学课件(共16个PPT)
第1个
21、没有人陪你走一辈子,所以你要 适应孤 独,没 有人会 帮你一 辈子, 所以你 要奋斗 一生。 22、当眼泪流尽的时候,留下的应该 是坚强 。 23、要改变命运,首先改变自己。
24、勇气很有理由被当作人类德性之 首,因 为这种 德性保 证了所 有其余 的德性 。--温 斯顿. 丘吉尔 。 25、梯子的梯阶从来不是用来搁脚的 ,它只 是让人 们的脚 放上一 段时间 ,以便 让别一 只脚能 够再往 上登。
53、 伟 大 的 事 业,需 要决心 ,能力 ,组织 和责任 感。 ——易 卜 生 54、 唯 书 籍 不 朽。——乔 特
55、 为 中 华 之 崛起而 读书。 ——周 恩来
清华大学C语言教学课件(共16个PPT)
第1个
21、没有人陪你走一辈子,所以你要 适应孤 独,没 有人会 帮你一 辈子, 所以你 要奋斗 一生。 22、当眼泪流尽的时候,留下的应该 是坚强 。 23、要改变命运,首先改变自己。
24、勇气很有理由被当作人类德性之 首,因 为这种 德性保 证了所 有其余 的德性 。--温 斯顿. 丘吉尔 。 25、梯子的梯阶从来不是用来搁脚的 ,它只 是让人 们的脚 放上一 段时间 ,以便 让别一 只脚能 够再往 上登。
C语言实验教程(上)清华大学ppt
• 9.查看文件目录
经过编辑、编译、
链接和运行后,在
D:\PROGRAM中
(右图所选择的目
录)存放了相关的
文件
29
第一章 C程序实例
• 10.程序调试 • 程序调试有两种方法,一种是直接查看源程序并找出错误,另一种方法——使用 调试工具。 • 调试工具的使用方法有: • (1)断点的设置:在需要设置断点的语句处单击鼠标左键,再单击工具栏中的按钮, 即可设置断点。 • 断点通常设在可能存在错误的语句之前。 • (2)调试:单击工具栏中的按钮开始调试执行,程序执行至断点处暂停。此时调试 工具栏可见,单击其中的按钮,可以“单步执行”,即一次执行一行语句。 • (3)停止调试:单击停止调试按钮,停止程序的调试过程。
10
第一章 C程序实例
• 1.2 C的基本字符与词汇
• 1.2.1 C语言的字符集 • (1)字母和数字
• 小写字母 a b c…z • 大写字母 A B C…Z • 数字 0 1 2…9 • (2)特殊字符 • +=-_()*#&%$!|<>^.,;:"'/\?{}[]~ • (3)空白字符 • 包括空格、换行符和制表符
13
第一章 C程序实例
• (2) 保留字 • 保留字又称关键字,是C语言中具有特定含义
的一些单词
• ANSI C规定的保留字共有32个:
auto continue enum if short switch volatile
break default extern int signed typedef while
C++ 6.0”→“Microsoft Visual C++ 6.0”,启动VC++的集成开发环境 (IDE),界面如图所示 :
经过编辑、编译、
链接和运行后,在
D:\PROGRAM中
(右图所选择的目
录)存放了相关的
文件
29
第一章 C程序实例
• 10.程序调试 • 程序调试有两种方法,一种是直接查看源程序并找出错误,另一种方法——使用 调试工具。 • 调试工具的使用方法有: • (1)断点的设置:在需要设置断点的语句处单击鼠标左键,再单击工具栏中的按钮, 即可设置断点。 • 断点通常设在可能存在错误的语句之前。 • (2)调试:单击工具栏中的按钮开始调试执行,程序执行至断点处暂停。此时调试 工具栏可见,单击其中的按钮,可以“单步执行”,即一次执行一行语句。 • (3)停止调试:单击停止调试按钮,停止程序的调试过程。
10
第一章 C程序实例
• 1.2 C的基本字符与词汇
• 1.2.1 C语言的字符集 • (1)字母和数字
• 小写字母 a b c…z • 大写字母 A B C…Z • 数字 0 1 2…9 • (2)特殊字符 • +=-_()*#&%$!|<>^.,;:"'/\?{}[]~ • (3)空白字符 • 包括空格、换行符和制表符
13
第一章 C程序实例
• (2) 保留字 • 保留字又称关键字,是C语言中具有特定含义
的一些单词
• ANSI C规定的保留字共有32个:
auto continue enum if short switch volatile
break default extern int signed typedef while
C++ 6.0”→“Microsoft Visual C++ 6.0”,启动VC++的集成开发环境 (IDE),界面如图所示 :
清华大学C语言教学课件(共16个PPT)第2个共33页
16、业余生活要有意义,不要越轨。——华盛顿 17、一个人即使已登上顶峰,也仍要自强不息。——罗素·贝克 18、最大的挑战和突破在于用人,而用人最大的突破在于信任人。——马云 19、自己活着,就是为了使别人过得更美好。——雷锋 20、要掌握书,莫被书掌握;要为生而读,莫为读而生。——布尔沃
清华大学C语言教学课件(共16个PPT) 第2个
16、自己选择的路、跪着也要把它走 完。 17、一般情况下)不想三年以后的事, 只想现 在的事 。现在 有成就 ,以后 才能更 辉煌。
18、敢于向黑暗宣战的人,心里必须 充满光 明。 19、学习的关键--重复。
20、懦弱的人只会裹足不前,莽撞的 人只能 引为烧 身,只 有真正 勇敢的 人才能 所向披 靡。
ENDቤተ መጻሕፍቲ ባይዱ
C语言详细教程(完整版)ppt课件
. C Programming Language
教学目的:掌握“文化基础”中的相关概 念,明确学习方法,了解C语言基本知识。
教学要求:明确本课程的目标及学习方法, 复习“文化基础”中与C语言相关的知识: 数制、编码、计算机系统组成,了解算法 的概念及表示、C语言及标识符、C语言基 本结构。
学时:2学时
输出AVER的值
.
A
C Programming Language
结束
[例1.2] 输出一个数的绝对值。
开始 输入 X
输入 X N X>=0吗? Y
N X>=0吗? Y
输出 -X 输出 X
输出 -X
输出 X
结束
. C Programming Language
[例1.3] 输入10个 数,把其 中的正数 输出。
程序语言发展现状程序语言发展现状programminglanguage三翻译方式三翻译方式高级语言源程序高级语言源程序目标程序目标程序codecode翻译翻译programminglanguage用高级语言用高级语言书写的源程序书写的源程序用高级语言用高级语言书写的源程序书写的源程序机器指令机器指令程序程序机器指令机器指令程序程序函数函数库库函数函数库库编译程序编译程序编译编译用用高级语言高级语言书写的书写的源程序源程序用高级语言高级语言书写的书写的源程序源程序执行结果执行结果执行结果执行结果解释程序解释程序函数函数库库函数函数库库解释并解释并执行执行programminglanguage用计算机解决问题的基本过程
. C Programming Language
1.1 引言 1.2 算法和程序设计初步 1.3 C语言简介 1.4 集成开发环境TurboC 2.0简介
教学目的:掌握“文化基础”中的相关概 念,明确学习方法,了解C语言基本知识。
教学要求:明确本课程的目标及学习方法, 复习“文化基础”中与C语言相关的知识: 数制、编码、计算机系统组成,了解算法 的概念及表示、C语言及标识符、C语言基 本结构。
学时:2学时
输出AVER的值
.
A
C Programming Language
结束
[例1.2] 输出一个数的绝对值。
开始 输入 X
输入 X N X>=0吗? Y
N X>=0吗? Y
输出 -X 输出 X
输出 -X
输出 X
结束
. C Programming Language
[例1.3] 输入10个 数,把其 中的正数 输出。
程序语言发展现状程序语言发展现状programminglanguage三翻译方式三翻译方式高级语言源程序高级语言源程序目标程序目标程序codecode翻译翻译programminglanguage用高级语言用高级语言书写的源程序书写的源程序用高级语言用高级语言书写的源程序书写的源程序机器指令机器指令程序程序机器指令机器指令程序程序函数函数库库函数函数库库编译程序编译程序编译编译用用高级语言高级语言书写的书写的源程序源程序用高级语言高级语言书写的书写的源程序源程序执行结果执行结果执行结果执行结果解释程序解释程序函数函数库库函数函数库库解释并解释并执行执行programminglanguage用计算机解决问题的基本过程
. C Programming Language
1.1 引言 1.2 算法和程序设计初步 1.3 C语言简介 1.4 集成开发环境TurboC 2.0简介
精品-清华大学C语言课件 第16章03 条件编译
程序运行结果如图16.12所示:
图16.12 输出行号Fra bibliotekpragma命令
1.#pragma命令 #pragma命令的作用是设定编译器的状态,或者指示编译器完成一些特定的动作。 #pragma指令的一般形式如下:
#pragma 参数
参数可为以下几种情况: message参数,该参数能够在编译信息输出窗口中输出相应的信息。 code_seg参数,设置程序中函数代码存放的代码段。 once参数,保证头文件被编译一次。 2.预定义宏名 ANSI标准说明了五个预定义宏替换名。它们是: __LINE__:其含义是是当前被编译代码的行号。 __FILE__:其含义是当前源程序的文件名称。 __DATE__:其含义是当前源程序的创建日期。 __TIME__:其含义是当前源程序的创建时间。 __STDC__:其含义是用来判断当前编译器是否是为标准C,若其值为1表示符合标准C,否则不是标准C。
}程序效果如图16.13所示。
图16.13 使用条件编译隐藏密码
#ifndef_FILE_H_ #define_FILE_H_ //要包含的内容 #endif
实例4 防止头文件重复包含
程序运行结果如图16.11所示: 图16.11 #ifdef及#ifndef应用
#undef命令
在前面讲#define命令时提到过#undef命令,使用#undef命令用来删除事先定义了的宏定义。 #undef命令的一般形式如下:
#undef 宏替换名
例如:
#define MAX_SIZE 100 char array[MAX_SIZE]; #undef MAX_SIZE
图16.10 #else应用 #elif指令用来建立一种“如果…或者如果…”这样阶梯状多重编译操作选择,这与多分支if语 句中的else if类似。 #elif一般形式如下:
图16.12 输出行号Fra bibliotekpragma命令
1.#pragma命令 #pragma命令的作用是设定编译器的状态,或者指示编译器完成一些特定的动作。 #pragma指令的一般形式如下:
#pragma 参数
参数可为以下几种情况: message参数,该参数能够在编译信息输出窗口中输出相应的信息。 code_seg参数,设置程序中函数代码存放的代码段。 once参数,保证头文件被编译一次。 2.预定义宏名 ANSI标准说明了五个预定义宏替换名。它们是: __LINE__:其含义是是当前被编译代码的行号。 __FILE__:其含义是当前源程序的文件名称。 __DATE__:其含义是当前源程序的创建日期。 __TIME__:其含义是当前源程序的创建时间。 __STDC__:其含义是用来判断当前编译器是否是为标准C,若其值为1表示符合标准C,否则不是标准C。
}程序效果如图16.13所示。
图16.13 使用条件编译隐藏密码
#ifndef_FILE_H_ #define_FILE_H_ //要包含的内容 #endif
实例4 防止头文件重复包含
程序运行结果如图16.11所示: 图16.11 #ifdef及#ifndef应用
#undef命令
在前面讲#define命令时提到过#undef命令,使用#undef命令用来删除事先定义了的宏定义。 #undef命令的一般形式如下:
#undef 宏替换名
例如:
#define MAX_SIZE 100 char array[MAX_SIZE]; #undef MAX_SIZE
图16.10 #else应用 #elif指令用来建立一种“如果…或者如果…”这样阶梯状多重编译操作选择,这与多分支if语 句中的else if类似。 #elif一般形式如下:
精品-清华大学C语言课件 第16章04 综合应用
综合应用
本讲大纲
1.编写头文件包含圆面积的计算公式 2.利用宏定义求偶数的和
编写头文件包含圆面积的计算公式
【例16.8】 编写程序,将计算圆面积的宏定义存储在一个头文件中,输入半径便可得到圆的面积。 //main函数中
#include <stdio.h> #include "area.h" void main() {
float r;/*定义浮点型变量,存储圆的半径*/ printf("请输入半径:\n");/*提示用户输入圆的半径*/ scanf("%f",&r);/*接收用户的输入*/ printf("面积 =%.2f\n",Area(r));/*输出圆的面积*/ }
// area.h
#ifndef __AREA_H__ #define __AREA_H__ #define PI 3.14 double Area(float r) { return PI*r*r; } #endif
}程序运行效果如图16.15所示。
图16.15 利用宏定义求偶数和
程序效果如图16.14所示。 图16.14 编写头文件包含圆面积的计算公式
利用宏定义求偶数的和
【例16.9】 编写程序实现利用宏定义求1-100的偶数和,定义一个宏判断一个数是否为偶数。
#include<stdio.h> #define TRUE 1 #define FALSE 0 #define EVEN(x) (((x)%2==0)?TRUE:FALSE) void main() { int sum,i;/*定义整型变量,分别为存储累计和和循环计数变量*/ sum=0;/*给累加和初始化*/ for(i=1;i<=100;i++)/*1-100做循环*/ { if(EVEN(i))/*如果是偶数*/ sum+=i;/*累加*/ } printf("SUM=%d\n",sum);/*输出累加和*/
本讲大纲
1.编写头文件包含圆面积的计算公式 2.利用宏定义求偶数的和
编写头文件包含圆面积的计算公式
【例16.8】 编写程序,将计算圆面积的宏定义存储在一个头文件中,输入半径便可得到圆的面积。 //main函数中
#include <stdio.h> #include "area.h" void main() {
float r;/*定义浮点型变量,存储圆的半径*/ printf("请输入半径:\n");/*提示用户输入圆的半径*/ scanf("%f",&r);/*接收用户的输入*/ printf("面积 =%.2f\n",Area(r));/*输出圆的面积*/ }
// area.h
#ifndef __AREA_H__ #define __AREA_H__ #define PI 3.14 double Area(float r) { return PI*r*r; } #endif
}程序运行效果如图16.15所示。
图16.15 利用宏定义求偶数和
程序效果如图16.14所示。 图16.14 编写头文件包含圆面积的计算公式
利用宏定义求偶数的和
【例16.9】 编写程序实现利用宏定义求1-100的偶数和,定义一个宏判断一个数是否为偶数。
#include<stdio.h> #define TRUE 1 #define FALSE 0 #define EVEN(x) (((x)%2==0)?TRUE:FALSE) void main() { int sum,i;/*定义整型变量,分别为存储累计和和循环计数变量*/ sum=0;/*给累加和初始化*/ for(i=1;i<=100;i++)/*1-100做循环*/ { if(EVEN(i))/*如果是偶数*/ sum+=i;/*累加*/ } printf("SUM=%d\n",sum);/*输出累加和*/
清华大学C语言教学课件(共16个PPT)第2个共33页
26、要使整个人生都过得舒适、愉快,这是不可能的,因为人类必须具备一种能应付逆境的态度。——卢梭
▪
27、只有把抱怨环境的心情,化为上进的力量,才是成功的保证。——罗曼·罗兰
▪
28、知之者不如好之者,好之者不如乐之者。——孔子
▪
29、勇猛、大胆和坚定的决心能够抵得上武器的精良。——达·芬奇
▪
30、意志是一个强壮的盲人,倚靠在明眼的跛子肩上。——叔本华
谢谢!
33
清华大学C语言教学课件(共16个PPT) 第2个
51、山气日夕佳,飞鸟相与还。 52、木欣欣以向荣,泉涓涓而始流。
53、富贵非吾愿,帝乡不可期。 54、雄发指危冠,猛气冲长缨。 55、土地平旷,屋舍俨然,有良田美 池桑竹 之属, 阡陌交 通,鸡 犬相闻 。
▪
清华《C语言程序设计》2语句和循环ppt
else printf(“%d”,y); }
2021/8/24 C语言程序设计
22
2222
第 三 章
语 注意:不管例是、单若分变量支已还正是确定多义分,支有以,下如程果序段语句 句 由多个语句构成,必须要加上{}构成复合语句;
否则,要不程i序nt 存a=3在,b=语5,c法=7;错误,要不就结果错误。
b=t
2021/8/24 C语言程序设计
27
2277
第 三 章
语 句
例、输入三个数a,b,c,要求按由小到大的顺序输出。
If a>b 将a和b对换 If a>c 将a和c对换 If b>c 将b和c对换
a>b y
n a>c n
y a和b交换 a和c交换
b>c y c和b交换
2021/8/24 C语言程序设计
y=2*x;
if ( x < 0 ) y = 3 - x ;
printf(“y= %6.2f”, y );
}
2021/8/24 C语言程序设计
21
假 (0)
2211
第 三
章 (2)双分支选择语句
语 句
格式:if(表达式) 语句1 else
语句2
Y 条件
#include<stdio.h> main() 语句1
2021/8/24 C语言程序设计
9
99
第
三
章
语 句
主要内容
一、关系运算符和关系表达式 二、逻辑运算符和逻辑表达式 三、if语句 四、witch语句 五、程序举例
2021/8/24 C语言程序设计
10
1100
第
c语言ppt课件
汇编语言的应用场景
汇编语言主要用于系统软件、嵌入式系统等领域 。
C语言与汇编语言的混合编程方式
01
直接调用汇编代码
在C语言中直接使用内联汇编, 通过关键字__asm__将汇编代码 嵌入到C代码中。
02
通过函数调用汇编 代码
将汇编代码封装成函数,在C语 言中调用。
03
使用编译器特定的 语法
一些编译器支持特定的语法来混 合C语言和汇编语言,如GCC中 的asm()函数。
广度优先搜索
从根节点开始,逐层访问相邻的节点 ,直到所有的节点都被访问过。
05 C语言与汇编语言 的混合编程
汇编语言的概述
1 2
汇编语言定义
汇编语言是一种面向机器的语言,使用特定的符 号表示机器指令,如MOV, ADD, SUB等。
汇编语言的特点
汇编语言执行速度快,代码可读性较差,不易维 护。
3
嵌入式系统的概述
嵌入式系统的定义
01
嵌入式系统是一种专为特定任务设计的计算机系统,
通常具有体积小、功耗低、可靠性高等特点。
嵌入式系统的应用范围
02 嵌入式系统广泛应用于工业控制、智能家居、汽车电
子等领域。
嵌入式系统的硬件和软件
03
嵌入式系统的硬件通常包括微控制器、传感器、执行
器等,软件则包括嵌入式操作系统、应用程序等。
THANKS
感谢观看
搜索算法
顺序搜索
逐个比较待搜索元素与表中的每个元素,直到找到目标元素或搜索完整个表。
二分搜索
在有序表中,取中间位置元素,如果中间元素正好是要查找的元素,则搜索过程结束;如果待查元素 大于中间元素,则在右半部分继续查找;若待查元素小于中间元素,则在左半部分继续查找。
C语言程序设计(上)清华大学出版社PPT课件
"\nluck"
字符串常量的长度 : – 所包含的字符个数
字符串常量的存储方式:
所占存储单元数:串长度+1
例如:
a \0
字符串 结束标记
\n l u c k \0
3. 变量
26
1) 变量的有关概念
在程序运行过程中,其值改变的数据,称
为变量,变量用标识符表示,称为变量名。
变量必须“先定义后使用”
占内存(位) 占内存(字节)
数值范围
有效位数
32
4
3.4E-38~3.4E+38
7
64
8
1.7E-308~1.7E+308
16
80
10
1.2E-493~1.2E+4932
19
35
(2)表示方式。实型常数的表示方式如下。 十进制数:例如6.2,.96,-387.29。 指数形式:例如-2.3E3,-7.5E-3。
007 008 012 010 013 009 011 092 063 039 034 000
40
③字符串常量。字符串常量是由一对双引号 括起来的字符序列。例如:"BOOK",
“$20.5”等都是合法的字符串常量。 ④字符变量。字符变量的取值是字符常量,
即单个字符。字符变量的类型说明符是char。 ⑤符号常量。在C语言中可以用一个标识符
表2.3 字符型数据所占位数
数据类型 类 型 符
有符号字 符型
无符号字 符型
char unsigne
d char
占内 存 ( 位)
8 8
占内存 (字 节)
1 1
数值范围 (ASCII码值)
-128~127(有 符号字符型)
字符串常量的长度 : – 所包含的字符个数
字符串常量的存储方式:
所占存储单元数:串长度+1
例如:
a \0
字符串 结束标记
\n l u c k \0
3. 变量
26
1) 变量的有关概念
在程序运行过程中,其值改变的数据,称
为变量,变量用标识符表示,称为变量名。
变量必须“先定义后使用”
占内存(位) 占内存(字节)
数值范围
有效位数
32
4
3.4E-38~3.4E+38
7
64
8
1.7E-308~1.7E+308
16
80
10
1.2E-493~1.2E+4932
19
35
(2)表示方式。实型常数的表示方式如下。 十进制数:例如6.2,.96,-387.29。 指数形式:例如-2.3E3,-7.5E-3。
007 008 012 010 013 009 011 092 063 039 034 000
40
③字符串常量。字符串常量是由一对双引号 括起来的字符序列。例如:"BOOK",
“$20.5”等都是合法的字符串常量。 ④字符变量。字符变量的取值是字符常量,
即单个字符。字符变量的类型说明符是char。 ⑤符号常量。在C语言中可以用一个标识符
表2.3 字符型数据所占位数
数据类型 类 型 符
有符号字 符型
无符号字 符型
char unsigne
d char
占内 存 ( 位)
8 8
占内存 (字 节)
1 1
数值范围 (ASCII码值)
-128~127(有 符号字符型)
C语言(清华大学出版社)ppt课件
结构。 (4)具有结构化的控制语句 ,是完全模块化
和结构化的语言。 (5)语法限制不太严格,程序设计自由度大。
C程序设计(第三版)
C语言的特点
(6)允许直接访问物理地址,能进行位操 作,能实现汇编语言的大部分功能,可直接 对硬件进行操作。兼有高级和低级语言 的特点 。
(7)目标代码质量高,程序执行效率高。 只比汇编程序成的目标代码效率低10 %-20%。
C程序设计(第三版)
算法如下 :
S1:输入n
S2:i=2
(i作为除数)
S3:n被i除,得余数r
S4:如果r=0,表示n能被i整除,则打印n“不 是素数”,算法结束。否则执行S5
S5:i+1→i
S6:如果i≤n-1,返回S3。否则打印 n “是素
实际上,n不必被2到(n-1)的整数除,只需 被2到n/2间整数除,甚至只需被2到 之n 间的 整数除即可。
C程序设计(第三版)
说明: 本程序的作用是输出一行信息:
1.3 简单的C语Th言is程i序s a介C绍program.
#include <stdio.h>
/*文件包含*/
main( )
/*主函数 */
{
/*函数体开始*/
printf ("This is a C program.\n"); /*输出语句*/
(8)程序可移植性好(与汇编语言比)。基 本上不做修改就能用于各种型号的计算 机和各种操作系统。
C程序设计(第三版)
1.2 C语言的特点
问题:既然有了面向对象的C++语言,为 什么还要学习C语言?
解释1:C++是由于开发大型应用软件的需 要而产生的,并不是所有的人都要去编 写大型软件。
和结构化的语言。 (5)语法限制不太严格,程序设计自由度大。
C程序设计(第三版)
C语言的特点
(6)允许直接访问物理地址,能进行位操 作,能实现汇编语言的大部分功能,可直接 对硬件进行操作。兼有高级和低级语言 的特点 。
(7)目标代码质量高,程序执行效率高。 只比汇编程序成的目标代码效率低10 %-20%。
C程序设计(第三版)
算法如下 :
S1:输入n
S2:i=2
(i作为除数)
S3:n被i除,得余数r
S4:如果r=0,表示n能被i整除,则打印n“不 是素数”,算法结束。否则执行S5
S5:i+1→i
S6:如果i≤n-1,返回S3。否则打印 n “是素
实际上,n不必被2到(n-1)的整数除,只需 被2到n/2间整数除,甚至只需被2到 之n 间的 整数除即可。
C程序设计(第三版)
说明: 本程序的作用是输出一行信息:
1.3 简单的C语Th言is程i序s a介C绍program.
#include <stdio.h>
/*文件包含*/
main( )
/*主函数 */
{
/*函数体开始*/
printf ("This is a C program.\n"); /*输出语句*/
(8)程序可移植性好(与汇编语言比)。基 本上不做修改就能用于各种型号的计算 机和各种操作系统。
C程序设计(第三版)
1.2 C语言的特点
问题:既然有了面向对象的C++语言,为 什么还要学习C语言?
解释1:C++是由于开发大型应用软件的需 要而产生的,并不是所有的人都要去编 写大型软件。
精品-清华大学C语言课件 第16章05 本章常见错误
#include "file3.c" #include "file2.c"
这里要注意命令的顺序,file3.c要写在file2.c的前面。
本章常见错误
本讲大纲
1.带参数的宏最好加括号 2.使用宏时注意事项 3.文件包含的嵌套
带参数的宏最好加括号
定义带参数的宏时,最好用括号将参数括起来。有时候传递的参数可能是表达式而不只是一个 单独的值,这时候如果没有括号就会出错。如下面的代码,使用两个宏的结果是不一样的。
#define A(a,b)(a)*(b) #define B(a,b)a*b 4; printf("%d\n",A(x+y,x-y));//20 printf("%d\n",B(x+y,x-y));//26 }
包含文件也是可以进行嵌套的,一个被包含的文件file1.c又包含了另一个文件file2.c,就是 文件的嵌套。 下面介绍文件嵌套的形式。 在文件file1.c中:
#include "file2.c"
表示一个被包含的文件file1.c又包含了另一个文件file2.c。在文件file2.c中:
#include "file3.c"
使用宏时注意事项
在使用宏时应该注意以下几点: 宏定义不是C语言的语句,不要在行末添加分号。 书写宏定义的时候,如果需要续行,有些编译器需要加续行符(\)。 在宏定义时,宏名和带参数的括号间不要加空格,否则该空格将被看作是宏体的一部分。 进行宏替换时,不应增加或者减少内容,只是简单的替换。
文件包含的嵌套
这就是说文件file1.c包含文件file2.c,在文件file2.c中包含文件file3.c,也就是说file1.c 包含了两个文件,即file2.c和file3.c。
这里要注意命令的顺序,file3.c要写在file2.c的前面。
本章常见错误
本讲大纲
1.带参数的宏最好加括号 2.使用宏时注意事项 3.文件包含的嵌套
带参数的宏最好加括号
定义带参数的宏时,最好用括号将参数括起来。有时候传递的参数可能是表达式而不只是一个 单独的值,这时候如果没有括号就会出错。如下面的代码,使用两个宏的结果是不一样的。
#define A(a,b)(a)*(b) #define B(a,b)a*b 4; printf("%d\n",A(x+y,x-y));//20 printf("%d\n",B(x+y,x-y));//26 }
包含文件也是可以进行嵌套的,一个被包含的文件file1.c又包含了另一个文件file2.c,就是 文件的嵌套。 下面介绍文件嵌套的形式。 在文件file1.c中:
#include "file2.c"
表示一个被包含的文件file1.c又包含了另一个文件file2.c。在文件file2.c中:
#include "file3.c"
使用宏时注意事项
在使用宏时应该注意以下几点: 宏定义不是C语言的语句,不要在行末添加分号。 书写宏定义的时候,如果需要续行,有些编译器需要加续行符(\)。 在宏定义时,宏名和带参数的括号间不要加空格,否则该空格将被看作是宏体的一部分。 进行宏替换时,不应增加或者减少内容,只是简单的替换。
文件包含的嵌套
这就是说文件file1.c包含文件file2.c,在文件file2.c中包含文件file3.c,也就是说file1.c 包含了两个文件,即file2.c和file3.c。
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
这两行代码均使用C编译程序读入并编译,用于处理磁盘文件库的子程序。
上面给出了双引号和尖括号的形式,这里说下这两者之间的区别,用尖括号时,系统到存放C库函数 头文件所在的目录中寻找要包含的文件,这种称为标准方式;用双引号时,系统先在用户当前目录中寻 找要包含的文件,若找不到,再到存放C库函数头文件所在的目录中寻找要包含的文件。通常情况下,如 果为调用库函数用#include命令来包含相关的头文件,则用尖括号,可以节省查找的时间。如果要包含 的是用户自己编写的文件,一般用双引号,用户自己编写的文件通常是在当前目录中。如果文件不在当 前目录中,双引号可给出文件路径。
#include指令
在一个源文件中使用#include指令可以将另一个源文件的全部内容包含进来,也就是将另外的文件 包含到本文件之中。#include使编译程序将另一源文件嵌入带有#include的源文件,被读入的源文件必 须用双引号或尖括号括起来。例如:
#include "stdio.h"
#include <stdio.h>
程序运行结果如图16.6所示:
图16.6 文件包含应用 常用在文件头部的被包含的文件称为“标题文件”或“头部文件”,常以“.h”为后缀,如本例中的 f1.h。 一般情况下将如下内容放到.h文件中: 宏定义 结构、联合和枚举声明 typedef声明 外部函数声明 全局变量声明 使用文件包含为实现程序修改提供了方便,当需要修改一些参数时不必修改每个程序,只需修改一个 文件(头部文件)即可。 关于“文件包含”有以下几点要注意: 一个#include命令只能指定一个被包含的文件。 文件包含是可以嵌套的,即在一个被包含文件中还可以包含另一个被包含文件。 当在file1.c中包含文件file2.h,那么在预编译后就成为一个文件而不是两个文件,这时如果 file2.h中有全局静态变量,则该全局变量在file1.c文件中也有效,这时不需要再用extern声明。
将文件嵌入#include命令中的文件内是可行的,这种方式称为嵌套的嵌入文件,嵌套层次依赖于具 体实现。如图16.5所示:
file1.cfile2.cfil1.c#include
A
<file2.c>
A
图16.5 文件包含
【例16.2】 文件包含应用。
(1)文件f1.h #define P printf #define S scanf #define D "%d" #define C "%c" (2)文件f2.c #include<stdio.h> #include"f1.h"/*包含文件f1.h*/ void main() { int a; P("请输入第一个整数值:\n"); S(D,&a); /*调用f1中的宏定义*/ P("输入的整数值为:\n"); P(D,a); /*调用f1中的宏定义*/ P("\n"); P(C,a); P("\n"); }