C语言程序设计基础教程(cPrimer)V1.0

更新时间:2023-05-03 19:44:01 阅读量: 实用文档 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

Version:1.0/Address:DL/Author:Charles Zang/E-amil:zangchao@d7aa348dd0d233d4b14e6941/Textbook:C Primer
☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆Demo 欣赏☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆ 下载地址: d7aa348dd0d233d4b14e6941/file/f4ac266bed# 基于 C 语言的国旗图形演示系统.rar ☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆ ☆教程名:C 语言程序设计基础教程(第 1 版) ☆教程针对对象: C 语言零基础或计算机语言零基础的朋友 ☆教程内容: 此教程基于 VC6.0 和 easyX 工具,面向图形设计实例,讲解 C 语言有关知识。 教程分上篇和下篇。上篇包括导论,数据的类型与数值,运算符与控制结构,函数共四章。 ☆版权声明: 教程所有软件 VC6.0 版权为微软公司所有(d7aa348dd0d233d4b14e6941 提供下载); 软件 EasyX 版权为杨伟先生所有(d7aa348dd0d233d4b14e6941 提供下载); 软件 PowerEasyX 版权为 rtGirl 所有(d7aa348dd0d233d4b14e6941 提供下载); 欢迎转载或转播教程,但未经许可,请勿用于商业用途。 ☆本版时间 2011 年 ☆联系方式: zangchao@d7aa348dd0d233d4b14e6941 ☆作者: Charles Zang
第 1 页 共 121 页

Version:1.0/Address:DL/Author:Charles Zang/E-amil:zangchao@d7aa348dd0d233d4b14e6941/Textbook:C Primer
☆ 教程下载地址(搜索关键字” C 语言程序设计基础教程”):
百度文库
d7aa348dd0d233d4b14e6941
豆丁网
d7aa348dd0d233d4b14e6941/
CSDN
d7aa348dd0d233d4b14e6941/
PUDN
d7aa348dd0d233d4b14e6941
easyx
d7aa348dd0d233d4b14e6941/
powereasyx
d7aa348dd0d233d4b14e6941
新浪网
d7aa348dd0d233d4b14e6941/
115 网盘
d7aa348dd0d233d4b14e6941/file/f44eab756a#
第 2 页 共 121 页

Version:1.0/Address:DL/Author:Charles Zang/E-amil:zangchao@d7aa348dd0d233d4b14e6941/Textbook:C Primer
第 3 页 共 121 页

Version:1.0/Address:DL/Author:Charles Zang/E-amil:zangchao@d7aa348dd0d233d4b14e6941/Textbook:C Primer
目录(上篇)
第 1 章 C 语言导论 1.1C 语言概述 1.2C 语言编程 1.2.1C 语言编程工具 1.2.2C 语言编程流程 1.2.3C 语言编程环境 第 2 章数据类型与数值 2.1 数据类型 2.2 数据的数值 2.2.1 常量 2.2.2 变量 第 3 章运算符与控制结构 3.1 运算符 3.1.1 算术运算符 3.1.2 赋值运算符 3.1.3 关系运算符,逻辑运算符和强制转换运算符 3.2 三种控制结构 3.2.1 顺序结构 3.2.2 选择结构 3.2.3 循环结构 3.3 国旗图形程序设计初步 第 4 章函数 4.1 函数声明 4.2 函数定义 4.3 函数的调用 4.3.1 函数语句调用 4.3.2 函数表达式调用 4.3.3 函数参数调用 4.4 多文件编程方法 4.4.1 函数声明法 4.4.2 文件包含法 4.5 改写函数 4.6 国旗演示系统
第 4 页 共 121 页

Version:1.0/Address:DL/Author:Charles Zang/E-amil:zangchao@d7aa348dd0d233d4b14e6941/Textbook:C Primer
第 1 章 C 语言导论
本章,我们主要讲三个内容。第一,告诉读者什么是 C 语言,它是干嘛的?第二,C 语言是 怎么做事的?第三, 演示一个简单有趣又人人都能做的 C 语言图形实例, 通过它既可以说明 C 语言程序的基本结构,又能激发读者的兴趣。要知道,兴趣可是世界上最好的老师!
1.1C 语言概述本节,我们主要介绍 C 语言的过去,现在和将来。 常言道:人有人言,兽有兽语。自然界的生物总会有各自的办法来向同类传递信息,例如猎 人之间通过人类语言交流, 猎犬之间通过吠叫交流。 但是不同类生物之间如何交流呢?猎人 可以通过手势或口令等中介语言来指挥猎犬!同样,当程序设计人员想指挥计算机工作时, 也是通过各种中介语言来控制计算机,这些中介语言称为计算机语言。 那么有多少种计算机语言呢?据统计,50 万年以来,世界上至少有过 2500-3000 种人类语 言,但是现今的人类社会中,只有英语和汉语等几种语言最为流行,其他的要么很少使用, 要么销声匿迹。类似地,从计算机诞生以来,也产生了成百上千的计算机语言,但主流的计 算机语言只有几十种,本书讲解的 C 语言就是其中一种。 C 语言在这么多种计算机语言中是佼佼者。著名的 TIOBE 世界编程语言排行榜展现了计 算机语言的流行趋势,如图所示。从中不难发现,C 语言被广泛应用的程度。目前 C 语 言可以应用于众多领域,例如嵌入式系统,操作系统,驱动程序,电脑游戏等领域。如 果学习 C 语言的过程脱离了上述具体的应用领域会让 C 语言美丽的外表显得苍白。 但是如果打算通过实际电脑驱动程序或汽车嵌入式程序开发来讲解 C 语言, 又会让人望 而生畏。能不能通过既然结合具体应用,又适合所有人的实例来学习 C 语言呢?全球知 名创新与创造力专家 Ken Robinson 在世界著名的 TED 大会论坛曾给出过答案:画画儿。 对!就这么简单。画画儿几乎是所有人都能做的又感兴趣的,那么用 C 语言来画画儿是 不是更有趣呢?本着这个出发点,本书结合其在图形领域的应用,讲解 C 语言。
第 5 页 共 121 页

Version:1.0/Address:DL/Author:Charles Zang/E-amil:zangchao@d7aa348dd0d233d4b14e6941/Textbook:C Primer
图 1.1
1.2C 语言编程本节, 我们主要介绍 C 语言的编程工具和编程流程, 也就是 C 语言用什么东西来进行编程 (例 如图形编程)和编程的步骤。
1.2.1C 语言编程工具本节主要介绍一种 C 语言编程工具 VC6.0。 我们知道,人类语言是借助喉部,口腔和鼻腔等发音器官来实现,同样,C 语言的实现要依 赖集成开发环境,这些集成开发环境提供了编辑,编译,连接和运行等功能。本书以 Microsoft 公司的 Visual C++6.0(以下简称 VC6.0)集成开发环境来实现 C 语言程序。所以, 请确保用于开发 C 语言程序的计算机上安装有 VC6.0,读者可以从相关书籍或网络上了解 VC6.0 的安装方法,这里不再介绍。 此外,为了利用 C 语言进行图形应用领域的程序设计,还需要安装相应的图形函数库,这里 详细介绍安装步骤。共两步:第一步,将“图形函数库”文件夹中的文件 graphics.h,拷 贝到文件夹 C:\Program Files\Microsoft Visual Studio\VC98\Include 下(如果读者的 VC6.0 目录不是在这个文件夹,请自行调整) 。第二步,将“图形函数库”文件夹中的文件 graphics.lib, 拷贝到文件夹 C:\Program Files\Microsoft Visual Studio\VC98\Lib 下 (如 果读者的 VC6.0 目录不是在这个文件夹,请自行调整) 。到此,图形函数库安装完毕,很简 单吧! 本书中绝大多数实例都需要上述两个编程工具。
1.2.2C 语言编程流程本节主要介绍使用 C 语言编程工具 VC6.0 进行编程的步骤。 那么如何利用上述的编程工具, 需要哪些步骤来编程呢?这就涉及到了 C 语言的一般编程流 程。现在,我们动手编写第一个 C 语言程序,体验一下它在图形应用方面的魅力吧!大致分
第 6 页 共 121 页

Version:1.0/Address:DL/Author:Charles Zang/E-amil:zangchao@d7aa348dd0d233d4b14e6941/Textbook:C Primer
为四个步骤: 第一步,需要建立一个 C 语言工程,步骤如下。点击“File” ”New”,弹出“New”对话 框。 该对话框包含四个选项卡, “Files” 在 , “Projects” , “Workspaces” “Other Documents” 和 这四个选项卡中,点击“Projects”选项卡。如图所示,输入信息。
图 1.2 点击选中 “Win32 Console Application” 在”Project name:”处输入 0101。 “Location:” 。 在 处输入 C:\0101。点击“OK”按钮。弹出新的对话框,不需要任何输入,直接点击“Finish” 按钮。再次弹出新的对话框,仍然不需要任何输入,直接点击“OK”按钮。至此,一个 C 语言工程建立完毕。 第二步,需要建立一个 C 语言文件,步骤如下。点击“File” ”New”,弹出“New”对话 框。在“Files”“Projects”“Workspaces”和“Other Documents”四个选项卡中,点击 , , “Files”选项卡。如图所示,输入信息。
图 1.3 点击选中“C++ Source File” 。勾选“Add to project:” 。在“File”处输入 0101.cpp。 点击“OK”按钮。至此,一个 C 语言文件建立完毕。 第三步,编辑程序。在名为“0101.cpp”的编辑区内,输入如下代码。
第 7 页 共 121 页

Version:1.0/Address:DL/Author:Charles Zang/E-amil:zangchao@d7aa348dd0d233d4b14e6941/Textbook:C Primer
图 1.4 仔细检查代码是否一致。之所以强调“仔细”二字,是因为经验表明,半数以上的程序错误 都是由录入不认真造成的。例如,少写多写字符,字母大小写不一致,或错误的使用中文全 角标点符号等等。在进行 C 语言编程是,不要急于运行程序查看结果,而应该先仔细检查, 将一些拼写之类的低级错误消灭在萌芽阶段。 第四步,需要运行程序,步骤如下。检查无误后,点击“File”菜单,弹出下拉菜单如下图 所示。
图 1.5 依 次 点 ”Complie 0101.cpp Ctrl+F7” 菜 单 , ”Build 0101.exe F7” 菜单 , ”Execute 0101.exe Ctrl+F5”菜单,完成程序的编译,连接与运行工作。程序运行成功,将弹出运行 结果如图所示。
图 1.6第 8 页 共 121 页

Version:1.0/Address:DL/Author:Charles Zang/E-amil:zangchao@d7aa348dd0d233d4b14e6941/Textbook:C Primer
到此,经过四步,我们的第一个 C 语言程序就完成了。 程序中语句 initgraph(400,200);用于定义窗口的宽度和高度,尝试修改一下吧,例如改为 initgraph(600,600);再运行程序看看有什么效果?会发现图形窗口变宽变高了!其实,我 们是修改了图形窗口的屏幕坐标系。 这里介绍一下屏幕坐标系。在图形函数库中规定,显示器左上角为坐标系原点(0,0) ,水 平方向为 X 轴,自左向右;垂直方向为 Y 轴,自上向下。如图所示。 (0,0)
图 1.7 程序中语句 outtextxy(150,100,"Hello World");用于定义输出文字的横坐标,纵坐标和文 字内容,尝试修改一下,例如改为 outtextxy(100,50,"你好世界");再运行程序看看有什么 效果? 但是这个程序的视觉效果不太好。首先,黑色的背景很不友好。其次,文字的颜色单一。最 后,文字的字体较简陋。下面我们改良一下这个例子。 重新执行第三步,再次编辑程序。在名为“0101.cpp”的编辑区内,输入如下代码。
图 1.8 重复执行第四步。完成程序的编译,连接与运行工作。程序运行成功,将弹出运行结果如图 所示。
第 9 页 共 121 页

Version:1.0/Address:DL/Author:Charles Zang/E-amil:zangchao@d7aa348dd0d233d4b14e6941/Textbook:C Primer
图 1.9 这个程序的视觉效果大大提高。首先,语句 setbkcolor(WHITE);修改背景色为白色,去掉 了黑色的背景。其次,语句 setcolor(GREEN);将文字的颜色设置为绿色。最后,语句 setfont(60,15,"华文行楷");设置文字的高度和宽度分别为 60 和 15,并设置字体为华文行 楷。一些读者一定已经跃跃欲试,想修改其它的颜色和字体。下面简要介绍一下。 颜色的信息是在图形函数库中预先定义好的,如表所示。当然,还有更多种颜色,后续章节 介绍。参数 BLACK RED DARKGRAY LIGHTRED 颜色 黑 红 深灰 浅红 参数 BLUE MAGENTA LIGHTBLUE LIGHTMAGENTA 颜色 蓝 紫 浅蓝 浅紫 参数 GREEN BROWN LIGHTGREEN YELLOW 颜色 绿 棕 浅绿 黄 参数 CYAN LIGHTGRAY LIGHTCYAN WHITE 颜色 青 浅灰 浅青 白
表 1.1 字体的信息是在计算机系统中预先定义好的。详见计算机文件夹 C:\WINDOWS\Fonts。这里 有许多种字体,例如宋体,黑体等等。当然,还有更多种字体,读者可以从网络上下载。 通过这两个实例的对比以及读者的反复修改,我们不难发现一个 C 语言图形程序的基本结 构。如下所示。
首先,看第 1 行。本书所用图形函数库具有几十个图形库函数,因此其图形功能非常丰富。 所有这些图形函数均在头文件“graphics.h”中定义,所以,开发 C 语言图形应用程序,都 必须在程序文件的开头写上文件包含命令#include”graphics.h”。 其次,看第 4 行。在一般情况下,计算机屏幕为文本方式,在该方式下所有的图形函数都不 能操作,因此,在使用图形函数绘图之前,必须通过图形方式初始化来将文本方式转换成图 形方式。图形方式初始化是通过函数 initgraph 来完成的。其格式如下: void initgraph(width, height); 需要注意的是屏幕宽度参数 width 和高度参数 height 必须为整数。第 4 行的功能就是建立 一个 400*200 的图形窗口。 再次,看第 6 和 7 行。在运行完成图形程序绘图结束后,又要回到文本方式,以进行其他工 作,这里应关闭图形方式。关闭图形方式要用函数 closegraph。其格式如下:第 10 页 共 121 页

Version:1.0/Address:DL/Author:Charles Zang/E-amil:zangchao@d7aa348dd0d233d4b14e6941/Textbook:C Primer
void closegraph(); 功能是释放所有图形系统分配的存储空间, 返回调用 initgraph 之前的状态。 需要注意的是 该函数不需要任何参数。 如果我们绘制了某个图形, 想将其暂时留在窗口中以便观看而不是 立刻被第 7 行的 closegaph()关闭掉,就必须在第 6 行加上 getch()来实现留屏。尝试着在 前面的程序中删除第 6 行,观察一下有什么不同的效果?绘制的图形将一闪而过。 最后,看第 2,3 和 8 行。main 在每个 C 语言图形程序中必须书写,功能是整合上述语句, 并作为程序执行的入口。 到此,我们就总结了一个 C 语言图形程序的基本框架。如果需要绘制一些图形,将相应语句 加在基本框架中第 5 行空白的地方即可。
1.2.3C 语言编程环境本节主要介绍 C 语言编程工具 VC6.0 的开发环境的布局及功能。 通过前面的学习,已经感性地体会了一下典型的 C 语言图形程序。本节,详细介绍一下 C 语言图形程序的编程开发环境。 首先,我们了解一下开发工具 VC6.0。VC6.0 是 Microsoft 公司推出的一个基于 Windows 系统平台、可视化的集成开发环境,它的源程序按 C++语言的要求编写,并加入了微软 提 供 的 功 能 强 大 的 MFC(Microsoft Foundation Class) 类 库 。 MFC 中 封 装 了 大 部 分 Windows API 函数和 Windows 控件,它包含的功能涉及到整个 Windows 操作系统。MFC 不仅给用户提供了 Windows 图形环境下应用程序的框架, 而且还提供了创建应用程序的 组件, 这样, 开发人员不必从头设计创建和管理一个标准 Windows 应用程序所需的程序, 而是从一个比较高的起点编程,故节省了大量的时间。另外,它提供了大量的代码,指 导用户编程时实现某些技术和功能。 因此, 使用 VC++提供的高度可视化的应用程序开发 工具和 MFC 类库,可使应用程序开发变得简单。 此外, 本书结合 C 语言在图形开发中的应用来讲解 C 语言, 所以还需要另一个开发工具, 图形函数库 graphics.h。 graphics.h 原是 TurboC 里面的图形库, 现已经移植到 Windows 平台,移植后的 graphics.h 是针对 C++ 的图形库,可以帮助 C 语言初学者快速上手图 形和游戏编程。值得注意的是,如果要使用它进行 C 语言图形程序设计,建立的 C 语言文件 的扩展名必须是.cpp,不可以是.c。 其次,我们了解一下 VC6.0 的开发编程环境。如图所示。
图 1.10 VC6.0 的开发环境由四大部分组成,分别是菜单工具区,代码编辑区,提示信息区,项目文
第 11 页 共 121 页

Version:1.0/Address:DL/Author:Charles Zang/E-amil:zangchao@d7aa348dd0d233d4b14e6941/Textbook:C Primer
件区。菜单工具区主要包括各种菜单和工具按钮,是整个 VC6.0 的功能集合。代码编辑区主 要包括一个文本编辑窗口, 供程序设计人员手动录入代码。 提示信息区主要包括一个信息输 出窗口,供 VC6.0 输出编辑连接等信息,供程序设计人员参考。项目文件区主要包括一个项 目文件管理树状目录,方便程序设计人员管理已有的各种工程文件。 最后,我们总结一下 C 语言程序的开发流程。C 语言是一种编译型计算机语言,开发流程包 括编辑,编译,连接和运行四个步骤。 一般地,编辑步骤是指 C 语言源程序代码的录入和修改。在代码编辑区创建 C 语言源文件, 最后以文件的形式存放在磁盘上,文件名由程序设计人员自行定义,但扩展名一般为.cpp。 例如:0101.cpp。 (提示:一般的 C 语言程序的扩展名是.c,由于需要调用图形函数库,所以 本书上所有 C 语言文件扩展名规定为.cpp。 ) 编译步骤是编译器把 C 语言源程序代码翻译成可重定位的二进制目标程序文件, 其文件名与 源文件名同,但扩展自动为.obj。编译器是 VC6.0 自带的,其工作是将源代码转换为可执行 代码。.obj 是用机器语言表示的代码,一般程序设计人员不必关心。进行编译有三种方法, 第一种通过菜单”Build” ”Complie”; 第二种通过菜单工具区中的编译按钮; 第三种通 过快捷键 Ctrl+F7。当编译发现错误时,需要回到代码编辑区修改程序,直到没错为止。 连接步骤是连接程序把编译过的目标程序与程序中用到的库函数连接在一起, 形成可执行文 件,可执行文件名与 C 语言工程同,其扩展名为.exe。进行连接有三种方法,第一种通过菜 单”Build” ”Build”;第二种通过菜单工具区中的连接按钮;第三种通过快捷键 F7。 当连接发现错误时,需要回到代码编辑区修改程序,直到没错为止。 运 行 步 骤 是执 行 可 执 行文 件 , 显 示程 序 结 果 。进 行 连 接 有三 种 方 法 ,第 一 种 通 过菜 单”Build” ”Execute”;第二种通过菜单工具区中的运行按钮;第三种通过快捷键 Ctrl+F5。
小结:本章主要介绍了两部分内容:C 语言的背景知识及 C 语言编程。以一个简单有趣的“你好世 界”实例为导引,使读者对编程工具,编程流程及编程环境三个概念有一个初步的认识。
第 12 页 共 121 页

Version:1.0/Address:DL/Author:Charles Zang/E-amil:zangchao@d7aa348dd0d233d4b14e6941/Textbook:C Primer
第 2 章 数据的类型与数值
C 语言本质上一种计算机语言,而计算机的本质就是进行数据处理的机器,所以,在 C 语言 中对于数据的研究是少不了的。 本章首先介绍数据的概念, 其次讲解数据的重要属性数据的 类型。最后,根据数据是否可以改变大小,介绍常量和变量。 从 40 年代电子数字计算机 ENIAC 处理的 6 张弹道火力表到现如今 21 世纪随处可见的个 人笔记本电脑上播放的《阿凡达》3D 大片,计算机处理的对象几乎渗透到人类生活与 工作的每个角落。但无论处理的对象表面多么纷繁复杂,究其根本都是“数据”二字。 本章,我们就来讨论一下 C 语言中的数据及其属性。 什么是数据呢?数据是关于自然、社会现象和科学试验的定量或定性的记录,是科学 研究最重要的基础;研究数据就是对数据进行采集、分类、录入、储存、统计分析, 统计检验等一系列活动的统称。这样官方的定义虽然客观严谨,却不便于学习 C 语言 的读者的理解。 其实数据就在你身边,这里打个出方。拿一张存储电影的光盘。盘片主要由保护层, 反射激光的铝反射层,刻槽和聚碳酸酯衬垫组成,电影数据被记录在高低不同的凹凸 起伏的刻槽上。凹凸分别代表数字 1 和 0,从而记录数据。我们可以把数据比喻成光 盘。
2.1 数据类型本节主要介绍一些常见的基本数据类型, 对于复杂的构造数据类型, 后续章节单独列章介绍。 知道了什么是数据,现在我们先来看数据的第一属性,数据类型。我们知道,不同类 型光盘的容量相异,CD 光盘的容量是 600M,DVD 光盘的容量则是 4.7G。类似地,数 据也有类型之分,不同数据类型之间尺寸大小是不同的。在 C 语言中,数据类型的分 类如图所示。
图 2.1 根据上图所示, C 语言中数据类型分为基本和构造两大类。 在 基本类型是不可再分的数据类第 13 页 共 121 页

Version:1.0/Address:DL/Author:Charles Zang/E-amil:zangchao@d7aa348dd0d233d4b14e6941/Textbook:C Primer
型,构造类型由基本类型构成。后者更复杂,功能也更强大,在后续章节介绍。C 语言提供 了 4 种基本数据如表所示。 (其中空类型在后续章节介绍。 )
表 2.1 不同的数据类型在内存中所占字节数是不同, 即大小不同。 例如字符型在内存中占 1 个字节, 但双精度浮点型却占了 8 字节,是前者的 8 位。类似地,现实生活中,一张 DVD 光盘的容量 远大一张 VCD 光盘。数据类型是数据的第一属性。 这里注意一点,由于不同的编程工具是由不同的公司在不同的时代开发的,所以,数据类型 的规定有一些是有出入的。例如,在 VC6.0 中,整型占 4 个字节而不是 2 个字节,但是另一 种编程软件 Turbo C 中整型还是占 2 个字节。
2.2 数据的数值本节根据数据大小可否改变,将数据分为常量和变量两种。 学习了数据的第一属性数据类型, 下面我们来看看数据的第二属性, 数据的数值。 我们知道, 有的光盘只能读取数据,不能写入;有的光盘却技术较先进,可以重复刻录数据。类似地, 在 C 语言中,有的数据不能改变其大小,有的数据的数值却可以更新修改。这就涉及数据的 第二属性,数值。根据数值可否改变将数据分为两大类:常量和变量。
2.2.1 常量本节介绍数值大小不可改变的数据:常量。重点介绍算术常量,符号常量和字符常量,以圆 形绘制为实例。 常量是在程序执行过程中其值保持不变的数据。 其特征是使用时直接书写数值, 系统不会为 其分配内存,不必为其命名。C 语言中常量可分为算术常量,字符常量,枚举常量和符号常 量(枚举常量在后续章节介绍) 。算术常量又分为整型常量和实型常量。 例 0201
这个程序定义了一个宽度和高度都 是 200 像素, 背景色是白色的窗口, 并在窗口中心 (100,
第 14 页 共 121 页

Version:1.0/Address:DL/Author:Charles Zang/E-amil:zangchao@d7aa348dd0d233d4b14e6941/Textbook:C Primer
100)处画了一个绿色的点。其中点的横纵坐标都是整型常量 100,不能被修改,所以点是 固定不变的。 程序中用到了图形函数库中的 putpixel 函数,简要介绍如下。 void putpixel( x, y, color); 参数 x 和 y 是点的横纵坐标,参数 color 是点的颜色。 请读者修改程序尝试在(150,150)处画一个白色的点吧!多写几条语句,可以画更多的点 呦!试着画一个布满各种颜色点的虚拟星空效果吧! 整型常量可以用三种形式来表示: 1)十进制整数 十进制是大家最熟悉的整型常量写法,十进制没有前缀,其数码为 0,1,2,3,4,5,6, 7,8,9 共十个。例如上例中点坐标 100,就是合法的十进制整数。 2)八进制整数 八进制在计算机使用较多的写法,八进制需要以数字 0 为前缀,其数码为 0,1,2,3,4, 5,6,7 共八个。例如上例中点的十进制坐标 100,完全造价于八进制坐标 0144。 3)十六进制整数 十六进制也是在计算机使用较多的写法,十六进制需要以 0x 为前缀,其数码更复杂,包括 十六个:0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F。例如上例中点的十进制坐标 100,完全造价于十进制坐标 0x64。 使用八进制和十六进制改写上面的例子。 例 0202
例 0202 与例 0201 实验效果完全一样。关于三种进制的相互转换的方法,读者可以参阅《计 算机文化基础》等图书或网络。 下面学习一下实型常量。实型常量只采用十进制表示。它有两种形式:小数和指数。 1)小数形式 由正负号,整数部分,小数点和小数部分组成。 观察如下的程序的实验结果。 例 0203
会发现与例 0201 的效果一样。并且开发环境的提示信息区有这样的两句话。 warning C4244: 'argument' : conversion from 'const double' to 'int', possible loss of data 和 warning C4244: 'argument' : conversion from 'const double' to 'int', possible loss of data。 提示程序设计人员, 系统自动将两个实型常量 100.2 和 100.5 自动转换成整型常量, 这一过 程可能造成数据丢失。第 15 页 共 121 页

Version:1.0/Address:DL/Author:Charles Zang/E-amil:zangchao@d7aa348dd0d233d4b14e6941/Textbook:C Primer
造成这样现象的原因是,程序窗口是由一群离散的像素点组成 的,例如语句 initgraph(200,200);会定义一个宽 200 个像素高有 200 个像素共 40000 个像素点的窗口。 如果程序设计人员把窗口错误地想当然成线性连续的,使用实型常量 100.2 和 100.5,系统 只能被迫截取成整型常量 100 和 100,所以会得到一样的实验效果。 2)指数形式 在小数的基础上,后面加阶码标志(E)及指数组成。例如小数形式的实型常量圆周率 3.1415926,可以表示为指数形式的实型常量圆周率 0.31415926E1。需要注意的是,阶码标 志前面必须有数字,后面的指数必须是整数。 例 0204
第 16 页 共 121 页

Version:1.0/Address:DL/Author:Charles Zang/E-amil:zangchao@d7aa348dd0d233d4b14e6941/Textbook:C Primer
这个程序的功能是在绿色的背景上绘制一个半径为 50 的红色的圆,并计算输出圆的面积。
图 2.2 绘制一个圆,需要用到图形函数库中的 circle 函数,格式如下: void circle(x,y,radius); 参数 x 和 y 是圆心的横纵坐标,参数 radius 是圆的半径。 为了计算输出圆的面积,需要做三步工作。第一步,计算其值将整型常量 50 乘以整型常量 50 再乘以指数形式的实型常量 0.31415926E1。结果为 7853.981500。第二步,使用 VC6.0 自带输出函数 printf 输出结果数,如果要使用该函数,必须写上#include。第三 步,启动 Win32 Console Application 控制台窗口,将输出结果显示出来。如果要打开该窗 口,必须在#include前面写上#define SHOW_CONSOLE。
图 2.3 细心的读者可能已经发现,语句“printf("圆的面积是%f",50*50*0.31415926E1); //指数第 17 页 共 121 页

Version:1.0/Address:DL/Author:Charles Zang/E-amil:zangchao@d7aa348dd0d233d4b14e6941/Textbook:C Primer
形式圆周率”中,有一段汉字不会被程序执行,这是 C 语言注释。这些注释是面向人类而不 是计算机的,意思也就是说,人看得到机器看不到,所以不会被 VC6.0 所执行,只供程序设 计人员之间交流使用。一个好的程序设计人员应该在程序中正确使用注释来说明程序的功 能,注意事项和有关算法等。例如上例中注释说明指数形式实型常量 0.31415926E1 是圆周 率。程序设计人员可以使用//逐行给程序加注释,也可以使用/*…*/多行给程序加注释,这 在注释多行语句时很方便,但需要注意的是,/*和*/一定要配对使用,否则将破坏程序。也 正因此,本书建议读者采用逐行注释形式//。 下面学习一下符号常量。如果现在想修改圆周率的精度为 3.1415927,只须修改一行。但是 如果一个大型的程序中用到了成百上千次圆周率呢?逐行的修改岂不让人崩溃。 为了解决这 个问题,可以借助符号常量。 例 0205
图 2.4 程序中语句#define YZL 3.1415927,定义了一个符号常量 YZL 来代表新精度的圆周率。这 样,使用符号常量形式的圆周率代替算术常量形式的圆周率,如果需要修改圆周率的精度, 只须修改一行,则程序中使用到符号常量的其他行都自动修改了,达到了一改全改,提高效 率的目的。 值得注意的是, graphics.h 的图形函数库中已经定义好了#define PI 3.14159 在 供我们用户使用。 定义符号常量有三种方法:宏定义,const 修饰符和枚举法(枚举后续章节介绍) ,本章介 绍前两种。 宏定义时用指定的标识符来代表一串字符,其一般形式为: #define 标识符 字符串 例如上例中#define YZL 3.1415927 行,程序在进行编译时,凡在出现 YZL 的地方都使用 3.1415927 来替换,易于修改,非常方便,但也问题重重。主要表现在两点上,第一个问题 是,这种替换只是单纯地文本替换,有时会导致错误结果。 例 0206
第 18 页 共 121 页

Version:1.0/Address:DL/Author:Charles Zang/E-amil:zangchao@d7aa348dd0d233d4b14e6941/Textbook:C Primer
图 2.5 将#define YZL 3.1415927 修改为#define YZL 1.1415927+2 后,圆的面积和周长结果都是 错误的。 仔细观察发现程序在计算面积时使用的是 50*50*1.1415927+2=2855.981750 而不是 使用 50*50*(1.1415927+2) 。周长类似。这种替换不作语法检查,使用时应当心。 另一个问题是,在上述宏定义中,我们不知道 YZL 的数据类型,这样也是不安全的。使用 const 修饰符可以解决上面的两个问题。 const 修饰符 const 定义的符号常量既有数据类型也进行语法检查,克服了宏定义的上述缺点。 例 0207
第 19 页 共 121 页

Version:1.0/Address:DL/Author:Charles Zang/E-amil:zangchao@d7aa348dd0d233d4b14e6941/Textbook:C Primer
图 2.6 结果又恢复正确了。const 的一般形式为: const 数据类型 标识符=字符串; 可见,在使用符号常量时,建议读者尽量不要使用宏定义,而使用 const 的定义方法 。 前面的例子中, 绘制了圆计算了面积和周长并输出了结果。 下面让我们初步了解一下 C 语言 提供给程序设计人员的输出接口。 输出是将保存在内存中的数据送到输出设备上。 为完成此 操作,需要使用格式输出函数 printf。在此,先做一简单的介绍。 格式输出函数 printf 的功能是按指定的格式输出数据,其一般格式为: printf(“格式控制符和若干字符”,输出项表); 其中,printf 是函数名,其后括号中的内容为该函数的参数:格式控制字符串用双引号括 起来,用来规定输出格式,例如%d 用来输出十进制整数,%f 用来输出实数,%c 用来输出字 符,也可以包含普通字符,如果在格式控制字符串中包含非格式控制字符,将原样输出;参 数表中包含 0 个或多个输出项,输出项之间用逗号分开。 例 0208 #define SHOW_CONSOLE #include #include const double YZL=3.1415927; void main(){ initgraph(200,200); setbkcolor(GREEN); setcolor(RED); circle(100,100,50); printf("圆的半径是%d,圆的面积是%f,圆的周长是%f",50,50*50*YZL,2*50*YZL); getch(); closegraph(); }
第 20 页 共 121 页

Version:1.0/Address:DL/Author:Charles Zang/E-amil:zangchao@d7aa348dd0d233d4b14e6941/Textbook:C Primer
图 2.7 但是输出结果过长不便于观察,也不美观。改写程序中相应语句为 printf("圆的半径是%d\n 圆的面积是%f\n 圆的周长是%f",50,50*50*YZL,2*50*YZL);
图 2.8 修改后的结果整洁大方,便于观察。必定语句中包含了一个\n,起到了回车换行的作用。这 就涉及到了字符常量的概念。 字符常量有单字符常量和字符串常量两种。 单字符常量是指仅含 ASCII 字符的常量, 在内存 中占一个字符,存放字符的 ASCII 码。单字符常量又分为两种:普通单字符常量和转义字符 常量。前者指是由一对单引号括起来的单个字符所构成,例如’A’,’1’,’#’等等。 例 0209
图 2.9 使用普通单字符常量输出一个圆的英语单词。 那是不是键盘上的字符都可以通过普通单字符 常量的形式来输出呢?下面是一张键位图, 改写上面的程序, 看看有哪些字符不能正常显示。
第 21 页 共 121 页

本文来源:https://www.bwwdw.com/article/xdqe.html

推荐文章
Top