第1章
步入C的世界——Hello C
了解C语言
C编程前的准备——C常用开发环境
开始C编程——第1个C程序
C程序的组成
跟我上机
了解C语言
C的历史
C的特点
为什么要用C
了解C语言
C语言是一种计算机程序设计语言。它既有高级语言的特点,又具有低级汇编语言的特点。它可以作为系统设计语言,编写工作系统应用程序,也可以作为应用程序设计语言,编写不依赖计算机硬件的应用程序。正因为此,它的应用范围广泛。
C的历史
C语言的诞生及发展历程如图所示。
C的特点
1. 功能强大、适用范围大、可移植性好
许多著名的系统软件都是由C 语言编写的。C语言可以像汇编语言一样对位、字节和地址进行操作,而这三者是计算机最基本的工作单元。
C语言适合于多种操作系统,如DOS、UNIX等。对于操作系统、系统使用程序以及需要对硬件进行操作的场合,用C语言明显优于其它解释型高级语言,一些大型应用软件也是用C语言编写的。
C的特点
2. 运算符丰富
C语言的运算符包含的范围很广泛,共有34种运算符。C语言把括号、赋值、强制类型转换等都作为运算符处理。从而使C语言的运算类型极其丰富,表达式类型多样化。
3. 数据结构丰富
C语言的数据类型有:整形、实型、字符型、数组类型、指针类型、结构体类型、共用体类型等。
4. C是结构化语言
5. C语言允许直接访问物理地址,可以直接对硬件进行操作
6. 其他特性,C语言语法限制不太严格,语法比较灵活,生成目标代码质量高,程序执行效率高
算法与流程图
算法:将为了解决问题所制订的步骤、方法。
在计算机科学中,算法要用计算机算法语言描述,算法代表用计算机解一类问题的精确、有效的方法。算法+数据结构=程序,求解一个给定的可计算或可解的问题,不同的人可以编写出不同的程序。
流程图中的元素及含义
流程图主要用两种:传统流程图和N-S流程图。
1.传统流程图
2、N-S流程图
用流程图表示算法
一个流程图包括以下几部分:
① 表示相应操作的框;
② 带箭头的流程线;
② 框内外必要的文字说明。
【范例】 求区间[100, 200]内10个随机整数中的最大数、最小数。
用传统流程图表示三种基本结构
1、顺序结构 2、选择结构
用传统流程图表示三种基本结构
3、循环结构
C编程前的准备——C常用开发环境
C语言常用的集成开发环境主要有Microsoft Visual C++ 、Microsoft Visual C++.NET、Turbo C以及Borland C++ Builder等。
C编程前的准备——C常用开发环境
1. Microsoft Visual C++
不仅是一个C++编译器,而且是一个基于Windows操作系统的可视化集成开发环境。
2. Microsoft Visual C++.NET或Microsoft Visual C++ 2005
Microsoft Visual Studio 的后续版本,是一套完整的开发工具集,在.NET平台下,调用Framework的类库,功能强大,其中包含了Visual C++开发组件。
3. Turbo C
美国Borland 公司的产品,目前的最常用的版本是Turbo C 。
4. Borland C++ Builder
Borland公司继Delphi之后又推出的一款高性能集成开发工具,具有可视化的开发环境。
认识Visual C++
安装Microsoft Visual Studio 或单独安装Visual C++ 之后,选择【开始】【程序】【Microsoft Visual Studio 】【Microsoft Visual C++ 】菜单命令,即可启动Visual C++ 。
认识Visual C++
认识Visual C++
2. 工具栏
工具栏中提供了大部分常用的操作命令
3. Workspace(工作区)窗口
工作区窗口共有以下3个标签,分别代表3种视图形式。
⑴ 【Class View(类视图)】:用以显示项目中的所有的类信息。
⑵ 【ResourceView(资源视图)】:包含了项目中所有资源的层次列表。每一种资源都有自己的图标。在字符界面或者控制台界面中没有该项,只有windows程序下才出现。
⑶ 【FileView(文件视图)】:可将项目中的所有文件分类显示,每一类文件在【FileView】页面中都有自己的目录项。可以在目录项中移动文件,还可以创建新的目录项,以及将一些特殊类型的文件放在该目录项中。
4. Output(输出)窗口
显示程序编译和连接错误和警告。
5. 编辑窗口
可进行输入、修改以及删除代码等操作。
认识Turbo C
1. 启动Turbo C
⑴ 命令行方式启动
选择【开始】【程序】【附件】【命令提示符】,在打开的命令行中输入Turbo C 的路径,如“C:\TURBOC2\TC”,按【Enter】键,即可进入TC集成环境的主菜单窗口。
⑵ 从Windows环境进入
在Windows XP环境中,如果本机中已安装了Turbo C,可以在桌面上建立一个快捷方式,双击该快捷方式即可进入C语言开发环境。或者选择【开始】【运行】,在运行对话框中输入程序的路径,单击【确定】按钮即可。
认识Turbo C
2. Turbo C 开发环境介绍
Turbo C 的主界面可以分为四个部分,由上至下分别为:菜单栏、编辑区、信息区和功能键索引。
认识Turbo C
认识Turbo C
⑴ 菜单栏:包括【File】(文件)菜单、【Edit】(编辑)菜单、【Run】(运行)菜单、【Compile】(编译)菜单、【Project】(项目)菜单、【Options】(选择)菜单、【Debug】(调试)菜单和【Break/watch】(断点及监视)菜单等。
⑵ 编辑区:编辑区的第一行为编辑状态行,用来指示游标所在位置、文件名称以及编辑相关的状态信息。其他为代码编辑区域。
⑶ 信息区:显示程序编译和连接错误和警告。
⑷ 功能键索引:Turbo C 不支持鼠标操作,功能键索引给出了功能按键的索引号。
了解C语言
程序编写及运行流程
在Visual C++ 中开发C程序
在Turbo C中开发C程序
程序编写及运行流程
要转换C语言到可执行文件,需要借助的工具是编译器(Compiler),转换的过程叫做编译。经过编译,生成目标程序,目标文件是机器代码,还是不能够直接执行的,它需要其他文件或者其他函数库辅助,才能生成最终的可执行文件,这个过程称之为连接,使用的工具叫做连接器。
程序编写及运行流程
在Visual C++ 中开发C程序
【范例1-1】 使用Visual C++ 创建C程序并运行
01 #include <> /*包含标准输入输出头文件*/
02 int main (void) /*主函数*/
03 { /*函数体开始*/
04 printf(“Hello C!\n”); /*函数体*/
05 return 0; /*返回值*/
06 } /*函数体结束*/
C程序的组成
完整的C程序
#include的秘密
程序的入口——main函数
数据集装箱——常量和变量
何以输出程序结果——输出函数
注释
代码的规矩
完整的C程序
【范例1-2】 计算圆的周长。
01 /*内容:计算圆周长
02 目的:了解C语法*/
03 #include <> /*包含标准输入输出头文件*/
04 #include <> /*包含数学函数库头文件*/
05 #define PI /*定义常量PI,它的值是*/
06 int main() /*主函数*/
07 {
08 int radius; /*整型变量,存储半径值*/
09 float circum; /*浮点型变量,存储周长值*/
10 radius = 2; /*半径赋值*/
11 circum = 2 * PI * radius; /*计算周长*/
12 printf("变量radius地址是%d\n",&radius); /*输出变量radius存储地址*/
13 printf("半径开方值是%f\n",sqrt(radius)); /*输出变量radius的开方值*/
14 printf("半径是%d,周长是%f\n",radius,circum); /*输出变量radius值和circum值*/
15 return 0; /*返回值*/
16 } /*函数体结束*/
#include的秘密
一个C程序可以由有若干个源程序文件组成,每一个源文件可以有由若干个函数和预处理命令以及全局变量声明部分组成,每一个函数有函数首部和函数体组成。C程序的结构如下图所示。
#include的秘密
程序的入口——main函数
每个c程序必须有而且只有一个主函数,也就是main函数,它是程序的入口。使用main函数有时也作为一种驱动,按次序控制调用其他函数,c程序是由函数构成的,这使得程序容易实现模块化;main函数后的“( )”不可省略,表示函数的参数列表;”“{”和“ }”是函数开始和结束的标志,不可省略。
程序的入口——main函数
程序的入口——main函数
数据集装箱——常量和变量
常量是不能变动的数据,还可以理解它为字面值。如在范例1-2代码的第5行中,定义了1个字符常量PI,并赋值为,后面就可以使用PI来代替。
变量是可以改变的量。数学当中常用到变量x用来表示一个值,比如经过计算x的值为2了,再计算y=x*x时,x就代表数值2,从而可以得到y的值4;又经过计算x的值变为了5,再进行其他含有x的算式时,x就表示5而不再是2了,像x这样可以改变的量就称为变量。如在范例1-2代码的第8、9行中,定义了2个变量,分别用于存储半径和周长的值。
关于常量和变量,在第2章中详细介绍。
何以输出程序结果——输出函数
因为C语言是跨平台的,在不同的系统上输入、输出的处理是不同的,所以C语言不提供输入/输出,只是调用具体平台操作系统的库函数来实现输入、输出。在主函数当中包含了标准输入输出头文件“”后,调用了printf函数,用来实现输出“Hello C!”的功能。
printf()函数功能是把数据发送到标准系统显示设备上,并实现格式化输出,把这样的数据称为字符串,字符串需要使用双引号引起来。
printf(“Hello C!\n”); /*调用函数*/
何以输出程序结果——输出函数
进一步对该函数做解释需要注意的是有以下几点:
⑴ 函数名称后必须有小括号,不能省略,这是函数的特征;
⑵ 函数结束必须有分号,不能省略;
⑶ 字符串结尾有这样的内容“\n”,它叫做转义符,表示的含义是把光标移动到下一行的行首,也就是回车换行,因为无法直接通过键盘输入换行的指令,所以需要使用转移符;又比如输出内容后希望返回到该行的行首,重新输出内容,键盘上也没有对应的功能键,就可以使用回车符转义符“\r“,来代替。当然义移还包含其他内容,后续章节中会详细讲述。
注释
大家已经注意到,很多语句后面都跟有“/*”和“*/”符号,它表示什么含义呢?
在前文已经说过,在编辑代码的过程中,希望加上一些说明的文字,来表示代码的含义,这是很有必要的。
注释
注释的要求如下。
⑴ 使用“/*”和“*/”表示注释的起止,注释内容写在这两个符号之间,注释表示对某语句的说明,不属于是程序的代码的范畴,比如范例1-1和1-2代码中“/*”和“*/”之间的内容。
⑵ “/”和“*”之间没有空格。
⑶ 注释可以注释单行也可以注释多行,而且注释不允许嵌套,嵌套是会产生错误的,比如:
/*这样的注释/*特别*/有用*/
这段放在程序中不但没有起到说明的作用,反而使程序保存,原因是“这样”前面的“/*”与“特别”后面的“*/”匹配,注释结束,而“有用*/”就被编译器认为是违反语法规则的代码
代码的规矩
从书写代码清晰,便于阅读,理解,维护的角度出发,在书写程序时应遵循以下规则:
⑴ 一个说明或一个语句占一行。把空格符、制表符、换行符等统称为空白符。除了字符串,函数名和关键字,C忽略所有的空白符,在其它地方出现时,只起间隔作用,编译程序对它们忽略不计。因此在程序中使用空白符与否,对程序的编译不发生影响,但在程序中适当的地方使用空白符将增加程序的清晰性和可读性。
代码的规矩
int
main(
){
printf(“Hello C!\n”
);
} /*这样的写法能运行,但是太乱,很不妥*/
代码的规矩
⑵ 用“{”和“}”括起来的部分,通常表示了程序的某一层次结构。“{”和“}”一般与该结构语句的第一个字母对齐,并单独占一行。
int main()
{
printf(“Hello C!\n”);
return 0;} /*这样的写法能运行,但是阅读起来比较费事*/
代码的规矩
⑶ 低一层次的语句通常比高一层次的语句留有一个缩进,然后再书写。一般来说缩进指的是存在两个空格或者一个制表符的空白位置。
int main()
{
printf(“Hello C!\n”);
{
printf(“Hello C!\n”);
}
return 0;
}
代码的规矩
⑷ 在程序中书写注释,注释可以明白程序做了什么,同样可以增加程序的清晰性和可读性。
跟我上机
1. 编写C程序,在命令行中输出如下一行内容:
“你好,世界!”
跟我上机
2. 编写C程序,在命令行中输出如下的四行内容:
one 123
two 456
three 789