




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、2022/7/6121世纪高职高专新概念教材C语言程序设计教程(第二版)2022/7/62第1章 语言概述教学目的:掌握C语言的程序结构,函数结构,源程序书写规则,以及TC+3.0的基本操作。了解C语言的特点和语句。2022/7/63教学内容:1.1 发展简史和特点1.2* 程序结构与函数结构1.3* 源程序书写规则1.4 C语言的语句1.5* TC+3.0基本操作本章要点2022/7/641.1 发展简史和特点 1语言的诞生与发展贝尔实验室于70年代初研制出来。80年代初,美国国家标准化协会(ANSI),制定了ANSI C标准(俗称标准C),1989年再次做了修订(称新标准C) 。微机上广泛
2、使用的语言编译系统有MSC、TC 、BC:基本部分相同,但存在一些差异。本课程以ANSI C新标准来介绍,上机环境选择TC +3.0。2022/7/652C语言的特点C语言兼有汇编和高级语言的优点:(1) 汇编语言:可以直接操纵硬件。(2) 高级语言:可读性和可移植性良好。返回2022/7/661.2* 程序结构与函数结构1.2.1 程序结构 1最简单的程序:仅由一个main( )函数(又称主函数)构成。案例1.1 仅由main()函数构成的语言程序。 #include “stdio.h”#include “conio.h”void main( ) printf(“This is a C pr
3、ogram.n”); getch(); 程序运行结果:This is a C program. 2022/7/672一般化结构:由一个main()函数和若干个其它函数结合而成。案例1.2 由main()函数和1个max()函数构成的语言程序。 #include “stdio.h”#include “conio.h”void main( ) int num1, num2; printf(“Input the first integer number: ”); scanf(“%d”, &num1); printf(“Input the second integer number: ”); scan
4、f(“%d”, &num2); printf(“max = %dn”, max(num1, num2); getch(); 2022/7/68int max( int x, int y) return( xy ? x : y ); 程序运行情况: Input the first integer number: 6 Input the second integer number: 9 max = 92022/7/69案例1.3 交换案例1.2中main( )函数和max( )函数的位置。源程序略。程序运行情况: Input the first integer number: 6 Input th
5、e second integer number: 9 max = 9思考:案例1.3说明了什么?2022/7/6103说明:函数是语言程序的基本构成单位。(1)main()函数: C语言程序总是从main( )函数开始执行(不论其在程序中的位置),止于主函数结束。(2)其它函数:通过被main( )函数直接或间接调用而执行。习惯:将主函数main()放在最前头。2022/7/611 1.2.2 函数结构 任何函数(包括主函数main()都是由函数说明和函数体两部分组成:函数类型 函数名( 函数参数表 ) 说明语句部分; 执行语句部分; 函数说明函数体2022/7/6121语法符号约定 . 可选
6、(即可以指定,也可以缺省)前面的项可以重复 | 多(含2)中选1 2022/7/6132函数说明:由函数类型(可缺省)、函数名和函数参数表(可缺省)组成。案例1.2中函数max()的函数说明如下: int max ( int x , int y )函数参数表的一般格式为:数据类型 形参,数据类型 形参2函数类型函数名函数参数表2022/7/6143函数体:在函数说明的下面、最外层1对大括号(必须配对使用)括起来的部分。案例1.2中main( )函数的函数体如下:void main( ) int num1, num2; printf(“Input the first integer number
7、: ”); scanf(“%d”, &num1); printf(“max = %dn”, max(num1, num2); 变量定义可执行语句2022/7/615一般由两部分构成:(1)数据说明部分:由变量定义、自定义类型定义、自定义函数说明、外部变量说明等组成。(2)可执行语句部分:一般由若干条可执行语句构成。注意:函数体中的变量定义语句,必须在所有可执行语句之前。2022/7/616下面程序中 “int max;”的位置非法:#include “stdio.h”#include “conio.h”void main() int x , y;/*变量定义语句*/ x = 3; y = 6;
8、 /*可执行的赋值语句*/ int max; max = x y ? x : y ; printf(“max = %dn”, max); getch(); 思考:如何解决?返回变量定义语句出现在可执行的赋值语句之后2022/7/6171除字符串常量中的字符外,一律使用半角字符。例如,字母、数字、标点符号等。2所有语句都必须以分号“;”结束,函数的最后一个语句也不例外。3允许1行内写几条短语句,也允许将1条很长的语句分写在几行上。1.3* 源程序书写规则2022/7/618案例1.2中的主函数main( ),也可写成如下格式:void main() int num1, num2; printf(
9、“Input the first integer number: ”); scanf(“%d”, &num1); printf(“Input the second integer number: ”); scanf(“%d”, &num2); printf(“max=%dn”, max(num1, num2); 2022/7/619 4允许使用注释: /* */(1) “/*”和“*/” 必须成对使用,且“/”和“*”、以及“*”和“/”之间不能有空格,否则都出错。技巧:必须配对使用的符号(例如注释符号、函数体的花括号、圆括号等等),可连续输入这些起止标识符,通过插入来完成内容的编辑。2022
10、/7/620(2) 注释可以单占1行,也可跟在语句的后面。(3) 如果1行写不下,可另起1行继续写。(4)注释中允许使用汉字。在非中文操作系统下,看到的是一串乱码,但不影响程序运行。 返回2022/7/6211.4 C语言的语句按照语句功能(或构成)的不同,将语言的语句分为五类。1. 控制语句(条,为三种)(1) 选择结构控制语句:if( ), switch( )(2)循环结构控制语句:dowhile() , for(), while( ) , break , continue(3) 其它控制语句:goto , return2022/7/622 2. 函数调用语句由一次函数调用加一个分号(语句
11、结束标志)构成。例如,printf(This is a C function statement.) ;3. 表达式语句由表达式后加一个分号构成。最典型的是赋值语句:num = 5 ;/*赋值语句*/4. 空语句仅由一个分号构成。例如: ;2022/7/6235. 复合语句由大括号括起来的若干条语句构成。main() /*右括号后不需要分号!*/ 复合语句的性质: (1)在语法上和单一语句相同,即单一语句可以出现的地方,也可以使用复合语句。(2)允许嵌套,即复合语句中也可出现复合语句。2022/7/624C语言的控制语句9条:用于实现选择结构、循环结构和其它控制。输入输出(I/O)操作,均由标
12、准库函数来实现。所以学习C语言,不仅要学习这9条控制语句,而且要学习并掌握常用标准库函数的使用。返回不是C语言的组成部分2022/7/6251.5* TC+3.0的基本操作1. 运行一个语言程序的一般过程 2. TC+的启动、退出与命令菜单 3. 选择工作目录4. 新建一个语言源程序 5. 编译、连接、运行、查看结果 、新建下一个返回2022/7/6261. 运行一个语言程序的一般过程 TC+是一个集源程序编辑、编译、连接、运行与调试于一体、 用菜单驱动的集成开发环境。(1) 启动TC,进入TC集成开发环境。(2) 选择工作目录 存放用户文件的目录。(3) 新建 (或编辑)源程序。(4) 编译
13、。成功,转下一步;失败,返回(3) 。2022/7/627(5)连接。成功,转下一步;失败,根据系统的错误提示,进行相应修改,再重新连接。(6)运行。如果出现逻辑错误,则返回(3),重新修改源程序,再编译、连接和运行。(7)退出TC集成环境,结束本次程序运行。返回2022/7/6282. TC+的启动、退出与命令菜单 (1)启动Turbo C + : 双击桌面图标 双击主程序文件名TC.EXE (在TC+3.0下的文件夹BIN中)。首次启动TC+的初始画面如图1-3所示:2022/7/629(2)命令菜单的使用鼠标 / 键盘:F10激活,F10Esc关闭。(3)退出Turbo C 菜单法:Fi
14、le | Quit 快捷键法:Alt + X (先按下Alt键并保持,再按字母键,然后同时放开)返回2022/7/6303选择工作目录 存放用户文件的目录。选择并执行File | Change Dir.项,系统弹出一个“Change Directory”窗口,如图1-4所示:在“Directory Name”下的文本框中输入工作目录,或者在“Directory Tree”下的目录树中选择工作目录(C:TC30CASE),然后单击“OK”按钮。返回2022/7/6314. 新建一个语言源程序 (File | New)选择并执行File | New项,系统给出一个空白编辑窗口,如图1-5所示:20
15、22/7/632常用编辑操作:F2键(或File | Save)将当前编辑的文件存盘,然后继续编辑。这是一个良好的习惯!F1键激活活动窗口(或状态)的在线帮助,Esc返回原窗口(或状态)。F1查询库函数的在线帮助信息:将光标移到需要查询函数名的首字符上,然后键入F1即可。返回 Ctrl2022/7/6335. 编译、连接、运行单个源程序文件 :F9 / Run | Run6. 查看结果: Alt+F5 / Windows | User Screen 7. 新建下一个源程序:File | New。返回2022/7/634本 章 要 点1、C语言有多种版本,本课程以ANSI C新标准为蓝本介绍 。
16、2、C语言的特点:兼有汇编和高级语言的优点。3、C语言程序的一般结构由一个main()函数和若干个其它函数结合而成。2022/7/6354、C语言函数的结构函数类型 函数名(函数参数表) 函数说明 说明语句部分; 执行语句部分; 函数体 2022/7/6365、源程序书写规则(1) 除字符串常量中的字符外,一律使用半角字符。(2) 所有语句必须以分号“ ;”结束;(3) 注释: /* */。2022/7/6376、TC的基本操作(1) 启动、退出与命令菜单 (2) 新建(或编辑)(3) 编译、连接、运行(4) 查看结果返回2022/7/638 第2章 数据类型、运算与表达式教学目的:掌握变量命
17、名规则与定义、整型数据值域、字符(串)常量的表达与存储,赋值运算以及运算符的结合性;了解常量及其表达、实型数据分类,自增、自减运算等 。2022/7/639教学内容:2.1 程序设计概述2.2 数据类型2.3* 常量和变量2.4* 整型数据2.5 实型数据2.6* 字符型数据2.7 算术运算与算术表达式2.8* 赋值运算与赋值表达式2.9 自增、自减与逗号运算简介本章要点本章作业与上机实践2022/7/6402.1 程序设计概述一个程序应包括对数据的描述和对数据处理的描述。1对数据的描述数据结构C语言提供的数据结构,以数据类型的形式出现。2022/7/6412对数据处理的描述算法著名计算机科学
18、家沃思提出一个经典公式: 数据结构 + 算法 = 程序在软件工程中,除了数据结构和算法外,还必须编制相关文档。 返回2022/7/6422.2 数据类型C语言提供的数据结构,以数据类型形式出现。常用的有以下3类6种:1. 基本类型:整型、实型(浮点型)、字符型等。2. 构造类型:数组、结构类型等。3. 指针类型。C语言中的数据,有常量和变量之分,它们分别属于某种数据类型。返回2022/7/6432.3* 常量和变量2.3.1 常量1. 概念在程序运行过程中,其值不能被改变的量。2. 分类(通过书写形式来判别)(1)整型常量:1,7,12(2)实型常量:3.14,9.80(3)字符(串)常量:a
19、,1 / ”ABC”,”中国北京”(4)符号常量:PI(3.14)。2022/7/6442.3.2* 变量1. 概念在程序运行过程中,其值可以被改变的量。2. 两个要素(1)变量名:每个变量都必须有一个名字,变量命名遵循标识符命名规则。(2)变量值:在程序运行过程中,变量值存储在内存中。在程序中,通过变量名来引用。2022/7/645. 标识符命名规则(1)有效字符:只能由大写字母、小写字母、数字和下划线组成,且以字母或下划线开头。注意:在C语言中,同一字母的大小写,被认为是两个不同的字符。关键字中,除个别外,绝大多数也是如此。思考:在C语言中,变量名total与TOTAL、ToTaL、tOt
20、Al等是同一个变量吗?2022/7/646(2) 有效长度:随系统而异;但,超长部分被舍弃。思考:假设某系统标识符的有效长度为8,则student_name和student_number是一回事吗?(3) C语言的关键字不能用作标识符名。2022/7/6474. 标识符命名的软件工程要求见名知义所谓“见名知义”是指,通过标识符名就知道标识符所代表的含义。方法:英文单词(或缩写) ,或汉语拼音字头。例如,name/xm(姓名)、sex/xb(性别)、age/nl(年龄)、salary/gz(工资)。比较:a、b、c、d与上述4个变量名的可读性?2022/7/6485. 变量的定义与初始化在语言中
21、,变量必须先定义、后使用。变量初始化定义变量的同时赋初值的操作。 存储类型 数据类型 变量名=初值,变量名2=初值2;例如,float radius, length, area ;例如,float radius = 2.5 ; 返回2022/7/6492.4* 整型数据2.4.1* 整型变量1分类根据占用内存字节数的不同,分为4种。常用的有:(1) 基本整型(int)(简称为整型)(2) 长整型(long int)一般:long型(字节) int型(字节) 。2022/7/6502值域可使用sizeof( 类型|变量 )运算符,求得某种整型(变量)占用的内存字节数n 。其值域如下: 有符号整型
22、变量的值域为:-2n*8-1 ( 2n*8-1 - 1); 无符号整型变量的值域为:0 ( 2n*8 1 )。例如,在16位系统(如IBM-PC)中, sizeof( int ) = 2,即int变量占用字节,其值域为-22*8-1(22*8-1-1),即-32768 32767。2022/7/651思考:假设被处理数据的取值范围为-1000至+100,000的整数,那么对应的变量应定义为什么类型?2022/7/6522.4.2 整型常量1表示形式三种(十、八、十六进制),最常用的是十进制:10,36。2022/7/6532分类(1)基本整型:在16位机中,用2字节存储,其值域与int变量一样
23、。(2)长整型(在数值后面加“L|l”)对超出int型值域的整型常量,应使用长整型常量表示。例如,long n = 100000L;2022/7/6543赋值规则一个整型常量,可以赋给值域它的整型变量,即:基本整型常量 int、long型变量;长整型常量 long 型变量。返回2022/7/6552.5 实型数据2.5.1 实型变量分类1单精度型(float):一般占字节(32位) 。2双精度型(double):一般占8个字节。2022/7/6562.5.2 实型常量实型常量即实数(浮点数),有两种表达形式:(1)十进制小数形式:3.14,9.8。 (2)指数形式:尾数 E(e) 整型指数。例
24、如,3.0+5。实型常量不分float型和double型,可以赋给一个实型变量(float或double型)。返回2022/7/6572.6* 字符数据2.6.1 字符常量1. 定义用一对单引号括起来的单个字符。例如,A、等。2. 转义字符以反斜杠“ ”开头的字符常量。常用转义字符参见表2-1,最常用的是n。注意:如果反斜杠或单引号本身作为字符常量,必须使用转义字符:、。2022/7/6582.6.2 字符变量(char) 一般占用1字节内存单元,用于存储字符常量。1变量值的存储将一个字符常量存储到一个字符变量中,实际上是将该字符的ASCII码值 (无符号整数)存储到内存单元中。例如:char
25、 ch1= a ; /*给字符变量赋值*/2022/7/6592特性字符数据与整型数据之间通用因为字符数据在内存中存储,与整数一样:A: 0100000165:00000000, 01000001具体:(1) 输出:字符 + 整数(ASCII码值)(2) 允许参与算术运算(ASCII码值)2022/7/6602.6.3 (字符)串常量1用一对双引号括起来的若干字符称为(字符)串常量。2字符串中的字符个数称为字符串长度(简称串长)。例如, “Good morning.”、“A”、 “ ” (一对紧连的双引号) ,串长分别为13 (空格也是一个字符) 、1和0(长度为0的字符串称为空串)。2022
26、/7/661注意:如果反斜杠和双引号作为字符串中的有效字符,则必须使用转义字符。例如:C:msdosv6.22 C:msdosv6.22I say:Goodbye! I say:Goodbye! 2022/7/6623串常量的存储由系统在字符串的末尾自动添加一个0作为字符串的结束标志。例如,字符串“CHINA”,在内存中的实际存储如下:CHINA0返回2022/7/6632.7 算术运算与算术表达式1. 算术运算符+、-(减法/取负)、*、/、%(求余数)C语言规定:两个整数相除,其商为整数,小数部分被舍弃。例如,5 / 2 = 2,-5 / 2 = -2。2022/7/6642. 表达式和算
27、术表达式(1)表达式用运算符和括号,将运算对象(常量、变量和函数等)连接起来的、符合语言语法规则的式子。例如, ( x + y ) / 2 1。(2)算术表达式表达式中的运算符都是算术运算符。例如,3 + 6 * 9。2022/7/6653求表达式的值(1)优先级:高低。例如,先乘除后加减: a b * c。(2)如果某个操作数两侧运算符的优先级相同,则按结合性进行: 左结合性(先左后右的结合方向)运算符:操作数先与左边的运算符结合。例如, 1 - 2 + 3:先执行“1 - 2”,再“+ 3” 。2022/7/666 右结合性(先右后左的结合方向)运算符:操作数先与右边的运算符结合。例如,
28、a = b = 1:先执行“b = 1”,再执行“a = (b = 1)” 。说明:除单目、赋值和条件运算符是右结合性外,其它运算符都是左结合性。详见附录B。2022/7/6674. 数据类型转换(1) 不同类型数据间混合运算时,系统“先转换、后运算”先将数据自动转换成同一类型,然后再运算。转换规则如图2-5所示:1) 必须的转换。2) 不同类型的转换方向。例如,int型与double型混合运算,则int型double型,结果为double型。2022/7/668(2) 语言也允许强制转换: (目标数据类型) ( 被转换表达式 )(double) (a) / (double) a(float)
29、5 / 2 = ?(float)(5 / 2) = ?注意:原表达式类型并不发生变化。例如,(double)a。返回单个对象时,括号可缺省2022/7/6692.8* 赋值运算与赋值表达式1. 赋值运算 变量 = 表达式 例如,x = 5,y = (float)5 / 2 注意:如果“表达式”类型与变量不一致,则系统将“表达式” 的值转换成变量的数据类型,再赋值。思考:假设有“float num=2.5;”,则执行“num = (int)num”后,num的值等于多少?赋值运算符2022/7/6702. 复合赋值运算 变量 双目运算符 = 表达式 变量 = 变量 双目运算符 ( 表达式 )例如
30、:x += 3 x = x + 3y *= x + 6y = y * ( x + 6 ) /*不是y = y * x + 6*/单个对象时,圆括号才可缺省,否则可能出错。2022/7/6713. 赋值表达式由(复合)赋值运算符,将一个变量和一个表达式连接起来的表达式。(1)一般格式:变量 (复合)赋值运算符 表达式(2)赋值表达式的值被赋值变量的值,就是赋值表达式的值。例如,赋值表达式“a = 5”,变量a的值“”就是赋值表达式的值。返回2022/7/6722.9 自增、自减与逗号运算2.9.1 自增(+)、自减(-)运算1. 作用:使单个变量的值增(+ +) 、减(-)。2. 用法及其运算规
31、则2022/7/673(1)前置运算 + +变量、-变量运算规则:先增减、后运算,即先使变量的值增(减),然后再以变化后的值参与其它运算。例如:num1 = + num2; num2 = num2+1;/*先增减*/ num1 = num2;/*后运算*/2022/7/674(2)后置运算变量+ +、变量-运算规则:先运算、后增减,即变量先参与其它运算,然后再使变量的值增(减)。例如:num1 = num2-; num1 = num2;/*先运算*/ num2 = num2 1;/*后增减*/注:自增/减单独运算时,前置与后置等价。num+; + num; num-; - num;2022/7
32、/675案例2.4自增、自减运算的用法与运算规则示例。 #include “stdio.h”#include “conio.h”void main() int x = 6, y; printf(x = %dn, x); y = +x; /*前置运算*/ printf(y = +x: x = %d, y= %dn, x, y); y = x-; /*后置运算*/ printf(y = x-: x = %d, y= %dn, x, y); getch(); 程序运行结果:2022/7/676x = 6y = +x: x = 7, y = 7y = x-: x = 6, y = 7思考:如果将“y
33、= +x;” 改为“y = x+;”,“y = x-;” 改为“y = -x;”,程序运行结果会如何?注意:自增、自减运算符,只能用于单个变量,不能用于常量和表达式。例如,5+、-(a+b)等都是非法的。2022/7/6772.9.2 逗号运算(,)及其表达式1.一般形式:表达式1, 表达式2, , 表达式n2.求解过程:自左至右,依次计算各表达式的值,最后1个 “表达式n” 的值即为整个逗号表达式的值。例如:(1) a = 3 * 5, a * 4 :?(2) (a = 3 * 5, a * 4), a + 5 :?2022/7/678(1) a = 3 * 5, a * 4 :先求解a =
34、 3 * 5,得a=15;再求a * 4 = 60,所以逗号表达式的值=60。(2) (a = 3 * 5, a * 4), a + 5 :先求解a = 3 * 5,得a=15;再求a * 4=60;最后求解a + 5=20,所以逗号表达式的值=20。返回2022/7/679本 章 要 点标识符命名规则:有效字符、有效长度+关键字英文字母大小写敏感,见名知义整型变量:不同类型整型变量,占用的内存字节数不同,其值域不同。2022/7/680字符型数据:字符常量:单引号,单个字符;转义字符:反斜杠“ ”,反斜杠和单引号本身:,。字符变量:1B,ASCII码值。字符串常量:双引号,若干字符;存储时,
35、系统自动在串尾添加一个0 。2022/7/681运算整数相除:商为整数。赋值表达式的值:被赋值变量的值。前置运算规则:先增减、后运算后置运算规则:先运算、后增减返回2022/7/682本章作业与上机实践作业:1,3,4,6上机实践: (1)掌握TC+下开发C语言程序的基本操作。 (2)自己设计方案,验证作业6。 (3)自己设计方案,找出用字符形式输出一个256的数值,会得到什么结果?返回2022/7/683第3章 顺序结构程序设计数据处理的一般过程是:输入 处理 输出。在C语言中,输入输出操作是由编译系统提供的库函数来实现。教学目的:掌握printf() 、scanf()函数,以及顺序结构程序
36、设计。2022/7/684教学内容:3.1* 格式化输出printf()函数3.2* 格式化输入scanf()函数3.3 顺序结构程序设计本章要点本章作业与上机实践2022/7/6853.1* 格式化输出printf()函数3.1.1 printf()函数的一般格式 案例3.1 已知圆半径radius=1.5,求圆周长(2r)和圆面积(r2) 。2022/7/686#include “stdio.h”#include “conio.h”void main( ) float radius = 1.5, length, area, pi=3.14; length = 2 * pi * radius
37、; area = pi * radius * radius; printf(“radius = %fn”, radius); printf(“length = %7.2f, area=%7.2fn”, length, area); getch(); radius = 1.500000length = 9.42, area = 7.072022/7/687printf()函数的一般格式: printf(格式字符串 ,输出项表);1格式字符串(1)格式指示符: %标志宽度.精度F|N|h|L类型例如,%7.2f。各类常用指示符,参见表3-1至表3-5。2022/7/688在表3-1中,最常用的标志
38、字符是“-” :左对齐,右端补空格。缺省时为右对齐,左端补空格。在表3-2中,最常用宽度字符“n”:指定输出域的宽度。若超长,则按实际宽度输出;若不足,则补空格。在表3-3中,最常用精度字符“ .n”:指定保留的小数位数(实数,超长则4舍5入),或截取左起的前n个字符(字符串)。在表3-4中,最常用的长度字符“l”:长整型。2022/7/689在表3-5 中,最常用的数据类型转换字符如下表所示: 数据类型类型转换字符功 能整 数d 带符号十进制整数实 数f十进制小数形式(默认6位小数)字 符c输出1个字符s输出1个字符串2022/7/690(2)转义字符。特点:通常是产生一个控制操作。例如,转
39、义字符n,输出时产生一个“换行”操作。 (3)普通字符除格式指示符和转义字符之外的其它字符。特点:原样输出。例如,“radius=”、“length=”、“area=”、“,”。2022/7/6912输出项表如果不止1个,则相邻2个之间用逗号分开。下面的用法都是合法的:(1)printf(I am a student.n);(2)printf(%d,3+2);(3)printf(a=%f b=%5dn, a, a+3);2022/7/6923.1.2 常用的类型转换字符输出不同类型数据,要使用不同类型转换字符。2022/7/6931类型转换字符d以带符号的十进制整数形式输出。案例3.2 类型转
40、换字符d的使用。#include “stdio.h”#include “conio.h”void main() int num1=123; long num2=123456; printf(num1=%d,num1=%5d,num1=%-5d,num1=%2dn, num1,num1,num1,num1); printf(num2=%ld,num2=%8ld,num2=%5ldn, num2,num2,num2); printf(num1=%ldn,num1); getch(); 2022/7/694程序运行结果如下:num1=123,num1=123,num1=123,num1=123num
41、2=123456,num2=123456,num2=123456num1=16908411(1)格式指示符,必须与输出项的数据类型一致,否则会引起输出错误。(2)对于整数,还可用%o(八进制无符号形式)、 %x(十六进制无符号形式)、 %u(十进制无符号形式)输出。类型匹配错误,输出结果是随机的。2022/7/6952类型转换字符f以小数形式输出实数。案例3.3 类型转换字符f的使用。#include “stdio.h”#include “conio.h”void main( ) float f = 123.456; double d1,d2; d1 = 1111111111111.11111
42、1111; d2 = 2222222222222.222222222; printf(%f, %12f, %12.2f, %-12.2f, %.2fn, f, f, f, f, f ) ; printf(d1 + d2 = %fn, d1 + d2); getch(); 2022/7/696程序运行结果如下:123.456001,123.456001,123.46,123.46,123.46d1+d2=3333333333333.333010提示:对于实数也可使用%e,以标准指数形式输出;或使用%g,让系统根据数值的大小,自动选择%f或%e格式、且不输出无意义的零。2022/7/6973类型转
43、换字符c输出1个字符(占1列宽度)案例3.4 类型转换字符c的使用。#include “stdio.h”#include “conio.h”void main() char c=A; int i=65; printf(c= %c, %5c, %dn, c, c, c ); printf(i = %d, %c, i, i); getch(); 程序运行结果如下: c = A, A, 65 I = 65, A2022/7/6984类型转换字符s输出一个字符串。案例3.5 类型转换字符s的使用。#include “stdio.h”#include “conio.h”void main() print
44、f(%s, %5s, %-10s,Internet,Internet,Internet); printf(%10.5s, %-10.5s, %4.5sn,Internet,Internet,Internet); getch(); 程序运行结果如下:Internet,Internet,Internet,Inter,Inter,Inter 注意:系统输出字符(串),不输出单引号和双引号。2022/7/6993.1.3 使用说明1格式指示符,必须按从左到右的顺序,与输出项表中的每个数据一一对应,否则出错。例如,printf(str = %s, f = %d, i = %fn, Internet, 1
45、.0 / 2, 3 + 5, CHINA);是错误的。2类型转换字符的紧前字符不是“%”时,将作普通字符处理(原样输出)。例如,“printf(”c = %c, f = %fn“, c, f);”中的第一个c和f,都是普通字符。2022/7/61003类型转换字符x、e、g,大小写均可。大写时,输出数据中包含的字母也大写。其它类型转换字符,必须小写。例如,%f不能写成%F。返回2022/7/61013.2* 格式化输入scanf()函数3.2.1 一般格式 案例3.6 已知圆柱体的底半径radius=1.5,高high = 2.0 ,求其体积(r2 h) 。2022/7/6102#includ
46、e “stdio.h”#include “conio.h”void main() float radius, high, pi=3.14159, vol; radius=1.5; high=2.0; vol = pi * radius * radius * high; printf(“vol = %7.2fn”, vol); getch(); 思考:使用赋值语句给出初值的方式的局限性?2022/7/6103 案例3.7 已知圆柱体的底半径为radius、高为high,求其体积。#include “stdio.h”#include “conio.h”void main() float radiu
47、s, high, vol, pi=3.1415926; printf(Please input radius & high: ); scanf(%f%f, &radius, &high); vol = pi * radius * radius * high; printf(radius=%7.2f, high=%7.2f, vol=%7.2fn, radius, high, vol); getch(); Please input radius & high: 1.52.0radius=1.50,high=2.00,vol=14.142022/7/6104给计算机提供数据,可以使用:(1)赋值语
48、句。只能解决1个特定的问题。例如,案例3.6。(2)输入函数scanf() 。能解决1类特定的问题。例如,案例3.7。显然,采用scanf( )函数,使得程序具有更好的适应性。2022/7/6105scanf( )函数的一般格式: scanf(格式字符串, 输入项首地址表);(1)格式字符串 格式指示符:与printf()函数的相似; 普通字符:必须原样输入。2022/7/6106(2)输入项首地址表可以是变量首地址、数组名,或者指针变量。变量首地址的表示: &变量名相邻2个输入项首地址,用逗号分开。地址运算符2022/7/61073.2.2 数据输入操作(假设num1=12、num2=36)
49、1默认分隔符空格、 Tab键、回车如果不指定分隔符(例如逗号、冒号),则使用默认分隔符。例如,scanf(%d%d,&num1,&num2);正确的输入操作为: 1236 或者:12 362022/7/61082普通字符务必原样输入。(1) scanf(%d ,%d,&num1,&num2); 正确的输入操作为:12 , 36(2) scanf(num1=%d , num2=%dn,&num1,&num2); 正确的输入操作为: num1=12 ,num2=36n提示:scanf()格式字符串中,没有转义字符概念。比较(1)、(2)两种设计方式的优缺点?2022/7/6109比较(1)、(2)
50、两种设计方式的优缺点?(1) 仅输入数据,输入量小,但人机交互性差(用户不知道该输入什么,以及输入给谁)。(2) 同时输入说明和数据,人机交互友好性好,但输入量大。思考:如何改进设计,既保持良好的人机交互性,又不增加输入量?2022/7/6110提高人机交互性的设计思路:先用printf()函数输出提示信息,再用scanf()函数进行数据输入。scanf(num1=%d,num2=%dn,&num1,&num2);printf(num1=); scanf(%d,&num1);printf(num2=); scanf(%d,&num2);2022/7/61113使用 “%c”输入时,空格和转义字
51、符均作为有效字符被输入。例如:scanf(%c%c%c,&ch1,&ch2,&ch3);printf(ch1=%c,ch2=%c,ch3=%cn,ch1,ch2,ch3);思考:假设输入“ABC”,printf()输出的内容是什么?输出结果:ch1= A,ch2=,ch3= B返回2022/7/61123.3 顺序结构程序设计顺序结构程序一般包括两部分:1程序开头的编译预处理命令。如果要在程序中使用标准库函数,则必须使用编译预处理命令#include,将相应的头文件包含进来。2022/7/61132函数体主要包括:(1)变量定义语句;(2)输入语句;(3)运算语句;(4)输出语句。 3 执行流
52、程:各语句是按照物理位置次序,被顺序执行,且每个语句都会被执行到。2022/7/6114案例 输入3个整数,求它们的和及平均值。#include “stdio.h”#include “conio.h”void main() int num1,num2,num3,sum; float aver; printf(Please input three numbers:); scanf(%d, %d, %d, &num1, &num2, &num3); sum = num1 + num2 + num3;/*求累计和*/ aver = sum / 3.0; /*求平均值*/ printf(num1=%d
53、,num2=%d,num3=%dn, num1, num2, num3); printf(sum=%d, aver=%7.2fn,sum, aver); getch(); 2022/7/6115案例3.11 设计一个进行加、减、乘、除和求余数运算练习的程序。对程序功能的基本要求如下:(1) 使用菜单驱动;(2) 随机产生运算所需的2个操作数(0-99);(3) 程序自动判断用户的计算结果是否正确。由于所学内容的限制,本案例的设计要求将在本章,以及随后的第4 第7章中分阶段逐步实现并完善。本案例首先实现设计要求(1) 。 2022/7/6116/*功能:菜单程序段*/#include stdio
54、.h#include conio.hvoid main() char options; clrscr( );/*清屏。函数原型在conio.h中*/2022/7/6117 printf( 加、减、乘、除和求余数运算练习程序 n); printf(n); printf( + (Addition) + / a n); printf( - (Subtraction) - / s n); printf( * (Multiplication) * / m n); printf( / (Division) / / d n); printf( % (Remainder) % / r n); printf(
55、E x i t e n); printf(n); printf( Please choose one option: ); scanf(%1c , &options); getch(); 2022/7/6118程序运行情况如下: 加、减、乘、除和求余数运算练习程序 + (Addition) + / a - (Subtraction) - / s * (Multiplication) * / m / (Division) / / d % (Remainder) % / r E x i t e Please choose one option: _返回2022/7/61191. printf()函
56、数 printf(格式字符串 ,输出项表);本 章 要 点(1)格式指示符 %标志宽度.精度F|N|h|L类型(2)转义字符(3)普通字符原样输出。2022/7/61202. scanf()函数 scanf(格式字符串, 输入项首地址表);(1)格式指示符(2)普通字符:原样输入。&变量名2022/7/61213. 源程序书写风格顺序程序段左对齐顺序程序段中的所有语句(包括说明语句),一律与本顺序程序段的首行左对齐。4.良好的人机交互性提示输入/输出数据的含义(1)输入:printf(姓名:); scanf(%s, name);(2)输出:printf(姓名:%sn, name);返回2022
57、/7/6122本章作业与上机实践作业:2,3,6上机实践:验证本章作业。返回2022/7/6123第4章 选择结构程序设计选择结构程序设计,要解决两个问题:(1)选择条件如何表示:关系/逻辑表达式(2)实现选择结构语句: if、switch语句教学目的:掌握关系和逻辑运算,if语句、switch语句,选择结构程序设计。2022/7/6124教学内容:4.1 关系运算及其表达式4.2 逻辑运算及其表达式4.3* if语句4.4* switch语句4.5 选择结构程序设计本章要点本章作业与上机实践2022/7/61254.1 关系运算及其表达式关系运算将两个数据进行比较,判定是否符合给定的关系。例
58、如,“a b”中的“”,表示一个大于关系:如果a=5、b=3,则大于关系成立;如果a=2、b=3,则大于关系不成立。2022/7/61264.1.1 关系运算符及其优先次序1关系运算符(小于), (大于), =(大于等于)=(等于), !=(不等于)2与其它种类运算符的优先关系算术运算符 关系运算符 赋值运算符思考:在混合运算时,如何增强程序可读性(明确运算的优先关系)?不是 “= ”2022/7/61274.1.2 关系表达式1概念用关系运算符,将两个表达式连接起来的式子。例如:a b,a = b ,a + b c - d2关系表达式的值逻辑真 / 逻辑假如果关系成立,则表达式的值为逻辑真;
59、如果关系不成立,则表达式的值为逻辑假。语言没有逻辑型数据,用整数表示“逻辑真”,用整数表示“逻辑假”。2022/7/6128假设num1=3,num2=4,num3=5,则:(1) num1 num2 := 0(2) (num1 num2) != num3: = 1(3) num1 num2 num3 := 1思考:任意改变num1或num2的值,会影响整个表达式的值吗?为什么?x(1,100):1x=0) & (x10) ,(x5) ,! (x= =0), (year%4= =0) & (year%100!=0) | | (year%400= =0)2022/7/61302. 运算规则(1)
60、&:当且仅当两个运算对象的值都为“逻辑真”时,结果为“逻辑真”,否则为“逻辑假”。运算口诀:同时为真才为真,否则为假。(2) | :当且仅当两个运算对象的值都为“逻辑假”时,结果为“逻辑假”,否则为“逻辑真”。运算口诀:同时为假才为假,否则为真。2022/7/6131(3) ! :当运算对象的值为“逻辑真”时,结果为“逻辑假”;当运算对象的值为“逻辑假”时,结果为“逻辑真”。运算口诀:取反。2022/7/61324.2.2 逻辑表达式1. 概念用逻辑运算符,将若干表达式连接起来的式子。例如,逻辑表达式(year%4= =0) & (year%100!=0) | (year%400= =0),判
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 共同股权投资合同范本
- 关于续签监控合同范本
- 凉皮店用工合同范例
- 事业单位劳务合同范本3篇
- 公司考核合同范本
- 下班无偿保洁合同范本
- 入股销售合同范本
- 北京贷款合同范本
- 农业设备运输合同范例
- 公司签承揽合同范本
- 《魔方知识普及》课件
- 东芝授权委托书标准版
- 2023施工项目部标准化工作手册
- 中小学幼儿园中班下册点点回家公开课教案教学设计课件案例测试练习卷题
- SG-400140型火电厂锅炉中硫烟煤烟气喷雾干燥法脱硫+袋式除尘系统设计
- 中型轿车的盘式制动器的设计
- 低血糖急救护理课件
- 学做小小按摩师(课件)全国通用三年级上册综合实践活动
- 阴道镜检查临床医学知识及操作方法讲解培训PPT
- “教学评一体化”指导的语文教学设计以统编版语文四年级上册《蟋蟀的住宅》为例
- AI09人工智能-多智能体
评论
0/150
提交评论