C语言程序设计基本概念
结构化程序设计方法
➢ 结构化程序设计的基本方法:
自顶向下,逐步求精,将复杂问题分解为若 干的独立的小问题(小模块)。
【例】求解两个数的平均值
1、分解:问题分解为三个模块 : S1: 输入两个数a, b S2: 求两个数的平均值赋给aver S3:输出平均值
2020/4/18
20
2、实现方法,算法细化
25
【例】对于一个大于3的整数,判断它是不是 素数(循环之例)
算法如下:
1. 输入n
2. i=2
3. n被i除,得余数r
4. 若r=0,则输出n“不是素数”,算 法结束
5. i=i+1
6. 若i<n/2,则重新执行3. ;否则执
行7. 2020/4/18
26
➢ 结构化程序的三种基本控制结构: 顺序结构
max=c; return (max); }
maxx=max_value(x, y, z); printf("max=%d\n", maxx); }
输入:8 5 7
2020/4/18
输出:max=8
11
C语言程序的构成
C程序由函数组成
每个函数完成相对独立的功能
C提供了丰富的库函数
每个C程序都有一个叫做main的主函数
伪代码
流程图
NS图 等等
2020/4/18
15
【例】求三个数中最大值问题 ➢ 自然语言: 日常使用的语言
先将a,b进行比较,找出其中的大数;然后 再把它和第三个数c进行比较,如果它比c大, 则它就是最大数,否则c是最大数。
➢ 伪代码: 介于自然语言和计算机语言之间的文 字和符号进行描述 IF a>b
2020/4/18
24
➢ 两数交换的另一个奇特难懂的算法:
S1: 输入两个整数x, y
S2: 将x+y赋给x
S3: 将x-y赋给y
S4: 将x-y赋给x
➢ 相应的程序段:
scanf("%d%d", &x, &y); 入x、y
x=x+y; //交换x、y
y=x-y; x=x-y;
2020/4/18
//输
8 与累加器中 停机
7
汇编程序:
将汇编语言程序转换为计算机能识 别的机器语言
2020/4/18
8
➢ 高级语言
基本与计算机的硬件设备无关
【例】计算4+8(用C语言编写) sum=4+8;
编译程序: 高级语言转换为机器语言的翻译程序
2020/4/18
9
简单的C程序实例
【例1-1】
注释
//第一个C程序
#include<stdio.h>
float average(float x, float y) //求两个数的
平均值
{ float aver;
//声明
aver为实型变量
aver=(x+y)/2; 2020/4/18
//计算两个数的平均值22
6、两模块连接成一个完整的求解程序
#include<stdio.h>
头文件
#include"stdio.h"
void main()
/* 函数头 主*函/ 数、注释
{
printf("Welcome to C programming.\n");
}
运行结果:
Welcome to C programming.
系统提供的 输出函数
2020/4/18
10
【例1-2】编写求三数中最大值问题的程序
^QR--移到文件首
^QC--移到文件尾
2020/4/18
37
^QF--查找
^I--查找下一个
^QA--查找并替换
^Y--删除一行
^N或<Enter>--插入一行
<BackSpace>--向前删一个字符
<Del>--向后删一个字符
2020/4/18
38
^QY--从光标删到行尾 <Insert>--插入状态开关 ^KS--存盘不退出 <Esc>--将本次操作作废或退回
连接:利用连接器,将C已编译的目标程序和 库函数连接之后,生成可执行文件,并以 文件形成存入到磁盘上,文件扩展名 为 .exe。
运行: 在操作系统下运行可执行文件。
2020/4/18
32
上机实践
运行环境——turbo C (2.0或3.0)
编辑——录入、修改
编译——翻译为二进制代码(obj)
连接——连接各模块的二进制代码,
上级菜单
2020/4/18
39
Turbo C 常用块操作命令
^KB--定义块首
^KK--定义块尾
^KC--块复制
^KV--块移动
^KY--块删除
^KH--隐藏/显示块
^KW--写块
^KR--读块
2020/4/18
五个最主要菜单
File
创建新文件、打开文件、
保存文件、改变目录、退出系统
Edit
常用编辑命令
Compile
编译、连接成目标文件
或可执行文件
Run
自动编译、连接并运行
Windows
窗口切换
2020/4/18
35
可用快捷键打开菜单
如按<Alt>+F 可打开文件菜单
输入程序前一般应先改变好目录
//求两个数的平均值 //声明aver
//计算两个数 //aver的值作
//主 //声 //输入a、b两个数
23
【例1-3】设计两整数交换的算法
➢ 用自然语言描述:
S1: 输入两个整数x, y
S2: 交换x, y
细化S2:
S2.1:将x赋给t S2.2:将y赋给x S2.3:将t赋给y
➢相应的程序段: //输入x、y scanf("%d%d", &x, &y); //交换x、y t=x; x=y; y=t;
运算符丰富,具有多种运算功能
有丰富的数据类型
生成代码质量高,程序执行效率高
C程序的可移植性好
是一种结构化程序设计语言
语法限制不严,程序设计自由度大
C提供的位运算可直接对硬件操作
2020/4/18
4
程序设计语言
——人与计算机进行信息交流的工具
机器语言
汇编语言
高级语言
面向过程语言
的4相加
停特机点:繁1琐11、1 难01记00、难读、难写、不可移植
2020/4/18
6
➢ 汇编语言
1、与计算机硬件的设计密切相关 2、计算机不能直接识别 3、计算机基本操作是采用英语缩写 的助记符来编写程序
【例】计算 4+8
MOVE AL, 4
将4 送累加器
ADD AL, 8 的 4相加
HLT
2020/4/18
File/Change dir
先编译、后保存、再运行
在3.0版本,可用鼠标,在多程序
窗口环境下可选[Windows]-[Next]
命令作窗口切换
2020/4/18
36
Turbo C 常用编辑命令
<PgUp>--上翻一屏
<PgDn>--下翻一屏
<Home>--移到行首
<End>--移到行尾
28
循环结构1(while ):
A
P
真
假
P为真时 A
N-S图
流程图
当P条件成立 (为真 T)反复执行A, 直到P为 ‘假
’时结束。
2020/4/18
29
循环结构2(repeat_until)
A 假
P 真
流程图
A 直到P为真时
N-S图
先执行A操作,再判断P,若为‘假’,再执行A ,直到P为 ‘真’时结束。
float average(float x, float y) { float z, aver;
为实型变量 aver=(x+y)/2; 的平均值赋给aver return (aver); 为函数的的返回值 } void main() 函数 { float a, b, ave; 明a、b和ave为实型变量 scanf("%f%f", &a, &b); 的值 2020/4/18
2020/4/18
30
➢三种基本结构的共同特点:
1)单入口 2)单出口 3)无死语句 4)无死循环
A
成立
不成立
P
B
A
B
顺序
2020/4/18
选择
A
A
P
真
假
假
P 真
循环 31
C程序的编辑、编译和执行
编辑:利用编辑器,通过键盘将C源程序输入 到计算机,并以文件形成保存到磁盘。
编译:利用编译器,将C源程序编译成目标程 序。
main( )后面花括号内的部分叫函数体
函数体含“说明部分”和“执行部分”
说明部分和执行部分各由若干语句组成
语句以分号为结束标记
2020/4/18
12
C函数的一般形式
函数类型 函数名(形式参数表) {
说明、定义部分 函数执行部分 }
2020/4/18
13
算法
➢ Niklaus Wirth 提出的著名公式: 数据结构+算法 = 程序
S1: 调用输入函数,完成输入 S2: 设计一个求解平均值的函数averge( ) S3: 调用输出函数,完成输出