- 2
- 0
- 约8.51千字
- 约 6页
- 2016-10-15 发布于贵州
- 举报
C语言教案-第七周
第十七节 宏命令、结构体
1:通过本节课学习,让学生理解宏命令、文件包含命令,掌握结构体。
1.1教学目的:1.理解宏命令、文件包含命令
2.掌握结构体
1.2教学内容: 1.宏命令文件包含命令结构体宏命令不带参数的宏一般形式:#define 标识符 字符串
如: #define PI 3.1415926
作用用标识符(称为“宏名”)PI代替字符串3.1415926”。
在预编译时,将源程序中出现的宏名PI替换为字符串3.1415926”,这一替换过程称为宏展开。
#define:宏定义命令
#undef:终止宏定义命令关于宏定义的说明:
1、一般宏名用大写字母表示。(变量名一般用小写字母)2、使用宏可以提高程序的可读性和可移植性如上述程序中,多处需要使用π值,用宏名既便于修改又意义明确。
3、宏定义是用宏名代替字符串,宏扩展时仅作简单替换,不检查语法语法检查在编译时进行。
4、宏定义不是C语句,后面不能有分号5、通常把#define命令放在一个文件的开头,使其在本文件全部有效6、宏定义终止命令 #undef结束先前定义的宏名7、宏定义中可以引用已定义的宏名8、对程序中用双引号括起来的字符串,即使与宏名相同,也不替换案例讲解:求圆的面积、周长。
#define R 3.0
#define PI 3.1415926
#deinfe L 2*PI*R
#define S PI*R*R
main()
{printf(L=%f\nS=%f\n,L,S);
}知识点讲解:带参数的宏#define 宏名(参数表) 字符串
带参数的宏在展开时,不是进行简单的字符串替换,而是进行参数替换。文件包含命令行知识点讲解:文件包含命令行的一般形式为:
#include文件名文件包含命令的功能是把指定的文件插入该命令行位置取代该命令行,从而把指定的文件和当前的源程序文件连成一个源文件。
1、一个include命令只能指定一个被包含文件,如果要包含n个文件,用n个nclude命令。
2、#include命令的文件名,可以使用两种括号。
#include file2.h 先在引用被包含文件的目录查找file2.h文件,若没有,再到系统指定的目录查找。
#include file2.h 仅在系统指定的目录查找文件file2.h。Turbo C系统指定的目录,在Options|Directores菜单设定。
3、被包含文件与其所在文件,在预处理后,成为一个文件,因此,如果被包含文件定义有全局变量,在其它文件中不必用extern关键字声明。但一般不在被包含文件中定义变量。案例讲解:
文件file1.c
#include print_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);
}#include 的目的是?
问题2:如何选择 #include 后的文件名?
具体知识点3:结构体知识点讲解: 结构体类型声明的一般形式:
struct 结构体名
{类型名1 成员名表1;
类型名2 成员名表2;
……
类型名n 成员名表n;
};
案例讲解:假设学生基本情况包括学号和两门成绩,编写程序计算学生两门课的平均成绩,并输出该学生的有关信息。
编程分析:声明学号和两门课的成绩的结构体类型,将表示学生基本情况的变量定义为该结构体类型,平均成绩定义为简单类型。程序如下:
#include stdio.h
struct ex1 /*声明结构体类型,有三个成员。*/
{long int num;
float s1;
float s2; };
main()
{float ave;
struct ex1 wang; /*定义struct ex1类型的变量 wang */
wang.num=1000101;
wang.s1=89.5;
wang.s2=90;
ave=( wang.s1+wang.s1)/2;
printf(“ 学号 成绩1 成绩2 平均成绩\n”);
printf(“%10ld%8.1f%8.1f%8.1f\n”,wang.num,wang.s1 ,wang.s2,ave);
}
程序运行结果:学号 成绩1 成绩2 平均成绩
1000101 89.5 90.0 89.8
知识点讲解:结构体数组
案例讲解:对候选人得票的统计程序。设有三个候选人,每次输入一个得票的候选人的名字,要求最后输
原创力文档

文档评论(0)