第1章 C程序设计基础
本章重点
1.C语言程序的结构。
2.变量与常量的表示方法。
3.运算符与表达式。
4.指针的概念及变量地址与指针的关系。
5.指针与数组的初步基本概念。
本章难点
1.C语言中常量的表示方法。
2.整型数在计算机中存储的形式。
3.不同类型数据的转换。
4.转义字符。
5.各种运算符与表达式的正确理解。
6.指针的运算与数组的赋值。
1.1 C程序的结构
1.1.1 程序的概念
程序是指人们将需要计算机做的工作写成一定形式的指令,并把它们存储在计算机的内部存储器中。当人们给出命令之后,它就按指令操作顺序自动进行,把这种可以连续执行的一条条指令的集合称为“程序”。目前,正在使用的计算机程序设计语言有上百种,有些语言是面向机器的,如二进制语言,而多数是面向问题的语言。面向问题的语言都被称为计算机的“高级语言”,如C语言等。当然把C++等称为面向对象的语言。这些语言都是用接近人们习惯的自然语言和数学语言作为语言的表达形式,人们学习和操作起来感到十分方便。目前的程序设计一般可分为非结构化程序设计、结构化程序设计和面向对象的程序设计,C语言是结构化程序设计语言。
程序设计的过程一般包括:
(1)问题的提出、要求及所采用的数据结构。
(2)算法的确定、程序的编制。
(3)程序的调试及修改。
(4)整理并写出文档资料。
结构化程序设计由三种结构组成:顺序结构、选择结构、循环结构。
顺序结构:顺序结构的程序是一条语句接一条语句顺序地往下执行的。例如在图1.1中,先执行语句1,然后执行语句2,最后执行语句3,顺序结构的程序是最简单的程序。
图1.1 顺序结构的程序段
分支结构:若在程序执行过程中,程序的流程可由多路分支组成,根据不同的条件去执行不同的任务。例如在图1.2中程序执行到条件表达式时,首先判断条件是否为“真“,如为真执行语句1,否则执行语句2。
假 真
图1.2 分支结构的程序段
循环结构:如在程序中需要根据某项条件重复地执行某项任务若干次或直到满足或不满足某条件为止,这就构成循环结构。例如在图1.3中程序执行到循环条件表达式时,首先判断循环条件是否为“真“,如循环条件为“真“,执行循环语句,循环语句执行完成后,又转去判断循环条件,如循环条件仍为真,再次执行循环语句,如此反复,直到循环条件为假,退出此循环。
思考:同学起床后,先穿衣、洗脸、吃饭,然后看看课表,根据课表带上所需的课本,去教室,上午上五节课,先上一节课,还没到五节课,再上一节,还没到五节,再上一节课,......,直到五节课上完,早上的学习任务结束。根据此段话,用程序流程来分析的话,经历了哪些程序结构?请画出程序流程图。
图1.3 循环结构的程序段
用C语句所写的序列称为C源程序,它的后缀为.c,C源程序经过编译(compile)后生成一个后缀为.obj的二进制文件,最后由连接程序(link)把此.obj文件与C语言提供的各种库函数连接起来生成一个.exe文件,它就是可执行文件。
因而程序的设计过程如图1.4所示。
图1.4 程序的设计过程
1.1.2 C函数的构成
C语言是结构化的程序设计语言,C程序由一个或多个文件组成,而一个文件可由一个或多个函数组成。C程序中必须有一个函数名为main的函数,且只能有一个main函数。程序运行时从main函数开始,最后回到main函数。
C语言源程序可由一个或一个以上文件组成,而每个文件至少有一个函数,函数是C语言的最基本的单位。
C函数由语句构成,语句结束符用“;”表示,语句由保留字、标识符、运算符和表达式构成。其中“{”和“}”分别表示函数执行的起点与终点或程序块的起点与终点。
C程序中书写格式自由,一行内可写几个语句,但区分大小写字母。用C语言写成的函数结构图如1.5所示。
类型 函数名(形式参数声明)函
数
体数据声明部分语句部分图1.5 C函数定义的结构示意图
例1.1 函数结构的例子。
int add(int x,int y) /*函数返回值类型、函数名及形式参数的声明*/
{