1、2020/1/29,任课教师:许创,1,C语言程序设计,任课教师介绍许 创 副教授 (工学院计算机系) 手机:692211 E-mail: 网站: FTP:10.10.152.105,2020/1/29,任课教师:许创,2,上机习题,CH1EX3: 调试程序,找出其中错误并改正。 CH2ABS: a, b是任意输入的两个整数,计算 a+|b|,并显示计算结果。 CH2CVS: 输入一个华氏温度F,输出对应的摄氏温度。公式为:c=5/9(F-32) 练习:2.6 2.7 2.8,2020/1/29,任课教师:许创,3,第1章 C语言程序设计基本概念,了解C语言的历史和特点 熟悉计算机语言的不
2、同类型 了解C语言的结构 理解C语言程序的开发过程 了解算法的概念 了解结构化程序设计方法,学习目标,2020/1/29,任课教师:许创,4,C语言的特点 语言简洁、紧凑,使用方便、灵活 运算符丰富,具有多种运算功能 有丰富的数据类型 生成代码质量高,程序执行效率高 C程序的可移植性好 是一种结构化程序设计语言 语法限制不严,程序设计自由度大 C提供的位运算可直接对硬件操作,2020/1/29,任课教师:许创,5,程序设计语言 人与计算机进行信息交流的工具 机器语言 汇编语言 高级语言 面向过程语言 (C、PASCAL等) 面向对象语言 (JAVA、C+等) 甚高级语言 (尚在开发),2020
3、/1/29,任课教师:许创,6,机器语言1、与计算机硬件的设计密切相关 (无移植性) 2、是计算机能直接识别的语言3、由一组二进制0和1序列构成,【例】计算 4+8取数 1011 0000 0000 0100 将4送累加器加 0000 0100 0000 1000 8与累加器中的4相加停机 1111 0100,特点:繁琐、难记、难读、难写、不可移植,2020/1/29,任课教师:许创,7,汇编语言1、与计算机硬件的设计密切相关2、计算机不能直接识别 3、计算机基本操作是采用英语缩写的助记符来编写程序,【例】计算 4+8MOVE AL, 4 将4 送累加器ADD AL, 8 8 与累加器中的 4
4、相加HLT 停机,2020/1/29,任课教师:许创,8,汇编程序: 将汇编语言程序转换为计算机能识别的机器语言,2020/1/29,任课教师:许创,9,高级语言基本与计算机的硬件设备无关,【例】计算4+8(用C语言编写)sum=4+8;,编译程序: 高级语言转换为机器语言的翻译程序,2020/1/29,任课教师:许创,10,简单的C程序实例,运行结果:Welcome to C programming.,【例1-1】 /第一个C程序 #include“stdio.h“ void main() /* 函数头 */ printf(“Welcome to C programming.n“); ,注释
5、,头文件,主函数、注释,系统提供的输出函数,2020/1/29,任课教师:许创,11,【例1-2】编写求三数中最大值问题的程序,#includeint max_value(int a, int b, int c) int max; if(ab) max=a; else max=b;if(maxc)max=c; return (max);,void main() int x, y, z, maxx; scanf(“%d%d%d“, ,输入:8 5 7输出:max=8,2020/1/29,任课教师:许创,12,C语言程序的构成 C程序由函数组成 每个函数完成相对独立的功能 C提供了丰富的库函数 每
6、个C程序都有一个叫做main的主函数 main( )后面花括号内的部分叫函数体 函数体含“说明部分”和“执行部分” 说明部分和执行部分各由若干语句组成 语句以分号为结束标记,2020/1/29,任课教师:许创,13,C函数的一般形式函数类型 函数名(形式参数表)说明、定义部分函数执行部分,2020/1/29,任课教师:许创,14,Niklaus Wirth 提出的著名公式:数据结构+算法 = 程序 什么是算法? 对特定问题求解方法和步骤的一种描述。 算法的两大要素: 操作 控制结构 算法解决的问题: 做什么 如何做,算法,2020/1/29,任课教师:许创,15,算法的特性:1. 有穷性2.
7、确定性3. 有效性4. 有零个或多个输入5. 有一个或多个输出 描述算法的工具:自然语言伪代码流程图NS图 等等,2020/1/29,任课教师:许创,16,【例】求三个数中最大值问题,自然语言: 日常使用的语言 先将a,b进行比较,找出其中的大数;然后再把它和第三个数c进行比较,如果它比c大,则它就是最大数,否则c是最大数。,伪代码: 介于自然语言和计算机语言之间的文字和符号进行描述,IF abTHEN max=aELSE max=b IF maxcTHEN 输出 maxELSE 输出 c,2020/1/29,任课教师:许创,17,流程图: 传统图语言表示法 ANSI规定了一些常用的流程图符号
8、:,起止框 输入输出框 判断框 处理框 流程线 连接圈,【例】酱油与醋的问题:试用自然语言描述如何将酱油与醋互换位置的过程。,2020/1/29,任课教师:许创,18,三个数中最大值问题的流程图(图1-4),2020/1/29,任课教师:许创,19,N-S图(结构化流程图): 图语言表示法 三个数中最大值问题的 N-S图(图1-5),2020/1/29,任课教师:许创,20,结构化程序设计方法,结构化程序设计的基本方法:自顶向下,逐步求精,将复杂问题分解为若干的独立的小问题(小模块)。,【例】求解两个数的平均值 1、分解:问题分解为三个模块 :S1: 输入两个数a, bS2: 求两个数的平均值
9、赋给averS3:输出平均值,2020/1/29,任课教师:许创,21,2、实现方法,算法细化 S1: 调用输入函数,完成输入 S2: 设计一个求解平均值的函数averge( ) S3: 调用输出函数,完成输出,3、C 语言实现主函数的编程 /求两个数的平均值 void main() /主函数 float a, b, ave; /声明a、b和ave为实型变量 scanf(“%f%f“, /输出ave的值 ,2020/1/29,任课教师:许创,22,4、逐步求精:设计averag(float x,float y)函数的算法(设两个参数为float x,float y) S2.1 :把x加y的和除
10、2的值送给aver S2.2 :把aver的值返回给主函数。,5、C 语言实现averag(float x,float y)函数的编程 #include float average(float x, float y) /求两个数的平均值 float aver; /声明aver为实型变量aver=(x+y)/2; /计算两个数的平均值赋给averreturn (aver); /aver的值作为函数的的返回值 ,2020/1/29,任课教师:许创,23,6、两模块连接成一个完整的求解程序 #include float average(float x, float y) /求两个数的平均值 floa
11、t z, aver; /声明aver为实型变量aver=(x+y)/2; /计算两个数的平均值赋给averreturn (aver); /aver的值作为函数的的返回值 void main() /主函数 float a, b, ave; /声明a、b和ave为实型变量 scanf(“%f%f“, /输出ave的值 ,2020/1/29,任课教师:许创,24,用自然语言描述: S1: 输入两个整数x, y S2: 交换x, y 细化S2: S2.1:将x赋给t S2.2:将y赋给x S2.3:将t赋给y,相应的程序段: /输入x、y scanf(“%d%d“, ,【例1-3】设计两整数交换的算法
12、,2020/1/29,任课教师:许创,25,两数交换的另一个奇特难懂的算法: S1: 输入两个整数x, y S2: 将x+y赋给x S3: 将x-y赋给y S4: 将x-y赋给x 相应的程序段:scanf(“%d%d“, ,2020/1/29,任课教师:许创,26,【例】对于一个大于3的整数,判断它是不是素数(循环之例) 算法如下:1. 输入n2. i=23. n被i除,得余数r4. 若r=0,则输出n“不是素数”,算法结束5. i=i+16. 若in/2,则重新执行3. ;否则执行7.7. 输出n“是素数”,算法结束,2020/1/29,任课教师:许创,27,结构化程序的三种基本控制结构:顺
13、序结构选择结构(if_else)循环结构(while, repeat_until),顺序结构:,流程图,N-S图,先执行A操作, 再执行B操作。,2020/1/29,任课教师:许创,28,选择结构:,流程图,N-S图,当P 条件成立 (为真T)执行A否则 (为假 F)执行B,2020/1/29,任课教师:许创,29,循环结构1(while ):,流程图,N-S图,当P条件成立 (为真 T)反复执行A,直到P为 假时结束。,2020/1/29,任课教师:许创,30,循环结构2(repeat_until),流程图,N-S图,先执行A操作,再判断P,若为假,再执行A,直到P为 真时结束。,2020/
14、1/29,任课教师:许创,31,三种基本结构的共同特点: 1)单入口 2)单出口 3)无死语句 4)无死循环,顺序,选择,循环,2020/1/29,任课教师:许创,32,C程序的编辑、编译和执行,编辑:利用编辑器,通过键盘将C源程序输入到计算机,并以文件形成保存到磁盘。 编译:利用编译器,将C源程序编译成目标程序。 连接:利用连接器,将C已编译的目标程序和库函数连接之后,生成可执行文件,并以文件形成存入到磁盘上,文件扩展名为 .exe。 运行: 在操作系统下运行可执行文件。,2020/1/29,任课教师:许创,33,上机实践 运行环境turbo C (2.0或3.0) 编辑录入、修改 编译翻译
15、为二进制代码(obj) 连接连接各模块的二进制代码,生成可执行文件(exe) 运行运行程序,2020/1/29,任课教师:许创,34,Turbo C 2.0上机环境简介,四个最主要菜单 File 创建新文件、打开文件、保存文件、改变目录、退出系统 Edit 切换到编辑状态 Compile 编译、连接成目标文件或可执行文件 Run 自动编译、连接并运行,2020/1/29,任课教师:许创,35,Turbo C 3.0上机环境简介,五个最主要菜单 File 创建新文件、打开文件、保存文件、改变目录、退出系统 Edit 常用编辑命令 Compile 编译、连接成目标文件或可执行文件 Run 自动编译
16、、连接并运行 Windows 窗口切换,2020/1/29,任课教师:许创,36,可用快捷键打开菜单如按+F 可打开文件菜单 输入程序前一般应先改变好目录File/Change dir 先编译、后保存、再运行 在3.0版本,可用鼠标,在多程序窗口环境下可选Windows-Next命令作窗口切换,2020/1/29,任课教师:许创,37,Turbo C 常用编辑命令,上翻一屏 下翻一屏 移到行首 移到行尾 QR移到文件首 QC移到文件尾,2020/1/29,任课教师:许创,38,QF查找 I查找下一个 QA查找并替换 Y删除一行 N或插入一行 向前删一个字符 向后删一个字符,2020/1/29,任课教师:许创,39,QY从光标删到行尾 插入状态开关 KS存盘不退出 将本次操作作废或退回上级菜单,2020/1/29,任课教师:许创,40,Turbo C 常用块操作命令,KB定义块首 KK定义块尾 KC块复制 KV块移动 KY块删除 KH隐藏/显示块 KW写块 KR读块,2020/1/29,任课教师:许创,41,Turbo C 常用功能键,F2存盘 F5缩放当前窗口 F6切换编辑窗/信息窗 F9编译并连接 F10返回主菜单 +F5切换运行/用户屏幕 F9编译、连接并运行,