第一章 C语言概述
1.1 C语言的发展及特点
1.1.1 C语言的发展
二进制语言---->汇编语言---->高级语言
1.1.2 C语言的特点
- C语言简洁紧凑,使用灵活方便。有32个关键字(int、float等)、9种控制语句(if、while、return等)
- 运算符丰富,有34种运算符
- 数据类型丰富
- 理想的结构化语言,面向过程
- 允许直接访问物理地址,可进行位操作
1.2 C语言程序的基本结构
例1.2.1 求两个整数和
#include <stdio.h> /*编译预处理*/
main () /*主函数*/
{
int a,b,sum; /*定义整型变量a,b,sum*/
printf("please input two integers:\n"); /*输出提示信息*/
sacnf("%d%d",&a,&b); /*输入两个整数,并分别赋给a,b*/
sum=a+b; /*将a+b的值赋给sum*/
printf("%d+%d=%d",a,b,sum); /*输出结果*/
}
- 该程序右侧用/**/括起来的内容为注释,解释该行或该程序的含义,程序不执行注释部分
- 该程序第一行是一个预编译处理命令,表示把尖括号<>内的文件stdio.h直接包含到程序内,C语言要求在使用函数前必须声明,文件stdio.h中包含scanf、printf等标准库函数的函数声明,故调用这些函数前应该包含stdio.h文件
- 该程序只包含一个主函数,C语言规定程序必须有且只有一个主函数,且必须用main作为主函数名
- 函数由函数首部和函数体构成,该程序函数首部为main (),函数体为首部后面用{}括起来的部分
- 该函数体内有5条语句,每条语句后用;作为语句结束标志,第1句为声明语句,其他4句为执行语句
例1.2.2 求两个整数中较大者
#include <stdio.h> /*包含头文件*/
main () /*主函数首部*/
{
int x,y,z; /*定义整型变量x,y,z*/
int max(int a,int b); /*声明函数max*/
printf("please input two integers:\n"); /*输出提示信息*/
sancf("%d%d",&x,&y); /*输入x,y的值*/
z=max(x,y); /*调用max函数*/
printf("The maximum number is %d\n",z); /*输出结果*/
}
int max(int a,int b) /*max函数首部*/
{
if(a>b) return a; /*if else条件语句,实现选择结构*/
else return b; /*把结果返回主函数*/
}
- 该程序有两个函数,主函数main,自定义函数max
- max函数前int表示该函数是整型类型,即执行完该函数后产生一个整型的函数值,由return语句将该值返回到main函数中调用max函数的位置
综上结论
- C程序可由一个或多个函数构成,函数是C程序的基本单位
- 一个函数由函数首部和函数体组成,函数首部为函数的第一行,包含了数据类型、函数名、函数参数等信息。函数可以没有参数,即函数名后括号内为空,但圆括号不能省略;函数体一般由声明部分和执行部分组成,声明部分是对函数中要用到的变量的定义和对所调用函数的声明,一个函数可以没有声明部分。
- C程序必须有且只有一个主函数即main函数
- 一个C程序总是从主函数开始执行,不管主函数在整个程序哪个位置,主函数执行完,该程序也执行完了
- 每条语句必须以分号结尾,但编译预处理命令、函数首部、花括号后面不能加分号,数据类型定义除外
- C语言本身没有输入、输出语句,输入、输出功能用输入、输出函数实现
- C程序允许一行写多条语句,也允许一条语句写在多行上,且无需续行符
1.3 算法及其描述
1.3.1 算法的概念
1.3.1.1 算法——程序的灵魂
一个程序包含下面两种描述
-
对数据的描述:在程序中要指定用到哪些数据及这些数据的类型,数据之间往往存在某种联系,还要指定数据的组织形式,即数据结构
-
对操作的描述:操作步骤也就是算法,为解决一个问题而采取的方法和步骤,成为算法
算法+数据结构=程序
1.3.1.2 算法的分类
- 数 值 算 法 :目的是求数值解,可以运用数值分析方法解决
- 非数值算法:应用领域广泛,远超过数值运算,最常见的是用于事务管理领域
1.3.1.3 算法的特性
- 有穷性:包含有限的操作步骤,在合理的范围内结束
- 确定性:算法的含义是唯一的,每个步骤都是确定的
- 0个或多个输入:一个算法可以没有输入,也可以有多个输入
- 1个或多个输出:算法为了求解。故至少有一个输出
- 有效性:算法的每个步骤必须是切实可执行的,如在实数范围内对负数开平方根无效
1.3.2 算法的描述方法
- 自然语言:用人们日常使用的语言
- 传统流程图:用一些图框表示各种操作的算法描述方法
- N-S流程图:在传统流程图基础上去掉箭头的流程线,由一些基本的框组成一个大的框
- 伪代码:介于自然语言和计算机语言之间的文字和符号来描述算法
- 计算机语言:C、C++、JAVA、python、Go
1.4 程序设计方法
1.4.1 程序设计的一般步骤
- 分析问题并确定数据结构
- 这个问题要做什么,有哪些已知条件,要求解什么;
- 再决定采取什么思路来解决这个问题,根据要求指定的输入输出确定存放数据的数据结构
- 算法设计
- 解决做什么和怎么做
- 编写程序
- 根据确定的数据结构和算法,使用计算机语言编码
- 上机调试
- 将源代码输入计算机中,进行编译、连接和试运行
- 整理写出文档资料
- 有助于以后的维护和修改工作、总结经验
1.4.2 结构化程序设计方法
结构化程序由顺序结构、选择结构、循环结构三种基本结构组成
结构化程序设计方法的主要原则可以概括如下:
- 自顶向下:先总体后细节
- 逐步细化:对复杂问题,应设计一些子目标过渡,逐步细化
- 模块化设计:处理较大的复杂任务时,常把大任务分解为若干个子任务,如规模还大,则继续划分