C语言程序设计教程(第二版)第二版ppt课件(完整版).ppt
2023/3/12121世纪高职高专新概念教材C语言程序设计教程(第二版)2023/3/122第第1 1章章 语言概述语言概述教学目的教学目的:掌握掌握C语言的程序结构程序结构,函数结构函数结构,源程序书写规则书写规则,以及TC+3.0的基本操作基本操作。了解了解C语言的特点和语句。2023/3/123教学内容教学内容:1.1 发展简史和特点发展简史和特点1.2*程序结构与函数结构程序结构与函数结构1.3*源程序书写规则源程序书写规则1.4 C语言的语句语言的语句1.5*TC+3.0基本操作基本操作本章要点本章要点2023/3/1241.1 1.1 发展简史和特点发展简史和特点 1语言的诞生与发展语言的诞生与发展贝尔实验室贝尔实验室贝尔实验室贝尔实验室于70707070年代年代年代年代初研制出来。80年代初,美国国家标准化协会(ANSI),制定了ANSI C标准(俗称标准标准C C),1989年再次做了修订(称新新标准标准C C)。微机上广泛使用的语言编译系统有MSCMSC、TCTC、BCBC:基本部分相同,但存在一些差异。本课程以ANSI CANSI C新标准新标准来介绍,上机环境选择TC TC+3.0+3.0。2023/3/1252C语言的特点语言的特点C语言兼有汇编和高级语言的优点:(1)汇编汇编语言:可以直接操纵硬件操纵硬件。(2)高级高级语言:可读性可读性和可移植性良好可移植性良好。返回返回2023/3/1261.21.2*程序结构与函数结构程序结构与函数结构1.2.1 程序结构程序结构 1最简单的程序:仅由一个main()函函数数(又称主函数)构成。案例案例1.1 仅由main()函数构成的语言程序。#include“stdio.h”#include“conio.h”void main()printf(“This is a C program.n”);getch();程序运行结果:This is a C program.2023/3/1272一般化结构:由一个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:”);scanf(“%d”,&num2);printf(“max=%dn”,max(num1,num2);getch();2023/3/128int max(int x,int y)return(xy?x:y);程序运行情况:Input the first integer number:6 Input the second integer number:9 max=92023/3/129案案例例1.3 交换案例1.2中main()函数和max()函数的位置。源程序略。程序运行情况:Input the first integer number:6 Input the second integer number:9 max=9思考思考:案例1.3说明了什么?2023/3/12103说明:函数函数是语言程序的基本构成单位。(1)main()函数:C语言程序总是从main()函数开始执行(不论其在程序中的位置),止于主函数结束。(2)其它其它函数:通过被main()函数直接或间接调用而执行。习惯习惯:将主函数main()放在最前头。2023/3/1211 1.2.2 函数结构函数结构 任何函数(包括主函数main()都是由函函数数说说明明和函数体函数体两部分组成:函数类型 函数名(函数参数表)说明语句部分;执行语句部分;函数说明函数说明函数体函数体2023/3/12121语法符号约定语法符号约定.可选(即可以指定,也可以缺省)前面的项可以重复|多(含2)中选1 2023/3/12132 2函数说明:函数说明:由函数类型函数类型(可缺省)、函数名函数名和函数函数参数表参数表(可缺省)组成。案例1.2中函数max()的函数说明如下:int max (int x,int y )函数参数表的一般格式为:数据类型数据类型 形参形参,数据类型数据类型 形参形参2 2 函数类型函数名函数参数表2023/3/12143 3函数体函数体:在函数说明的下面、最外层最外层1对大括大括号号(必须配对使用)括起来的部分。案例例1.2中中main()函数的函数体如下:void main()int num1,num2;printf(“Input the first integer number:”);scanf(“%d”,&num1);printf(“max=%dn”,max(num1,num2);变量定义变量定义可执行语句可执行语句2023/3/1215一般由两部分构成:(1)数数据据说说明明部分:由变变量量定定义义、自定义类型定义、自定义函数说明、外部变量说明等组成。(2)可可执执行行语语句句部分:一般由若干条可执行语句构成。注注意意:函数体中的变变量量定定义义语语句句,必须在所有可执行语句之前。2023/3/1216下面程序中“int max;”的位置非法:#include“stdio.h”#include“conio.h”void main()int x,y;/*变量定义语句*/x=3;y=6;/*可执行的赋值语句*/int max;max=x y?x:y;printf(“max=%dn”,max);getch();思考思考:如何解决?返回返回变量定义语句出现在可执行的赋值语句之后2023/3/12171除字符串常量中的字符外,一律使用半角字符半角字符。例如,字母、数字、标点符号等。2所有语句都必须以分号“;”结束,函数的最后一个语句也不例外。3允许1行行内写几几条条短语句,也允许将1条条很长的语句分写在几行几行上。1.31.3*源程序书写规则源程序书写规则2023/3/1218案例例1.2中的主函数main(),也可写成如下格式:void main()int num1,num2;printf(“Input the first integer number:”);scanf(“%d”,&num1);printf(“Input the second integer number:”);scanf(“%d”,&num2);printf(“max=%dn”,max(num1,num2);2023/3/1219 4允许使用注释注释:/*/(1)“/*”和“*/”必必须须成成对对使使用用,且“/”和“*”、以及“*”和“/”之间不能有空格,否则都出错。技技巧巧:必须配对使用的符号(例如注释符号、函数体的花括号、圆括号等等),可连续输入这些起止标识符,通过插入来完成内容的编辑。2023/3/1220(2)注释可以单占1行,也可跟在语句的后面。(3)如果1行写不下,可另起1行继续写。(4)注释中允许使用汉字。在非中文操作系统下,看到的是一串乱码,但不影响程序运行。返回返回2023/3/12211.4 C1.4 C语言的语句语言的语句按照语句功功能能(或构成)的不同,将语言的语句分为五类。1.控制语句控制语句(条,为三种条,为三种)(1)选择选择结构控制语句:if(),switch()(2)循循环环结构控制语句:dowhile(),for(),while(),break,continue(3)其它其它控制语句:goto,return2023/3/1222 2.函函数数调调用用语语句句由一次函数调用加一个分分号号(语句结束标志)构成。例如,printf(This is a C function statement.);3.表达式语句表达式语句由表达式后加一个分号分号构成。最典型的是赋值语句:num=5;/*赋值语句*/4.空语句空语句仅由一个分号分号构成。例如:;2023/3/12235.复复合合语语句句由大括号括起来的若干条语句构成。main()/*右括号后不需要分号!*/复合语句的性质复合语句的性质:(1)在语法上和单单一一语语句句相同,即单一语句可以出现的地方,也可以使用复合语句。(2)允许嵌套,即复合语句中也可出现复合语句。2023/3/1224C语言的控控制制语语句句9条:用于实现选选择择结构、循循环环结构和其它控制其它控制。输入输出输入输出(I/O)操作,均由标准库函数标准库函数来实现。所以学习C语言,不仅要学习这9条控制语句,而且要学习并掌握常用标准库函数的使用。返回返回不是C语言的组成部分2023/3/12251.5*TC+3.0的基本操作的基本操作1.运行一个语言程序的一般过程 2.TC+的启动、退出与命令菜单 3.选择工作目录4.新建一个语言源程序 5.编译、连接、运行、查看结果、新建下一个返回2023/3/12261.运行一个语言程序的一般过程运行一个语言程序的一般过程 TC+是一个集源程序编辑、编译、连接、运行与调试于一体、用菜单驱动的集成开发环境。(1)启动启动TC,进入TC集成开发环境。(2)选择工作目录工作目录 存放用户文件的目录。(3)新建新建(或编辑编辑)源程序。(4)编译编译。成功,转下一步;失败,返回(3)。2023/3/1227(5)连连接接。成功,转下一步;失败,根据系统的错误提示,进行相应修改,再重新连接。(6)运运行行。如果出现逻辑错误,则返回(3),重新修改源程序,再编译、连接和运行。(7)退出退出TC集成环境,结束本次程序运行。返回2023/3/12282.TC+的启动、退出与命令菜单的启动、退出与命令菜单(1)启动Turbo C+:双击桌面图标图标 双击主程序文件名主程序文件名TC.EXE(在TC+3.0下的文件夹BIN中)。首次启动TC+的初始画面如图1-3所示:2023/3/1229(2)命令菜单的使用鼠标/键盘:F10激活,F10Esc关闭。(3)退出Turbo C 菜单法:File|Quit 快捷键法:Alt+X(先按下Alt键并保持,再按字母键,然后同时放开)返回2023/3/12303 3选择工作目录选择工作目录 存放用户文件的目录。选择并执行File|Change Dir.项,系统弹出一个“Change Directory”窗口,如图1-4所示:在“Directory Name”下的文本框中输入工作目录,或者在“Directory Tree”下的目录树中选择工作目录(C:TC30CASE),然后单击“OK”按钮。返回2023/3/12314.新建一个语言源程序新建一个语言源程序(File|New)选择并执行File|New项,系统给出一个空白编辑窗口,如图1-5所示:2023/3/1232常用编辑操作:常用编辑操作:F2键(或File|Save)将当前编辑的文件存盘,然后继续编辑。这是一个良好的习惯!F1键激活活活动动窗窗口口(或状态)的在在线线帮帮助助,Esc返回原窗口(或状态)。F1查询库库函函数数的在在线线帮帮助助信息:将光标移到需要查询函数名的首字符上,然后键入F1即可。返回 Ctrl2023/3/12335.编译、连接、运行单个源程序文件:F9/Run|Run6.查看结果:Alt+F5/Windows|User Screen 7.新建下一个源程序:File|New。返回2023/3/1234本本 章章 要要 点点1 1、C C语言有多种版本,本课程以语言有多种版本,本课程以ANSI CANSI CANSI CANSI C新标准新标准新标准新标准为蓝本介绍为蓝本介绍 。2 2、C C语言的特点:语言的特点:兼有汇编汇编汇编汇编和高级语言高级语言高级语言高级语言的优点。3 3、C C语言程序的语言程序的一般结构由一个main()main()main()main()函数函数函数函数和若干个其它函数其它函数其它函数其它函数结合而成。2023/3/12354 4、C C语言函数的结构语言函数的结构函数类型 函数名(函数参数表)函数说明函数说明函数说明函数说明 说明语句部分;执行语句部分;函数体函数体函数体函数体 2023/3/12365 5、源程序书写规则(1)除字符串常量中的字符外,一律使用半角字半角字符符。(2)所有语句必须以分号分号分号分号“;”结束;(3)注释:/*/*/*/*/*/*/*/。2023/3/12376、TC的基本操作基本操作基本操作基本操作(1)启动、退出与命令菜单(2)新建(或编辑)(3)编译、连接、运行(4)查看结果返回返回2023/3/1238 第第2 2章章 数据类型、运算与表达式数据类型、运算与表达式教学目的:教学目的:掌握掌握变量变量命名规则与定义、整型整型数据值域、字字符符(串串)常量常量的表达与存储,赋值运算赋值运算以及运算符的结合性结合性;了解了解常量及其表达、实型数据分类,自增、自减运算等。2023/3/1239教学内容教学内容:2.1 程序设计概述程序设计概述2.2 数据类型数据类型2.3*常量和变量常量和变量2.4*整型数据整型数据2.5 实型数据实型数据2.6*字符型数据字符型数据2.7 算术运算与算术表达式算术运算与算术表达式2.8*赋值运算与赋值表达式赋值运算与赋值表达式2.9 自增、自减与逗号运算简介自增、自减与逗号运算简介本章要点本章要点本章作业与上机实践本章作业与上机实践2023/3/12402.1 2.1 程序设计概述程序设计概述一个程序应包括对数据的描述和对数据处理的描述。1对数据的描述数据结构数据结构C C语言提供的数据结构,以语言提供的数据结构,以数据类型数据类型的形式出现的形式出现。2023/3/12412对数据处理的描述算法算法著名计算机科学家沃思沃思提出一个经典公式:数据结构数据结构+算法算法=程序程序在软件工程中,除了数据结构和算法外,还必须编制相关文档文档。返回返回2023/3/12422.2 2.2 数据类型数据类型C C语语言言提提供供的的数数据据结结构构,以以数数据据类类型型形形式式出出现现。常用的有以下3类6种:1.基本类型:整型、实型(浮点型)、字符型等。2.构造类型:数组、结构类型等。3.指针类型。C语言中的数据,有常常量量和变变量量之分,它们分别属于某种数据类型。返回返回2023/3/12432.32.3*常量和变量常量和变量2.3.1 常量常量1.概念在程序运行过程中,其值不其值不能被改变变的量。2.分类(通过书写形式书写形式来判别)(1)整型常量:1,7,12(2)实型常量:3.14,9.80(3)字符(串)常量:a,1/”ABC”,”中国北京”(4)符号常量:PI(3.14)。2023/3/12442.3.2*变量变量1.概念在程序运行过程中,其其值值可可以被改变变的量。2.两个要素(1)变变量量名名:每个变量都必须有一个名字,变量命名遵循标识符标识符命名规则。(2)变变量量值值:在程序运行过程中,变量值存储在内存内存中。在程序中,通过变量名变量名来引用。2023/3/1245.标识符命名规则标识符命名规则(1)有有效效字字符符:只能由大写字母、小写字母、数字和下划线组成,且以字母或下划线开头。注注意意:在C语言中,同一字母的大小写,被认为是两个不同的字符。关键字中,除个别外,绝大多数也是如此。思思考考:在C语言中,变量名total与TOTAL、ToTaL、tOtAl等是同一个变量吗?2023/3/1246(2)有有效效长长度度:随系统而异;但,超超长长部部分分被被舍弃舍弃。思思考考:假设某系统标识符的有效长度为8,则student_name和student_number是一回事吗?(3)C语言的关键字关键字不能用作标识符名。2023/3/12474.标识符命名的软件工程软件工程要求见名知义见名知义所谓“见名知义”是指,通过标识符名名就知道标识符所代表的含义义。方法:英文单词英文单词(或缩写),或汉语拼音字头汉语拼音字头。例如,name/xm(姓名)、sex/xb(性别)、age/nl(年龄)、salary/gz(工资)。比较比较:a、b、c、d与上述4个变量名的可读性?2023/3/12485.变量的定义与初始化变量的定义与初始化在语言中,变量必须先定义、后使用先定义、后使用。变量初始化初始化定义定义变量的同时赋初值时赋初值的操作。存存储储类类型型 数数据据类类型型 变变量量名名=初初值值,变变量量名名2 2=初值初值22;例如,float radius,length,area;例如,float radius=2.5=2.5;返回返回2023/3/12492.42.4*整型数据整型数据2.4.1*整型变量整型变量1分类根据占用内存字节数内存字节数的不同,分为4种。常用的有:(1)基本基本整型(int)(简称为整型)(2)长长整型(long int)一般:long型(字节)int型(字节)。2023/3/12502 2值域值域可使用sizeof(sizeof(类型类型|变量变量 )运算符,求得某种整型(变量)占用的内存字节数n。其值域值域如下:有有符号整型变量的值域为:-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。2023/3/1251思考思考:假设被处理数据的取值范围为-1000至+100,000的整数,那么对应的变量应定义为什么类型?2023/3/12522.4.2 整型常量整型常量1表示形式三种(十、八、十六进制),最常用的是十进制:10,36。2023/3/12532分类(1)基基本本整型:在16位机中,用2字节存储,其值域与int变量一样。(2)长长整型(在数值后面加“L L|l l”)对超出int型值域的整型常量,应使用长整型常量表示。例如,long n=100000L;2023/3/12543赋值规则一个整型常常量量,可以赋给值值域域它的整型变量变量,即:基本整型常量 int、long型变量;长整型常量 long 型变量。返回返回2023/3/12552.5 2.5 实型数据实型数据2.5.1 实型变量分类实型变量分类1单精度型(float):一般占字节(32位)。2双精度型(double):一般占8个字节。2023/3/12562.5.2 实型常量实型常量实型常量即实数(浮点数),有两种表达形式:(1)十进制小数十进制小数形式:3.14,9.8。(2)指数指数形式:尾数尾数 E(e)E(e)整型指数。整型指数。例如,3.0+5。实型常量不分float型和double型,可以赋给一个实型变量(float或double型)。返回返回2023/3/12572.62.6*字符数据字符数据2.6.1 字符常量字符常量1.定义用一对单引号单引号括起来的单个字符单个字符。例如,A、等。2.转义字符以反斜杠反斜杠“”开头的字符常量。常用转义字符参见表2-1,最常用的是n。注意注意:如果反斜杠反斜杠或单引号单引号本身作为字符常量,必须使用转义字符:、。2023/3/12582.6.2 字符变量字符变量(char)一般占用1字节内存单元,用于存储字符常量。1变量值的存储将一个字符常量字符常量存储到一个字符变量字符变量中,实际上是将该字符的ASCII码码值(无符号整数)存储到内存单元中。例如:char ch1=a;/*给字符变量赋值*/2023/3/12592特性字符数据字符数据与整型数据整型数据之间通用因为字符数据在内存中存储,与整数一样:A:0100000165:00000000,01000001具体:(1)输出:字符+整数(ASCII码值)(2)允许参与算术运算(ASCII码值)2023/3/12602.6.3 (字符字符)串常量串常量1用一对双引号双引号括起来的若干若干字符称为(字符字符)串串常量常量。2字符串中的字符个数字符个数称为字符串长度(简称串长串长)。例如,“Good morning.”、“A”、“”(一对紧连的双引号),串长分别为13(空格也是一个字符)、1和0(长度为0的字符串称为空串空串)。2023/3/1261注意注意:如果反斜杠反斜杠和双引号双引号作为字符串中的有效字符,则必须使用转义字符转义字符。例如:C:msdos v6.22 C:msdosv6.22I say:Goodbye!I say:Goodbye!2023/3/12623串常量的存储由系统在字符串的末尾末尾自动添加一个00作为字符串的结束标志。例如,字符串“CHINA”,在内存中的实际存储如下:CHINA0返回返回2023/3/12632.7 2.7 算术运算与算术表达式算术运算与算术表达式1.1.算术运算符算术运算符+、-(减法/取负)、*、/、%(求余数)C语言规定:两个整数相除,其商为整数整数相除,其商为整数,小数部分被舍弃。例如,5/2=2,-5/2=-2-5/2=-2。2023/3/12642.表达式和算术表达式表达式和算术表达式(1)表达式用运运算算符符和括括号号,将运运算算对对象象(常量、变量和函数等)连接起来的、符合语言语法规则的式子。例如,(x+y)/2 1。(2)算术表达式表达式中的运算符运算符都是算术算术运算符运算符。例如,3+6*9。2023/3/12653求表达式的值求表达式的值(1)优先级优先级:高低。例如,先乘除后加减:a b*c。(2)如果某个操作数两侧运算符的优先级相同,则按结合性结合性进行:左左结结合合性性(先左后右的结合方向)运算符:操作数先与左边左边的运算符结合。例如,1-2+3:先执行“1-2”,再“+3”。2023/3/1266 右右结结合合性性(先右后左的结合方向)运算符:操作数先与右边右边的运算符结合。例如,a=b=1:先执行“b=1”,再执行“a=(b=1)”。说说明明:除单单目目、赋赋值值和条条件件运算符是右右结结合合性性外,其它运算符都是左结合性。详见附录B。2023/3/12674.数据类型转换数据类型转换(1)不同类型数据间混合运算时,系统“先转换、先转换、后运算后运算”先将数据自动转换自动转换成同一类型,然后再运算。转换规则如图2-5所示:1)必须的转换。2)不同类型的转换方向。例如,int型与double型混合运算,则int型double型,结果为double型。2023/3/1268(2)语言也允许强制转换强制转换:(目标数据类型)(被转换表达式)(double)(a)/(double)a(float)5/2 =?(float)(5/2)=?注注意意:原表达式类型并不发生变化。例如,(double)a。返回返回单个对象时,括号可缺省2023/3/12692.82.8*赋值运算与赋值表达式赋值运算与赋值表达式1.赋值运算赋值运算 变量=表达式 例如,x=5,y=(float)5/2 注意注意:如果“表达式”类型与变量不一致,则系统将“表达式”的值转换成变量的数据类型,再赋值。思考思考:假设有“float num=2.5;”,则执行“num=(int)num”后,num的值等于多少?赋值运算符2023/3/12702.复合赋值运算复合赋值运算 变量变量 双目运算符双目运算符 =表达式表达式 变量变量 =变量变量 双目运算符双目运算符 (表达式表达式 )例如:x+=3 x=x+3y*=x+6y=y*(x+6)/*不是y=y*x+6*/单个对象时,圆括号才可缺省,否则可能出错。2023/3/12713.赋赋值值表表达达式式由(复合)赋赋值值运运算算符符,将一个变量和一个表达式连接起来的表达式。(1)一般格式:变量 (复合复合)赋值运算符赋值运算符 表达式(2)赋值表达式的值被被赋赋值值变变量量的的值值,就就是是赋值表达式的值赋值表达式的值。例如,赋值表达式“a=5”,变量a的值“”就是赋值表达式的值。返回返回2023/3/12722.9 2.9 自增、自减与逗号运算自增、自减与逗号运算2.9.1 自增自增(+)、自减、自减(-)运算运算1.作用:使单个单个变量的值增增(+)、减减(-)。2.用法及其运算规则2023/3/1273(1)前置前置运算+变量、-变量运算规则:运算规则:先增减、后运算先增减、后运算,即先使变量的值增(减),然后再以变化后的值参与其它运算。例如:num1=+num2;num2=num2+1;/*先增减先增减*/num1=num2;/*后运算后运算*/2023/3/1274(2)后置后置运算变量+、变量-运算规则运算规则:先运算、后增减先运算、后增减,即变量先参与其它运算,然后再使变量的值增(减)。例如:num1=num2-;num1=num2;/*先运算先运算*/num2=num2 1;/*后增减后增减*/注注:自增/减单独运算时,前置与后置等价。num+;+num;num-;-num;2023/3/1275案例案例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();程序运行结果:2023/3/1276x=6y=+x:x=7,y=7y=x-:x=6,y=7思思考考:如果将“y=+x;”改为“y y=x+;x+;”,“y=x-;”改为“y y=-x;-x;”,程序运行结果会如何?注注意意:自增、自减运算符,只能用于单个变量,不能用于常量常量和表达式表达式。例如,5+、-(a+b)等都是非法的。2023/3/12772.9.2 逗号运算逗号运算(,)及其表达式及其表达式1.一般形式:表达式1,表达式2,表达式n2.求解过程:自左至右,依次计算各表达式的值,最后1个“表达式表达式n n”的值的值即为整个逗号表达式的值逗号表达式的值。例如:(1)a=3*5,a*4 :?(2)(a=3*5,a*4),a+5:?2023/3/1278(1)a=3*5,a*4:先求解a=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。返回返回2023/3/1279本本 章章 要要 点点标识符命名规则标识符命名规则:有效字符、有效长度+关键字英文字母大小写敏感,见名知义整型变量整型变量:不同类型整型变量,占用的内存字节数不同,其值域值域不同。2023/3/1280字符型数据字符型数据:字符常量常量:单引号,单个字符;转义字符:反斜杠“”,反斜杠和单引号本身:,。字符变量变量:1B,ASCII码值。字符串常量串常量:双引号,若干字符;存储时,系统自动在串尾添加一个0。2023/3/1281运算运算整数相除整数相除:商为整数。赋值表达式的值赋值表达式的值:被赋值变量的值。前置运算规则前置运算规则:先增减、后运算后置运算规则后置运算规则:先运算、后增减返回返回2023/3/1282本章作业与上机实践本章作业与上机实践作业:1,3,4,6上机实践:(1)掌握TC+下开发C语言程序的基本操作。(2)自己设计方案,验证作业6。(3)自己设计方案,找出用字符形式输出一个256的数值,会得到什么结果?返回返回2023/3/1283第第3 3章章 顺序结构程序设计顺序结构程序设计数据处理的一般过程是:输入输入 处理 输出输出。在C语言中,输入输出操作是由编译系统提供的库函数库函数来实现。教学目的教学目的:掌握掌握printf()、scanf()函数,以及顺序结构程序设计。2023/3/1284教学内容教学内容:3.1*格式化输出格式化输出printf()函数函数3.2*格式化输入格式化输入scanf()函数函数3.3 顺序结构程序设计顺序结构程序设计本章要点本章要点本章作业与上机实践本章作业与上机实践2023/3/12853.13.1*格式化输出格式化输出printf()printf()函数函数3.1.1 printf()函数的一般格式函数的一般格式 案例案例3.13.1 已知圆半径radius=1.5,求圆周长(2r)和圆面积(r2)。2023/3/1286#include“stdio.h”#include“conio.h”void main()float radius=1.5,length,area,pi=3.14;length=2*pi*radius;area=pi*radius*radius;printf(“radius=%fnradius=%fn”,radius);printf(“length=%7.2f,area=%7.2fnlength=%7.2f,area=%7.2fn”,length,area);getch();radius=1.500000length=9.42,area=7.072023/3/1287printf()printf()函数的一般格式:printf(printf(格式字符串格式字符串 ,输出项表,输出项表);1 1格式字符串(1)格式指示符格式指示符:%标志标志宽度宽度.精度精度F|N|h|LF|N|h|L类型类型例如,%7.2f%7.2f。各类常用指示符,参见表3-1至表3-5。2023/3/1288在表3-1中,最常用的标志字符是“-”:左对齐,右端补空格。缺省时为右对齐,左端补空格。在表3-2中,最常用宽度字符“n”:指定输出域的宽度。若超长,则按实际宽度输出;若不足,则补空格。在表3-3中,最常用精度字符“.n”:指定保留的小数位数(实数,超长则4舍5入),或截取左起的前n个字符(字符串)。在表3-4中,最常用的长度长度字符“l”:长整型。2023/3/1289在表3-5 中,最常用的数据类型类型转换字符如下表所示:数据类型数据类型类型转换字符类型转换字符功功 能能整 数d 带符号十进制整数十进制整数实 数f十进制小数十进制小数形式(默认6位小数)字 符c输出1个字符字符s输出1个字符串字符串2023/3/1290(2)转义字符。转义字符。特点:通常是产生一个控制操作。例如,转义字符n,输出时产生一个“换行”操作。(3)普通字符普通字符除格式指示符和转义字符之外的其它字符。特点:原样输出原样输出。例如,“radius=”、“length=”、“area=”、“,”。2023/3/12912输出项表如果不止1个,则相邻2个之间用逗号逗号分开。下面的用法都是合法的:(1)printf(I am a student.n);(2)printf(%d,3+2);(3)printf(a=%f b=%5dn,a,a+3);2023/3/12923.1.2 常用的类型转换字符常用的类型转换字符输出不同类型数据,要使用不同类型转换字符。2023/3/12931类型转换字符类型转换字符d以带符号的以带符号的十进制整数十进制整数形式输出。形式输出。案例案例3.2 类型转换字符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();2023/3/1294程序运行结果如下:num1=123,num1=123,num1=123,num1=123num2=123456,num2=123456,num2=123456num1=16908411(1)格式指示符,必须与输出项的数据类型一致,否则会引起输出错误。(2)对于整整数数,还可用%o%o(八进制无符号形式)、%x%x(十六进制无符号形式)、%u%u(十进制无符号形式)输出。类型匹配错误,输出结果是随机的。2023/3/12952类型转换字符类型转换字符f以以小数小数形式输出实数。形式输出实数。案例案例3.3 类型转换字符f的使用。#include“stdio.h”#include“conio.h”void main()float f=123.456;double d1,d2;d1=1111111111111.111111111;d2=2222222222222.222222222;printf(%f,%12f,%12.2f,%-12.2f,%.2fn,f,f,f,f,f);printf(d1+d2=%fn,d1+d2);getch();2023/3/1296程序运行结果如下:123.456001,123.456001,123.46,123.46,123.46d1+d2=3333333333333.333010提示提示:对于实数也可使用%e%e,以标准指数形式标准指数形式输出;或使用%g%g,让系系统统根据数值的大小,自自动动选选择择%f或%e格式、且不输出无意义的零。2023/3/12973 3类型转换字符类型转换字符c c输出输出1 1个个字符字符(占占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,A2023/3/12984类型转换字符类型转换字符s输出一个输出一个字符串字符串。案例案例3.5 类型转换字符s的使用。#include“stdio.h”#include“conio.h”void main()printf(%s,%5s,%-10s,Internet,Internet,Internet);printf(%10.5s,%-10.5s,%4.5sn,Internet,Internet,Internet);getch();程序运行结果如下:Internet,Internet,Internet,Inter,Inter,Inter 注意注意:系统输出字符(串),不输出单引号和双引号。2023/3/12993.1.3 使用说明使用说明1格格式式指指示示符符,必须按从左到右的顺序,与输出项表中的每个数据数据一一对应,否则出错。例如,printf(str=%s,f=%d,i=%fn,Internet,1.0/2,3+5,CHINA);是错误的。2类型转换字符的紧紧前前字字符符不是“%”时,将作普通字符处理(原样输出)。例如,“printf(”c=%c,f=%fn“,c,f);”中的第一个c和f,都是普通字符。2023/3/121003类型转换字符x、e、g,大小写均可。大写时,输出数据中包含的字母也大写。其它类型转换字符,必须小写。例如,%f不能写成%F。返回返回2023/3/121013.23.2*格式化输入格式化输入scanf()scanf()函数函数3.2.1 一般格式一般格式 案例案例3.63.6 已知圆柱体的底半径radius=1.5,高high=2.0,求其体积(r2 h)。2023/3/12102#include“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”,