第一篇:C语言程序设计教案 第九章 编译预处理
第九章 编译预处理
课题:
教学目的: 教学重点: 教学难点: 第九章 编译预处理
1、了解预处理的概念及特点
2、掌握有参宏与无参宏的定义及使用,领会文件包含的使用及效果 掌握宏的使用,文件包含 有参宏与无参宏的使用
步骤一 复习引导
ANSI C标准规定可以在C源程序中加入一些“预处理命令”,以改进程序设计环境,提高编程效率。
这些预处理命令是由ANSI C统一规定的,但它不是C语言本身的组成部分,不能直接对它们进行编译。必须在对程序进行通常的编译之前,先对程序中这些特殊的命令进行“预处理”,即根据预处理命令对程序作相应的处理。经过预处理后程序不再包括预处理命令了,最后再由编译程序对预处理后的源程序进行通常的编译处理,得到可供执行的目标代码。
步骤二 讲授新课
C语言与其他高级语言的一个重要区别是可以使用预处理命令和具有预处理的功能。C提供的预处理功能主要有以下三种: 宏定义、文件包含、条件编译。
分别用宏定义命令、文件包含命令、条件编译命令来实现。为了与一般C语句相区别,这些命令以符号“ #” 开头。
§9.1宏定义
宏: 代表一个字符串的标识符。
宏名:被定义为“宏”的标识符。
宏代换(展开):在编译预处理时,对程序中所有出现的 “宏名”,用宏定义中的字符串去代换的过程。
一、不带参数的宏定义
一般形式:
#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)再与源程序合并
说明:
⑴宏名一般用大写表示,以便与变量名区分。⑵使用宏名使程序易读,易修改。⑶只作简单的置换,不作正确性检查。⑷宏定义不是C语句,不必在行末加分号。
⑸宏名的作用域一般从自定义命令到本源文件结束。⑹可以用# undef命令终止宏定义的作用域。⑺宏定义允许嵌套,允许层层置换。
⑻宏名在源程序中用双引号括起来,则TC中预处理不对其作宏代换。
例: printf(“L=%f”, L);中双引号内L不替换。
⑼宏定义与定义的变量不同,宏只作字符替换,不分配内存空间。⑽对“输出格式”进行宏定义,可以减少书写麻烦 例如:
#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);}
二、带参数的宏定义
格式:#define
宏名(参数表)字符串
例:#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;
说明:
⑴对带参数的宏展开只是将宏名后括号内的实参
字符串代替#define命令行中的形参。
⑵宏定义时,在宏名与带参数的括号之间不应加
空格,否则将空格以后的字符都作为替代字符
串的一部分。
⑶带参宏定义,形参不分配内存单元,因此不必
作类型定义。(与函数的区别之一)⑷带参宏与函数的区别之二:
例如: main(){ int i=1;
while(i<=5)
printf(“%dt”,SQ(i++));} SQ(int y){ return(y)*(y);} 其结果为:1
如:
#define SQ(y)((y)*(y))main(){ int i =1;
while(i<=5)
printf(“%dt”,SQ(i++));} 运行结果: 2 12 30
例:利用宏定义求两个数中的大数。
#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);} 带参的宏定义和函数不同:
1、函数调用时,先求实参表达式值,后代入。而带参的宏只是进行简单的字符替换。
2、函数调用是在程序运行时处理的,分配临时的内存单元。而宏展开则是在编译时进行的,不分配内存单元,不进行值的传递,也无“返回值”。
3、对函数中的实参和形参都要定义类型,类型应一致。而宏不存在类型问题,宏名和参数无类型,只是一个符号代表,展开时代入指定的字符即可。
4、调用函数只可得到一个返回值,而用宏可以设法得到几个结果。
5、使用宏次数多时,宏展开后使源程序增长,而函数调用不使源程序变长。
6、宏替换不占运行时间,只占编译时间。
而函数调用则占用运行时间(分配单元、保留现场、值传递、返回)一般用宏代表简短的表达式比较合适。
也可利用宏定义实现程序的简化。例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 “文件包含”处理
“文件包含”处理是指将指定的被包含文件的全部内容插到该控制行的位置处,使其成为源文件的一部分参与编译。因此,被包含的文件应该是源文件。通常置于源程序文件的首部,故也称为“头文件”。
C编译系统提供的头文件扩展名为“.h”,但设计者可根据实际情况,自行确定包含文件的后缀、名字及其位置。
一般形式,#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);} 注:被包含的文件应是源文件,而不应是目标文件。
头文件除了可以包含函数原型和宏定义外,也可以包括结构体类型定义和全局变量定义等。说明:
1、一个include命令只能指定一个被包含文件,如果要包含n个文件,要用n个include命令。
2、如果文件1包含文件2,而文件2中要用到文件3的内容,则可在文件1中用两个include命令分别包含文件2和文件3,而且文件3应出现在文件2之前,即在“file1.c”中定义:
#include “file3.h”
#include “file2.h”
3、在一个被包含文件中又可以包含另一个被包含文件,即文件包含是可以嵌套的。
4、被包含文件(file2.h)与其所在的文件(file1.c),在预编译后已成为同一个文件。
5、在#include 命令中,文件名可以用双引号或尖括号括起来。
如: #include
或
#include “file2.h” 二者的区别:
用尖括号时称为标准方式,系统到存放C库头文件所在的目录中寻找要包含的文件。
用双引号时,系统先在用户当前目录中寻找要包含的文件,若找不到,再按标准方式查找。#include “c:tcincludemyfile.h”
/*正确*/ #include
/*正确*/ #include
/*错误*/
用尖括号:带路径:按指定路径去寻找被包含文件,但此时被包含文件不能以“.h”结尾,否则错误。
不带路径:仅从指定标准目录下找。
用引号: 带路径:按指定路径去寻找被包含文件,不再从当前目录和指定目录下找。
不带路径:先在当前目录下找,找不到再在系统指定的标准目录下找。
步骤三 课堂小结
本课主要讲解了宏定义、“文件包含”处理。对带参数的宏的使用,及与函数的使用的区别。搞清经常使用的头文件。
步骤四 布置作业 上机作业:(第九章课后练习)9.4 书面作业:(第九章课后练习)9.7、9.8
第二篇:《c语言程序设计新视角》第九章编译预处理小结
《c语言程序设计新视角》第九章 编译预处理小结 编译是把语句翻译成机器码,预编译是在译码前进行的处理法,文件包含把已有的文件为我所用来添加,宏定义的作用是替换,方便程序编辑的好方法,条件编译可实现按需编译,方便调试让代码适应性更佳。
第三篇:【好程序员学习笔记】C语言 编译预处理命令
文件包含:
把指定的文件插入到预处理命令行所在的位置并取代该命令行,即把指定的文件和当前的源程序文件连接成一个源文件。#include<文件名>
在文件包含目录中去查找指定的文件,并将该文件添加到源文件中。一个被包含的文件中可以含有文件包含命令来包含另一个文件。#include“文件名”
命令中文件名的位置是当前源文件的位置,若在当前目录中未找到该文件,则再到“包含目录”中去查找。
宏
用一个标识符表示一个字符串,称为宏,被定义为宏的标识符称为宏名。在编译预处理时对程序中所有出现的宏名用宏定义中的字符串去代换,这就是宏替换。它是由系统编译程序时自动完成的。
无参宏定义
#define 标识符 字符串 如
#define PI 3.14 使用宏时要注意:
(1)宏定义是用宏名来表示一个字符串,在宏展开时用字符串取代宏名。
2)宏定义不是变量定义或语句,在行末不能加分号,如果加上分号则分号也成为字符串的一部分。
(3)宏定义可以出现在程序的任何地方,其作用域是宏定义命令所在位置开始到源程序结束。如果要终止其作用域可使用#undef命令。
(4)宏定义允许嵌套,在宏定义的字符串中可以使用已经定义的宏名。在宏展开时将逐层替换。
(5)#define PI 3.1415926 #define AREA PI*y*y 有参宏定义
#define 宏名(形参表)字符串
对带参数的宏,在调用中不仅要进行宏展开,而且还要用实参去替换形参。带参宏调用的语法格式如下: 宏名(实参表); #define M(x)x+1 K=M(3);K=3+1 定义有参宏时要注意以下几点:
(1)有参宏定义中,宏名和形参表之间不能有空格出现。
(2)在函数中,调用时要把实参的值赋给形参,进行“值传递”。而在带参宏调用中,只是符号替换,不存在值传递问题。
(3)宏定义中的形参只能是标识符,而宏调用中的实参可以是表达式。
字符串内的形参通常用括号括起来以避免出错。
在使用宏时不仅要将形式参数用括号括起来,还应将其整体用括号括起来。#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进行编译,因此可以使程序在不同条件下,完成不同的功能。
上面介绍的条件编译实现的逻辑也可以用条件语句来实现,但是用条件语句将会对整个源程序进行编译,生成的目标代码程序较长,运行时间也较长,采用条件编译则根据条件只编译其中的程序段1或程序段2,生成的目标程序较短。
第四篇:C语言程序设计教案
C语言程序设计教案
C语言程序设计教案
C 语言程序设计教案 C 语言概述 【教学目的】 1)了解 C 的发展 教学目的】 2)熟悉 C 的特点 教学重点】 【教学重点】 C 语言的特点 难点)(难点)教学方法】 【教学方法】 例举法,推导法,归纳法 课时计划】 【课时计划】2 课时 【授课时间】2005-11-1 授课时间】 教学过程】 【教学过程】 导 言 程序的目的是处理数据,所以设计程序首先的知道这门语言可以处理什么样的数据 新课内容 一,C 语言的历史及其特征 二,简单 C 语言的程序实例 # 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 语言规定,必须以()作为主函数名..A.stdio B.function C.include D.main 2.C 程序的基本构成单位是().A.子程序 B.函数 C.过程 D.函数和过程 函数和过程 【小 结】 总结:C 语言特点 课后作业】 【课后作业】7 页 2 【板书设计 板书设计】 板书设计 一,C 语言的历史及其特征 二,简单 C 语言的程序实例 # 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 语言的特点 教学后记】 【教学后记】 学生听课认真,积极回答老师提出的问题.课堂教学效果很好,能够按时完成课堂练习题.对软件开发这个专业很有信心.2 C 语言程序设计教案 数 据 类 型 【教学目的】 1)常量.变量概念简要介绍 教学目的】 2)详细介绍,三种类型的常量.变量的使用规则,占内存大小及范围 教学重点】 【教学重点】 变量的使用 教学难点】 【教学难点】 变量占内存空间大小 授课时间】 【授课时间】2005-11-2 课时计划】 【课时计划】2 课时 【教学方法】举例法 教学方法】 方法 教学过程】 【教学过程】 导 言 程序 = 数据结构 + 算法 + 程设方法 + 语言工具 新课内容 一, 数据类型分类 1.基本类型 2.构选类型 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.定义:标识符,变量名,函数名,数组名等;b.规则: 已字母下划线打头 c.长度:ANSIC 不限 TURBOC 限 32 个字符(4)使用:先定义后使用 三, 数据 1,整型数据 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, 实型数据.表示方法 123, 123.0 ,0.0.实型变量 float 4b double 8b long double 16b double 类型.类型 float a;double b;b=1234.789 a=123456.789 3,字符数据.字符常量.一般字符 例子:“b”,“c”,“1”,'!'.特殊字符常量 说明: 以 开头的 :.字符变量.定义 char c1, c2;c1='A';c2='b'.举例 输出: a,A 4 C 语言程序设计教案 97,65.字符串变量 1.定义:例 “123”“A” , 2.以字符' ' 结束标志.变量赋值 1.定义变量 同时赋值 例: int a=978;float=b=98.67;char=c='c';2.定义变量 一部分赋值 例: int a,b,c=91;3.几个变量 同时赋值 例: int a=b=c=d=97;课堂练习】 【课堂练习】 1, main(){float a, b;a=123456.789e+6;b=a+30 printf(“%f”,b)} 2, main(){ char c1, c2;c1=97;c2=65;printf(“%c,%cn”,c1,c2);printf(“%d,%c/n”,c1,c2);【课后作业】 26 页 3,9,10 课后作业】 作业 , , 【小 结】 注意特殊字符常量,符号常量,变量在内存的存储形式 【板书设计】 板书设计】 一, 数据类型分类 二, 常量,变量 1, 常量,符号常量 2, 变量 三, 数据 1,整型数据 2, 实型数据 3,字符数据 5 C 语言程序设计教案.字符串变量.变量赋值 【教学后记】 教学后记】 后记 本次课内容充实,知识点多,所讲内容,学生都能听懂,但运用不够熟练,需要多做练习, 以巩固加深.6 C 语言程序设计教案 运 算 符 与 表 达 式 【教学目的】 1.了解理解运算符 教学目的】 2.运用算术运算符及使用 授课重点】 【授课重点】 表达式的使用 授课难点】 【授课难点】 I++与++I 的区别 教学方法】 【教学方法】 举例法,分析法 授课时间】 【授课时间】 2005-11-3 课时计划】 【课时计划】 2 课时 【教学过程】 教学过程】 导 言 运算量+ 运算量 1 + 2 新课内容 一 各数值数据的混合运算 1.总则: 自动转换同类型 2.规则:.(1)float->double char,shor->int(2)可直/间转换 int->ussigned->long->double 二 算术运算符,表达式 1.运算符(1)算术(2)位 &!~ ^(3)条件 ? :(4)指针 & * 2.算术运算符,表达式(1)基本算术运算符 + — * /(2)运算符优先级 a.* /-> + b.同级,运算符结合 c.强制类型转换 形式:(类型名)(表达式)例子: main(){ float x;int y;x=8.56;7 C 语言程序设计教案 y=(int)x;printf(“x=%f,y=%d”,x,y);d.自增,自减运算 I++=>1)I, 2)I=I+1;++I=>1)I=I+1, 2)I 三,数据输入和数据输出 a)数据输出: 命令格式:printf(控制字符串,参数 1,参数 2,……)例如:main(){float x=1234.565;int y=234;char c='a';printf(“%f,%d,%c”,x,y,c);} 数据输入: 命令个是:scanf(控制字符串,参数 1,参数 2,……)例如:main(){float x int y;char c;scanf(“%f,%d,%c”,x,y,c);} 课堂练习】 【课堂练习】 分析程序的输出结果: main(){ int i=2;i+=i-=i+i;printf(“%dn”,i);} 【小 结】 数据类型必须掌握整型,浮点型,字符型,还要掌握各种运算符之间的区别与联系.课后总结】 【课后总结】 提纲 一,各种数据数据类型自动转换规则 二,算术运算符及表达式 1,自增 i++与++i 区别 , 1, 运算符优先级结合性 b)8 C 语言程序设计教案 2, 强制类型转换运算符 课后作业】 【课后作业】26 页 3 教学后记】 【教学后记】 学生听课认真,没有人开小差.能跟上老师的思路,积极思考问题.所讲内容都能听懂, 但个别容易出错的地方还有待加强.9 C 语言程序设计教案 顺序结构(数据的输入和输出)顺序结构(数据的输入和输出)【教学目的】 使学生明白现实世界程序的顺序处理 教学目的】 教学重点】 【教学重点】 理解顺序结构 教学难点】 【教学难点】 变量占内存空间大小 教学方法】 【教学方法】 讲授课 教学日期】 【教学日期】 2005-11-7 课时计划】 【课时计划】 2 课时 【教学过程】 教学过程】 导 言: 举例引出程序思想 新课内容: 一, 基本结构 1.顺序结构 A->B 2.选择结构 A->B 或 A->C 之中选择 3.循环结构 WHILE()~~ DO ~~WHILE()二, 数据输入输出语句 1.输入输出:用函数实现 2.使用库函数 “I#INCLUDE” 3.常用函数(I/0)(1)字符数据的 I/0 A.putchar(c)字符输出 putchar('')putchar('r')B.getchra()字符输入(2)格式输入/输出 A.printf(格式控制,输出列表)(1)%d 十进制 例:int I=123;printf(“%d”,I)123 printf(“%2d,%4d”,I,I)(2)%0 八进制 例:int I=-2;printf(“%d,%0”,I,I);(3)%x 十六进制 ffff(4)%u 输出无符号整型 123, 123 I=-2 I=177776 10 C 语言程序设计教案 unsigned ing a=65535(5)%c 输出一个字符 printf(“%c”,c)printf(“%d”,c);(6)%s 输出字符串 printf(“%s”,“hello”);printf(“%s”,“you are goods”)(7)%f 输出实数 float I,j printf(“%f”,11111.1111+33333.3333)(8)%e 指数输出 int I I=123.456;Printf(“%e”,I)l.234560e+002 B scanf 输入函数(1)形式:scanf(格式控制,地址列表)(2)例子: int I scanf(“%d”,&I);请你输入整性数据 44444.4444 三,C 语句 1.控制语句(1)if()~~else 条件语句(2)for()~~~循环语句(3)while()~~循环语句(4)do~while()循环语句(5)cotinue 循环语句(6)break 终止语句(7)switch 分支语句(8)goto 转向语句(9)return 返回语句 2.函数调用 printf()scanf()3.表达式语句 4.空语句;5.复合语句 {} 课堂练习】 【课堂练习】 1.输入三角形边求三角形的面积 2.从键盘输入一小写字符转化成大写字符 11 C 语言程序设计教案 【小 3.求: ax+bx+c=0 的根 结】 一,各种数据数据类型自动转换规则 二,算术运算符及表达式 1,自增 i++与++i 区别 , 3, 运算符优先级结合性 4, 强制类型转换运算符 课后作业】 【课后作业】34 页 10,11,12 , , 【教学后记】 教学后记】 上课纪律很好,所有学生都能认真听课.所讲知识都能听懂,练习能按时完成且正确率高.对于自加,自减的综合运用,还有些学生容易出错.下次课再强调一下.12 C 语言程序设计教案 语句)分 支 结 构(if switch 语句)【教学目的】 1)使学生能熟练运用简单的语句进行顺序结构程序设计 教学目的】 2)运用单分支条件语句进行判定结构程序设计 3)运用双分支条件语句进行判定结构程序设计 4)运用多分支条件语句进行判定结构程序设计 教学重点】 【教学重点】 条件语句的应用 教学难点】 【教学难点】 条件语句的熟练使用 教学方法】 【教学方法】 讲授课 【教学日期】 2005-11-8 教学日期】 时计划】 【课时计划】 4 课时 教学过程】 【教学过程】 导 言: 我们利用简单语句可以进行程序设计, 但只是简单程序设计.在设计程序时经常会遇到根 据某些情况进行选择操作,这样就得用判断语句.新课内容: 一,语句的分类 1.表达式语句 2.空语句 3.复合语句 4.函数调用语句 5.控制语句 二,if 语句 1.If 语句的一般形式 命令格式:if(条件)语句 1 [else 语句 2] 例如:#include“stdio.h” main(){int a,b,s1,s2;printf(“请输入两个整数 a,b:”);scanf(“%d,%d”,&a,&b);s1=a+b;s2=a*b;if(s1>s2)printf(“a 与 b 的和大于 a 与 b 的积”);else printf(“a 与 b 的积大于等于 a 与 b 的和”);} 2.If 语句中的复合语句 13 C 语言程序设计教案 如果两个分支中需要执行的语句不止一条,必须用“{}”括起来.例如:#include“stdio.h” main(){float a,b,u,v,s,r;printf(“请输入两个整数 a,b:”);scanf(“%d,%d”,&a,&b);if(s1>s2){r=a*a-b*b;s=a/b;} else {r=b*b-a*a;s=a/b+4;} u=(r+s)*(r+s);v=u*(r+s);printf(“u=%f,v=%f”,u,v);} 3.较复杂的条件表达式 4.If 语句的嵌套 了解 if 语句的嵌套规则 例如:输入 a, b 两个数,比较并输出结果.Main(){int a,b;printf(“please input two integer”;)scanf(“%d,%d” ,&a, &b);if(a)b)printf(“a)b”;)else if(a=0;I--)printf(“%d”,a[I]);} 例 2:从键盘输入字符,记下“a”到“z”这些小写字母出现的次数,当输入!号 时结束输入.Main(){int I,a[26];char ch;for(I=0;I<26;I++)a[I]=0;while(ch!='!')22 C 语言程序设计教案 {scanf(“%c”,&ch);if(ch>='a'&&ch<='z')a[I]=a[ch-97]+1;} for(I=0;I<26;I++)printf(“%d,a[I])} 四,二维数组的定义 类型名 数组名[常量表达式 1] [常量表达式 2] 特点:可以定义多个分量,但这些分量只能存储同一个类型的数据.五,数组分量的引用 例如:int a[3] [4]-----定义一个有 12 个分量的数组 我们可以把他们看成三个一维数组,数组名分别为 a[0] a[1] a[2]分量的引用 a[0][0] a[0][1] a[0][2] a[0][3] a[1][0] a[1][1] a[1][2] a[1][3] a[2][0] a[2][0] a[2][0] a[2][0] 六,二维数组的应用 建立一个 3*4 的矩阵,初始值来源于键盘的输入,并且输出 课堂练习】 【课堂练习】输入一个有序序列,在输入一个新数,将此数插入在此序列中.【小 结】一维数组,二维数组的定义 一维数组的分量引用,二维数组的分量的引用 一维数组和二维数组的应用 课后作业】 【课后作业】84 页 1 教学后记】 【教学后记】 一维数组的应用学生能理解,且应用得较好.二维数一开始在理解上有些困难,通过在黑 板上演示程序的执行过程,学生掌握了二维数组的内容.涉及较复杂,抽象内容最好的方法是 以直观的方式给学生展示,这样便于学生理解和掌握.23 C 语言程序设计教案 字符数组与字符串 【教学目的】 1)理解字符数组的定义.教学目的】 2)掌握数组定义的格式及数组的应用方法 3)综合运用数组.教学重点】 【教学重点】综合运用字符数组.教学难点】 【教学难点】综合运用字符数组.教学日期】 【教学日期】2005-11-22 【课程类型】 讲授课 课程类型】 课时计划】 【课时计划】 4 课时 教学过程】 【教学过程】 导 言:我们应用每一个变量都的一一定义如果想一次定已多个变量这时就的使用数组.新课内容: 一,字符数组类型的定义 char 数组名[常量表达式] 特点:可以定义多个分量,但这些分量只能存储一个字符.二,字符数组的初始化: 1,static char c[10]={'I',' ' 'a',' 'm ','h' 'a ''p' 'p ''y' };把 10 个字符分别付给 c[0]到 c[9]的 10 个元素 三,字符数组的引用 例 1:输出一个字符串 例 2:输出水晶石 四,字符串 1, 字符串和字符串结束标志 2, 用字符串常量给字符串初始化 3, 通过赋初值隐含确定数组长度 4, 字符串的输入输出 5, 字符串处理函数 四,字符数组的应用: 某单位的工作证号码的最后一位是用来表示性别的, 如 f 表示男,m 表示女,今输 入 10 个人的工作证号码,请统计出其中的男女人数 课堂练习】 【课堂练习】84 页 6,7 , 【小 结】字符数组,字符串的定义及两者之间的关系 字符数组的应用 课后作业】 【课后作业】84 页 3,8 , 教学后记】 【教学后记】 字符数组的定义和应用学生能很快理解并掌握.24 C 语言程序设计教案 指 针 【教学目的】 1)掌握指针的定义 教学目的】 2)掌握指针的引用方式 3)掌握字符指针与字符串指针之间的关系 教学重点】 【教学重点】指针的概念,指针的正确引用 教学难点】 【教学难点】指针的正确引用 课程类型】 【课程类型】 讲授课 教学日期】 【教学日期】 2005-11-24 【课时计划】 2 课时 课时计划】 教学过程】 【教学过程】 导言:指针是 c 语言中重要的数据类型,是 c 语言的精华,灵活的运用指针可以处理 各种复杂的数据结构,可以使程序简洁,紧凑,高效.一,指针的定义与引用 1,指针的概念:就是专门又来存放某种变量的地址 2,指针变量的定义:格式:类型表示符 *标识符 int i, j;int *p1,*p2;p1=&i;p2=&j;1, 指针变量的引用: 例:输入两个整数,按先大后小的的顺序输出 main(){int *p1,*p2,*p,a,b;scanf(”%d,%d“,&a,&b);p1=&a;p2=&b;if(a第五篇:《C语言程序设计》教案.
《C语言程序设计》教案
使用教材:谭浩强,《C程序设计》,清华大学出版社,2005年7月第3版
任课教师:王琪
授课班级:信息科学与技术学院06(1)
授课时间:06年秋学期
课时安排:第一学期每周5课时,其中上机每周2课时,讲授至第9章。第二学期每周4课时,其中上机每周2课时,讲授至第13章。
盐城师范学院信息科学与技术学院