精品-清华大学C语言课件 第18章01 制作文本窗口
合集下载
清华大学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语言课件 第18章02 显示图形
在知道所用的图形显示器适配器种类时,可以直接给gdriver和gmode赋值,当不知道图形显示器适配 器种类时就需要一个函数来自动检测,即detectgraph函数,其一般形式如下:
void detectgraph(int *gdriver,int *gmode);
【例18.1】 检测当前显示器,并根据检测结果进行图形初始化。
其中gdriver和gmode分别表示图形驱动器和模式,path是指图形驱动程序所在的目录路径。有关图 形驱动器、图形模式的符号常数及数值、色调、分辨率等的相关参数见表18.2。
表18.2 图形驱动器、模式的符号常数及数值、色调、分辨率
图形驱动器(gdriver)
符号常数
数值
CGA
1
CGA
1
CGA
表18.7 填充式样的符号常量、数值及含义
符号常数 EMPTY_FILL SOLID_FILL LINE_FILL LTSLASH_FILL SLASH_FILL
数值 0 1 2 3 4
含义 以背景颜色填充 以实填充 以直线填充 以斜线填充(阴影线) 以粗斜线填充(粗阴影线)
BKSLASH_FILL
调用该函数后可退出图形状态返回到调用initgraph()函数前的状态,并释放用于保存图形驱动 程序和字体的系统内存。 3.获取当前图形驱动程序名及模式 Turbo C 中定义了getdrivername函数来获取图形驱动程序名,该函数的一般形式如下:
char *far getdrivename(void)
程序运行结果如图18.4所示:
图18.4 检测显示器 当按任意键后程序跳转到图形界面,输出原型图案,如图18.5所示:
图18.5 绘制圆形
上例程序中先对图形显示器自动检测,然后再用图形初始化函数initgraph进行初始化设置,通过 上面运行出的结果会发现这种方法是可行的,但Turbo C提供了一种更简单的方法,即用:
清华大学C语言教学课件(共16个PPT)第2个共33页
16、业余生活要有意义,不要越轨。——华盛顿 17、一个人即使已登上顶峰,也仍要自强不息。——罗素·贝克 18、最大的挑战和突破在于用人,而用人最大的突破在于信任人。——马云 19、自己活着,就是为了使别人过得更美好。——雷锋 20、要掌握书,莫被书掌握;要为生而读,莫为读而生。——布尔沃
清华大学C语言教学课件(共16个PPT) 第2个
16、自己选择的路、跪着也要把它走 完。 17、一般情况下)不想三年以后的事, 只想现 在的事 。现在 有成就 ,以后 才能更 辉煌。
18、敢于向黑暗宣战的人,心里必须 充满光 明。 19、学习的关键--重复。
20、懦弱的人只会裹足不前,莽撞的 人只能 引为烧 身,只 有真正 勇敢的 人才能 所向披 靡。
ENDቤተ መጻሕፍቲ ባይዱ
清华大学C语言教学课件(共16个PPT)第1个共26页
清华大学C语言教学课件(共16个PPT) 第1个
•
6、黄金时代是在我们的前面,而不在 我们的 后面。
•
7、心急吃不了热汤圆。
•
8、你可以很有个性,但某些时候请收口 (蹩脚 的工人 总是说 工具不 好)。
•
10、只要下定决心克服恐惧,便几乎 能克服 任何恐 惧。因 为,请 记住, 除了在 脑海中 ,恐惧 无处藏 身。-- 戴尔. 卡耐基 。
55、 为 中 华 之 崛起而 读书。 ——周 恩来
谢谢!
51、 天 下 之 事 常成 于困约 ,而败 于奢靡 。——陆 游 52、 生 命 不 等 于是呼 吸,生 命是活 动。——卢 梭
53、 伟 大 的 事 业,需 要决心 ,能力 ,组织 和责任 感。 ——易 卜 生 54、 唯 书 籍 不 朽。——乔 特
•
6、黄金时代是在我们的前面,而不在 我们的 后面。
•
7、心急吃不了热汤圆。
•
8、你可以很有个性,但某些时候请收口 (蹩脚 的工人 总是说 工具不 好)。
•
10、只要下定决心克服恐惧,便几乎 能克服 任何恐 惧。因 为,请 记住, 除了在 脑海中 ,恐惧 无处藏 身。-- 戴尔. 卡耐基 。
55、 为 中 华 之 崛起而 读书。 ——周 恩来
谢谢!
51、 天 下 之 事 常成 于困约 ,而败 于奢靡 。——陆 游 52、 生 命 不 等 于是呼 吸,生 命是活 动。——卢 梭
53、 伟 大 的 事 业,需 要决心 ,能力 ,组织 和责任 感。 ——易 卜 生 54、 唯 书 籍 不 朽。——乔 特
清华大学的MFC编程精品课件
7/10/2013
31
文档/视图结构支持: 决定是否使用CDocument类和 CView类支持文档/视图结构,无文档/视图结构的应用程序 不包含打开文件和存入磁盘功能的 MFC支持 资源语言:指定窗口菜单上所用的语言 使用 Unicode 库:使用Unicode版MFC 库 项目类型
一个MFC应用程序并不直接操作上述类,而是 以上述类为基类派生新的类,从而构建 Windows应用程序的基本框架。
7/10/2013 21
主要内容
Windows编程的基本概念 MFC应用程序框架类 文档/视图结构 MFC应用程序简单实例 实例分析 序列化和读写文档
7/10/2013
22
文档/视图结构
简化了Visual C++的编程工作
功能强大,灵活且稳定性好。 适用于Windows环境下的图形界面编程
用VC++及MFC开发的Windows平台下的软件有Photoshop, Office,QQ等。
7/10/2013
12
MFC应用程序框架结构类
MFC类库中的类是以层次结构的方式组 织起来的,大多数MFC类都是从CObject 中直接或者间接派生而来。
在MFC应用程序中,文档类和视图类是用户最常用的 两个类,两者密切相关。 文档/视图(Document/View)体系结构是MFC应用程 序框架结构的基础
用文档对象保存应用程序的数据 用视图对象控制视图显示数据 文档与视图的关系是一对多的关系,也就是说,文档中的数据 可以以不同的方式显示。
MFC在类CDocument和CView中为文档和视图提供了 基础结构。CWinApp、CFrameWnd和其他类与 CDocument和CView共同把所有的程序片段连在一起。
清华大学C语言教学课件(共16个PPT)第2个共33页
26、要使整个人生都过得舒适、愉快,这是不可能的,因为人类必须具备一种能应付逆境的态度。——卢梭
▪
27、只有把抱怨环境的心情,化为上进的力量,才是成功的保证。——罗曼·罗兰
▪
28、知之者不如好之者,好之者不如乐之者。——孔子
▪
29、勇猛、大胆和坚定的决心能够抵得上武器的精良。——达·芬奇
▪
30、意志是一个强壮的盲人,倚靠在明眼的跛子肩上。——叔本华
谢谢!
33
清华大学C语言教学课件(共16个PPT) 第2个
51、山气日夕佳,飞鸟相与还。 52、木欣欣以向荣,泉涓涓而始流。
53、富贵非吾愿,帝乡不可期。 54、雄发指危冠,猛气冲长缨。 55、土地平旷,屋舍俨然,有良田美 池桑竹 之属, 阡陌交 通,鸡 犬相闻 。
▪
C语言课程设计PPT课件
第31页/共87页
汉字库简介
程序中可直接使用UCDOS中的HZK16,ASC16和HZK24三个文件。 • HZK16中存储的是16*16点阵汉字是按行存储的以便于显示,每个汉字字模32BYTE,按照国标码顺序存储,
其中也包含了682个纯中文符号字母。
第32页/共87页
汉字库的情况
• ASC16存储256个西文ASCII码的8*16点阵格式,按行存储,每个ASCII码16字节。 • HZK24X存储24*24点阵打印字模,按列存储,每个汉字字模占576字节。24*24点阵汉字存储两比较大,所
功能
输入值 输出值
X 范围 CX DX 无
Y 范围 CX DX 无
光标范围 CX DX SI 无
DI
中断程序 CX ES : 无
DX
功能调用 AX=0007 AX=0008 AX=0010
AX=000C
第19页/共87页
鼠标功能调用方法
用TC通过INT33H中断来编制基本函数,有三种常用方法: • 嵌入汇编程序,如:ASM CLI清中断 • 利用全程变量赋予寄存器值,然后通过函数geninterrupt( )调用中断实现 • 利用联合类型REGS,SREGS通过函数int86(),int86x()调用中断,原型在dos.h
设置鼠标的移动范围
SetMouseArea(int x0,int y0,int x1,int y1) { union REGS regs;
regs.x.ax=7;regs.x.cx=x0;regs.x.dx=x1; int86(0x33,®s;®s); regs.x.ax=8;regs.x.cx=y0;regs.x.dx=y1; int86(0x33,®s,®s); }
汉字库简介
程序中可直接使用UCDOS中的HZK16,ASC16和HZK24三个文件。 • HZK16中存储的是16*16点阵汉字是按行存储的以便于显示,每个汉字字模32BYTE,按照国标码顺序存储,
其中也包含了682个纯中文符号字母。
第32页/共87页
汉字库的情况
• ASC16存储256个西文ASCII码的8*16点阵格式,按行存储,每个ASCII码16字节。 • HZK24X存储24*24点阵打印字模,按列存储,每个汉字字模占576字节。24*24点阵汉字存储两比较大,所
功能
输入值 输出值
X 范围 CX DX 无
Y 范围 CX DX 无
光标范围 CX DX SI 无
DI
中断程序 CX ES : 无
DX
功能调用 AX=0007 AX=0008 AX=0010
AX=000C
第19页/共87页
鼠标功能调用方法
用TC通过INT33H中断来编制基本函数,有三种常用方法: • 嵌入汇编程序,如:ASM CLI清中断 • 利用全程变量赋予寄存器值,然后通过函数geninterrupt( )调用中断实现 • 利用联合类型REGS,SREGS通过函数int86(),int86x()调用中断,原型在dos.h
设置鼠标的移动范围
SetMouseArea(int x0,int y0,int x1,int y1) { union REGS regs;
regs.x.ax=7;regs.x.cx=x0;regs.x.dx=x1; int86(0x33,®s;®s); regs.x.ax=8;regs.x.cx=y0;regs.x.dx=y1; int86(0x33,®s,®s); }
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语言课件 第18章04 图形模式下输出文本
图形模式下输出文本
本讲大纲
1.文本输出函数 2.设置文本属性 实例6 输出字符串“welcome to our school” 实例7 按指定格式在指定位置输出字符串
文本输出函数
当前位置显示字符串函数outtext(),其一般形式如下:
void outtext(char *string);
该函数的作用是在现行位置输出字符串指针string所指的文本。 在指定位置显示字符串函数outtextxy(),其一般形式如下:
程序运行结果如图18.23所示: 图18.23 文本输出
表18.9 字体
符号常数
数值
含义
DEFAULT_FONT
0
8*8点阵字(缺省值)
TRIPLEX_FONT
1
三倍笔划字体
SMALL_FONT
2
SANSSERIF_FONT
3
小号笔划字体 无衬线笔划字体
GOTHIC_FONT
4
黑体笔划字directio来自的取值如表18.10:表18.10 输出方向
符号常数 HORIZ_DIR VERT_DIR
settextstyle(int font,int direction,int charsize)
作用是设置图形文本当前字体、文本显示方向(水平显示或垂直显示)以及字符大小。其中font为 文本字体参数,direction为文本显示方向,charsize为字符大小参数。 font的取值如表18.9:
void outtextxy(int x,int y,char *string);
参数(x,y)给定要显示字符串的屏幕位置,string指向该字符串。该函数作用是在规定的(x,y) 位置输出字符串指针string所指的文本。
本讲大纲
1.文本输出函数 2.设置文本属性 实例6 输出字符串“welcome to our school” 实例7 按指定格式在指定位置输出字符串
文本输出函数
当前位置显示字符串函数outtext(),其一般形式如下:
void outtext(char *string);
该函数的作用是在现行位置输出字符串指针string所指的文本。 在指定位置显示字符串函数outtextxy(),其一般形式如下:
程序运行结果如图18.23所示: 图18.23 文本输出
表18.9 字体
符号常数
数值
含义
DEFAULT_FONT
0
8*8点阵字(缺省值)
TRIPLEX_FONT
1
三倍笔划字体
SMALL_FONT
2
SANSSERIF_FONT
3
小号笔划字体 无衬线笔划字体
GOTHIC_FONT
4
黑体笔划字directio来自的取值如表18.10:表18.10 输出方向
符号常数 HORIZ_DIR VERT_DIR
settextstyle(int font,int direction,int charsize)
作用是设置图形文本当前字体、文本显示方向(水平显示或垂直显示)以及字符大小。其中font为 文本字体参数,direction为文本显示方向,charsize为字符大小参数。 font的取值如表18.9:
void outtextxy(int x,int y,char *string);
参数(x,y)给定要显示字符串的屏幕位置,string指向该字符串。该函数作用是在规定的(x,y) 位置输出字符串指针string所指的文本。
清华C 语言程序设计:第18章 模板
函数模板
实例化
模板函数
6
2018/11/22
18.2 函数模板(3/5)
函数模板的定义都是以关键字template开头 template之后<>中是函数模板的参数列表 函数模板的参数是类型参数,其类型为 class 或typename
template<class T> template<class T1, class T2>
18.2 函数模板(5/5)
函数模板规定了对数据的处理流程 某些数据类型(模板的参数)要等到模板实例 化时再确定具体的类型 函数模板的实例化由编译器来完成
根据函数调用的实参类型确定模板形参的具体类型 用相应的类型替换函数模板中的模板参数完成函数 模板的实例化
为什么模板的每个形参要在函数的参数列表中 至少出现一次?
10
2018/11/22
例子2:使用函数模板实现数组的排序 和输出(1/4)
//ex18_1:使用函数模板实现数组的排序和输出 #include <iostream.h> #define SIZE 8 template<class ElementType > void sortArray(ElementType b[], int len) { for (int pass=0; pass < len-1; pass++) for(int i = pass+1; i <= len-1; i++) if (b[pass] > b[i]) { ElementType hold; hold = b[ pass ]; b[ pass ] = b[ i ]; b[ i ] = hold; } } 2018/11/22
实例化
模板函数
6
2018/11/22
18.2 函数模板(3/5)
函数模板的定义都是以关键字template开头 template之后<>中是函数模板的参数列表 函数模板的参数是类型参数,其类型为 class 或typename
template<class T> template<class T1, class T2>
18.2 函数模板(5/5)
函数模板规定了对数据的处理流程 某些数据类型(模板的参数)要等到模板实例 化时再确定具体的类型 函数模板的实例化由编译器来完成
根据函数调用的实参类型确定模板形参的具体类型 用相应的类型替换函数模板中的模板参数完成函数 模板的实例化
为什么模板的每个形参要在函数的参数列表中 至少出现一次?
10
2018/11/22
例子2:使用函数模板实现数组的排序 和输出(1/4)
//ex18_1:使用函数模板实现数组的排序和输出 #include <iostream.h> #define SIZE 8 template<class ElementType > void sortArray(ElementType b[], int len) { for (int pass=0; pass < len-1; pass++) for(int i = pass+1; i <= len-1; i++) if (b[pass] > b[i]) { ElementType hold; hold = b[ pass ]; b[ pass ] = b[ i ]; b[ i ] = hold; } } 2018/11/22
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语言实验教程(上)清华大学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),界面如图所示 :
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
该函数的原型在conio.h。中函数中形式参数left和top是窗口左上角的坐标,right和bottom是窗 口的右下角坐标,其中(left,top)和(right,bottom)是相对于整个屏幕而言的。Turbo C2.0规定整个 屏幕的左上角坐标为(1,1),右下角坐标为(80,25)。并规定水平方向为X轴,方向自左向右;沿垂直 方向为Y轴,方向自上至下。 注意:
}程序运行结果如图18.1所示:
图18.1 输出文本
实例2 以阶梯状输出文本,要求绿底黄字
本例实现以阶梯状输出字符串,要求绿底黄字。
#include <stdio.h> #include <conio.h> main() { int i; char c[]="abcdefghijklmnopqrstu"; clrscr(); textbackground(GREEN);/* 设置屏幕背景色 */ window(5, 5, 35, 25); /* 定义文本窗口 */ textcolor(14);/* 定义窗口背景色 */ for(i=0;i<21;i++) { gotoxy(i,i); putch(c[i]); /*在指定位置输出字符*/ }
参数color为要设置的字符的颜色。
有关颜色的定义如表18.1所示:
表18.1 颜色的相关属性
符号常数 BLACK
数值 0
含义 黑
字符或背景 两者均可
BLUE
1
蓝
两者均可
GREEN
2
绿
两者均可
CYAN
3
青
两者均可
RED
4
红
两者均可
MAGENTA
5
洋红
两者均可
BROWN
6
棕
两者均可
LIGHTGRAY
7
该函数的作用是清除当前窗口中从光标位置到行尾的所有字符,光标位置不变。 光标定位函数,其一般形式如下:
void gotoxy(x,y);
该函数在文本状态下经常用到,其作用是将字屏幕上的光标移到当前窗口指定的位置上。这里x,y是 指光标要定位处的坐标,当x,y超出了窗口的大小时,该函数就不起作用了。 注意: gotoxy函数中的参数x和y是相对于窗口来说的。 插入空行函数,其一般形式如下:
void insline(void);
该函数的作用是插入一空行到当前光标所在行上,同时光标以下的所有行都向下顺移一行。 删除一行函数,其一般形式如下:
void delline(void);
删除当前窗口内光标所在行,同时把该行下面所有行都上移一行。 拷进文字函数,其一般形式如下:
int gettext(int xl, int yl, int x2, int y2, void *buffer);
淡灰
两者均可
DARKGRAY
8
深灰
只用于字符
LIGHTBLUE
9
淡蓝
只用于字符
LIGHTGREEN
10
淡绿
只用于字符
LIGHTCYAN
11
淡青
只用于字符
LIGHTRED
12
淡红
只用于字符
LIGHTMAGENTA
13
淡洋红
只用于字符
YELLOW
14
黄
只用于字符
WHITE15Fra bibliotek白只用于字符
注意:
BLINK
int getche(void);
getche()函数的作用是从键盘上获取一个字符。
掌握屏幕操作函数
清屏函数,其一般形式如下:
void clrscr(void);
该函数的作用是清除当前窗口中的文本内容,并把光标定位在窗口的左上角(1,1)处。 清除行尾字符函数,其一般形式如下:
void clreol(void);
制作文本窗口
本讲大纲
1.定义文本窗口 2.设置窗口颜色 3.文本的输入和输出 4.掌握屏幕操作函数 实例1 输出hello world 实例2 以阶梯状输出文本,要求绿底黄字 实例3 movetext函数应用
定义文本窗口
字符屏幕的核心是窗口(Window),它是屏幕的活动部分,共有80列25行的文本单元,字符输出或显 示在活动窗口中进行。窗口在缺省时,就是整个屏幕。窗口可以根据需要指定其大小。
int puttext(int x1, int y1, int x2, int y2, void *buffer);
该函数的作用是把先前由gettext()保存到buffer指向的内存中的文字拷出到屏幕上一个矩形区域中。 参数x1和y1为矩形左上角坐标,x2和y2为矩形右下角坐标。Buffer为指向内存中存储矩形区域的指针。 移动文字函数,其一般形式如下:
}程序运行结果如图所示:
实例3 movetext函数应用
#include <stdio.h> #include <conio.h> main() { int i; char c[]="abcdefghijklmnopqrstu"; clrscr(); textbackground(GREEN);/* 设置屏幕背景色 */ window(5, 5, 35, 25);/* 定义文本窗口 */ textcolor(14);/* 定义窗口背景色 */ for(i=0;i<21;i++) { gotoxy(i,i); putch(c[i]); } /*将左上角(5,5)右下角(10,10)文本在左上角为(30,10)的位置输出*/ movetext(5,5,10,10,30,10);
gettext函数是将屏幕上指定的矩形区域内文本内容存入buffer指针指向的一个内存空间。参数x1和 y1为矩形左上角坐标,x2和y2为矩形右下角坐标。内存的大小用下式计算: 所用字节大小=矩形区域的行数*矩形区域的列数*2 其中: 矩形区域行数=y2-y1+1 矩形区域列数=x2-x1+1 拷出文字函数,其一般形式如下:
实例1 输出hello world
在指定区里输出hello world,要求绿底黄字。
#include <stdio.h> #include <conio.h> main() { char c[]="hello world"; textbackground(2);/* 设置屏幕背景色*/ window(5, 5, 35, 25);/* 定义文本窗口*/ textcolor(14);/* 设置输出字符颜色*/ cputs(c); /*输出字符串*/
conio.h中。
设置窗口颜色
文本窗口颜色的设置包括背景颜色的设置和字符颜色的设置,设置背景颜色的函数的一般形式如下:
void textbackground(int color);
参数color为要设置的背景的颜色。
设置字符颜色的函数的一般形式如下:
void textcolor(int color);
int movetext(int x1,int x2,int y2,int x3,int y3);
movetext()函数将屏幕上左上角为(x1,y1),右下角为(x2,y2)的一矩形窗口内的文本内容复制到 左上角为(x3,y3)的新的位置。该函数的坐标也是相对于整个屏幕而言的。 说明:
movetext()函数是复制而不是移动窗口区域内容,当使用该函数以后,原位置区域的文本内容不会消 失,仍然存在。
int cputs(char *string);
cputs()函数输出一个字符串到屏幕上, 它与puts()函数用法完全一样,只是受窗口大小的限制。 字符输出函数
int putch(int ch);
putch()函数输出一个字符到窗口内。 说明:
使用以上几种函数,当输出超出窗口的右边界时会自动转到下一行的开始处继续输出。当窗口内 填满内容仍没有结束输出时,窗口屏幕将会自动逐行上卷直到输出结束为止。 2.窗口内文本的输入函数 字符输入函数的一般形式如下:
若window函数中的坐标超过了屏幕坐标的界限,则窗口的定义就失去了意义,也就是说定义将不 起作用。 如要定义一个窗口左上角在屏幕(5,5)处,大小为30列20行的窗口可写成:
window(5,5,35,25);
说明: windows函数的原型在头文件conio.h中,本文中介绍的文本窗口中的所有函数原型都在头文件
编写绘图程序经常要用到对字符屏幕进行操作。Turbo C2.0可以定义屏幕上的一个矩形域作为窗 口,使用window()函数定义。窗口定义之后,用有关窗口的输入输出函数就可以只在此窗口内进行操 作而不超出窗口的边界。 window函数的一般形式如下:
void window(int left, int top, int right, int bottom);
}程序运行结果如图所示:
128
闪烁
只用于字符
背景只有0到7共八种颜色,当取大于7小于15的数,则代表的颜色与减7后的值对应的颜色相同。
文本的输入和输出
1.窗口内文本输出函数 格式输出函数
int cprintf(“格式化字符串”,变量表列);
cprintf()函数输出一个格式化的字符串或数值到窗口中。它与printf()函数的用法完全一样, 区别在于cprintf()函数的输出受窗口限制,而printf()函数的输出为整个屏幕。 字符串输出函数
}程序运行结果如图18.1所示:
图18.1 输出文本
实例2 以阶梯状输出文本,要求绿底黄字
本例实现以阶梯状输出字符串,要求绿底黄字。
#include <stdio.h> #include <conio.h> main() { int i; char c[]="abcdefghijklmnopqrstu"; clrscr(); textbackground(GREEN);/* 设置屏幕背景色 */ window(5, 5, 35, 25); /* 定义文本窗口 */ textcolor(14);/* 定义窗口背景色 */ for(i=0;i<21;i++) { gotoxy(i,i); putch(c[i]); /*在指定位置输出字符*/ }
参数color为要设置的字符的颜色。
有关颜色的定义如表18.1所示:
表18.1 颜色的相关属性
符号常数 BLACK
数值 0
含义 黑
字符或背景 两者均可
BLUE
1
蓝
两者均可
GREEN
2
绿
两者均可
CYAN
3
青
两者均可
RED
4
红
两者均可
MAGENTA
5
洋红
两者均可
BROWN
6
棕
两者均可
LIGHTGRAY
7
该函数的作用是清除当前窗口中从光标位置到行尾的所有字符,光标位置不变。 光标定位函数,其一般形式如下:
void gotoxy(x,y);
该函数在文本状态下经常用到,其作用是将字屏幕上的光标移到当前窗口指定的位置上。这里x,y是 指光标要定位处的坐标,当x,y超出了窗口的大小时,该函数就不起作用了。 注意: gotoxy函数中的参数x和y是相对于窗口来说的。 插入空行函数,其一般形式如下:
void insline(void);
该函数的作用是插入一空行到当前光标所在行上,同时光标以下的所有行都向下顺移一行。 删除一行函数,其一般形式如下:
void delline(void);
删除当前窗口内光标所在行,同时把该行下面所有行都上移一行。 拷进文字函数,其一般形式如下:
int gettext(int xl, int yl, int x2, int y2, void *buffer);
淡灰
两者均可
DARKGRAY
8
深灰
只用于字符
LIGHTBLUE
9
淡蓝
只用于字符
LIGHTGREEN
10
淡绿
只用于字符
LIGHTCYAN
11
淡青
只用于字符
LIGHTRED
12
淡红
只用于字符
LIGHTMAGENTA
13
淡洋红
只用于字符
YELLOW
14
黄
只用于字符
WHITE15Fra bibliotek白只用于字符
注意:
BLINK
int getche(void);
getche()函数的作用是从键盘上获取一个字符。
掌握屏幕操作函数
清屏函数,其一般形式如下:
void clrscr(void);
该函数的作用是清除当前窗口中的文本内容,并把光标定位在窗口的左上角(1,1)处。 清除行尾字符函数,其一般形式如下:
void clreol(void);
制作文本窗口
本讲大纲
1.定义文本窗口 2.设置窗口颜色 3.文本的输入和输出 4.掌握屏幕操作函数 实例1 输出hello world 实例2 以阶梯状输出文本,要求绿底黄字 实例3 movetext函数应用
定义文本窗口
字符屏幕的核心是窗口(Window),它是屏幕的活动部分,共有80列25行的文本单元,字符输出或显 示在活动窗口中进行。窗口在缺省时,就是整个屏幕。窗口可以根据需要指定其大小。
int puttext(int x1, int y1, int x2, int y2, void *buffer);
该函数的作用是把先前由gettext()保存到buffer指向的内存中的文字拷出到屏幕上一个矩形区域中。 参数x1和y1为矩形左上角坐标,x2和y2为矩形右下角坐标。Buffer为指向内存中存储矩形区域的指针。 移动文字函数,其一般形式如下:
}程序运行结果如图所示:
实例3 movetext函数应用
#include <stdio.h> #include <conio.h> main() { int i; char c[]="abcdefghijklmnopqrstu"; clrscr(); textbackground(GREEN);/* 设置屏幕背景色 */ window(5, 5, 35, 25);/* 定义文本窗口 */ textcolor(14);/* 定义窗口背景色 */ for(i=0;i<21;i++) { gotoxy(i,i); putch(c[i]); } /*将左上角(5,5)右下角(10,10)文本在左上角为(30,10)的位置输出*/ movetext(5,5,10,10,30,10);
gettext函数是将屏幕上指定的矩形区域内文本内容存入buffer指针指向的一个内存空间。参数x1和 y1为矩形左上角坐标,x2和y2为矩形右下角坐标。内存的大小用下式计算: 所用字节大小=矩形区域的行数*矩形区域的列数*2 其中: 矩形区域行数=y2-y1+1 矩形区域列数=x2-x1+1 拷出文字函数,其一般形式如下:
实例1 输出hello world
在指定区里输出hello world,要求绿底黄字。
#include <stdio.h> #include <conio.h> main() { char c[]="hello world"; textbackground(2);/* 设置屏幕背景色*/ window(5, 5, 35, 25);/* 定义文本窗口*/ textcolor(14);/* 设置输出字符颜色*/ cputs(c); /*输出字符串*/
conio.h中。
设置窗口颜色
文本窗口颜色的设置包括背景颜色的设置和字符颜色的设置,设置背景颜色的函数的一般形式如下:
void textbackground(int color);
参数color为要设置的背景的颜色。
设置字符颜色的函数的一般形式如下:
void textcolor(int color);
int movetext(int x1,int x2,int y2,int x3,int y3);
movetext()函数将屏幕上左上角为(x1,y1),右下角为(x2,y2)的一矩形窗口内的文本内容复制到 左上角为(x3,y3)的新的位置。该函数的坐标也是相对于整个屏幕而言的。 说明:
movetext()函数是复制而不是移动窗口区域内容,当使用该函数以后,原位置区域的文本内容不会消 失,仍然存在。
int cputs(char *string);
cputs()函数输出一个字符串到屏幕上, 它与puts()函数用法完全一样,只是受窗口大小的限制。 字符输出函数
int putch(int ch);
putch()函数输出一个字符到窗口内。 说明:
使用以上几种函数,当输出超出窗口的右边界时会自动转到下一行的开始处继续输出。当窗口内 填满内容仍没有结束输出时,窗口屏幕将会自动逐行上卷直到输出结束为止。 2.窗口内文本的输入函数 字符输入函数的一般形式如下:
若window函数中的坐标超过了屏幕坐标的界限,则窗口的定义就失去了意义,也就是说定义将不 起作用。 如要定义一个窗口左上角在屏幕(5,5)处,大小为30列20行的窗口可写成:
window(5,5,35,25);
说明: windows函数的原型在头文件conio.h中,本文中介绍的文本窗口中的所有函数原型都在头文件
编写绘图程序经常要用到对字符屏幕进行操作。Turbo C2.0可以定义屏幕上的一个矩形域作为窗 口,使用window()函数定义。窗口定义之后,用有关窗口的输入输出函数就可以只在此窗口内进行操 作而不超出窗口的边界。 window函数的一般形式如下:
void window(int left, int top, int right, int bottom);
}程序运行结果如图所示:
128
闪烁
只用于字符
背景只有0到7共八种颜色,当取大于7小于15的数,则代表的颜色与减7后的值对应的颜色相同。
文本的输入和输出
1.窗口内文本输出函数 格式输出函数
int cprintf(“格式化字符串”,变量表列);
cprintf()函数输出一个格式化的字符串或数值到窗口中。它与printf()函数的用法完全一样, 区别在于cprintf()函数的输出受窗口限制,而printf()函数的输出为整个屏幕。 字符串输出函数