第3章--最简单的C程序设计—顺序程序设计课件.ppt

上传人:飞****2 文档编号:92177478 上传时间:2023-05-31 格式:PPT 页数:87 大小:1.18MB
返回 下载 相关 举报
第3章--最简单的C程序设计—顺序程序设计课件.ppt_第1页
第1页 / 共87页
第3章--最简单的C程序设计—顺序程序设计课件.ppt_第2页
第2页 / 共87页
点击查看更多>>
资源描述

《第3章--最简单的C程序设计—顺序程序设计课件.ppt》由会员分享,可在线阅读,更多相关《第3章--最简单的C程序设计—顺序程序设计课件.ppt(87页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、第第3章章 最简单的最简单的c程序设计程序设计顺序程序设计顺序程序设计3.1 C语句概述语句概述3.2 程序的三种基本结构程序的三种基本结构3.3 赋值语句赋值语句3.4 数据输入输出的概念及在语言中的实现数据输入输出的概念及在语言中的实现3.5 字符数据的输入输出字符数据的输入输出3.6 格式输入与输出格式输入与输出3.7 顺序结构程序设计举例顺序结构程序设计举例习题习题 在在上上一一章章介介绍绍了了程程序序中中用用到到的的一一些些基基本本要要素素(常常量量、变变量量、运运算算符符、表表达达式式等等),它它们们是是构构成成程程序序的的基基本本成成分分。在在第第1章章中中已已经经介介绍绍了了几

2、几个个简简单单的的c程程序序。本本章章将介绍为编写简单程序所必需的一些内容。将介绍为编写简单程序所必需的一些内容。3.1 C语句概述语句概述 和和其其他他高高级级语语言言一一样样,c语语言言的的语语句句用用来来向向计计算算机机系系统统发发出出操操作作指指令令。一一个个语语句句经经编编译译后后产产生生若若干干条条机机器器指指令令。一一个个实实际际的的程程序序应应当当包包含含若若干干语语句句。应应当当指指出出,c语语句句都都是是用用来来完完成成一一定定操操作作任任务务的的。声声明明部部分分的的内内容容不不应应称称为为语语句句。如如:int a;不不是是一一个个c语语句句,它它不不产产生生机机器器操

3、操作作,而而只只是是对对变变量量的的定定义义。从从第第1章章已已知知,一一个个函函数数包包含含声声明明部部分分和和执执行行部部分分,执执行行部部分分即即由由语语句句组组成成。c程程序序结结构构可可以以用用图图3.1表表示示。即即一一个个c程程序序可可以以由由若若干干个个源源程程序序文文件件(分分别别进进行行编编译译的的文文件件模模块块)组组成成,一一个个源源文文件件可可以以由由若若干干个个函函数数和和预预处处理理命命令令以以及及全全局局变变量量声声明明部部分分组组成成(关关于于“全全局局变变量量”见见第第7章章,“预预编编译译命命令令”见见第第8章章),一一个个函函数数由由数数据据定定义义部部

4、分和执行语句组成。分和执行语句组成。图图3.1 在在第第2章章中中已已经经说说明明,程程序序应应该该包包括括数数据据描描述述(由由声声明明部部分分来来实实现现)和和数数据据操操作作(由由语语句句来来实实现现)。数数据据描描述述主主要要定定义义数数据据结结构构(用用数数据据类类型型表表示示)和和数数据据初初值值。数数据据操操作作的的任务是对已提供的数据进行加工。任务是对已提供的数据进行加工。C语句可以分为以下语句可以分为以下5类:类:(1)控控制制语语句句,完完成成一一定定的的控控制制功功能能。c只只有有9种种控控制制语语句句,它们是:它们是:if()else (条件语句条件语句)for()(循

5、环语句循环语句)hile()(循环语句循环语句)dohile()(循环语句循环语句)continue (结束本次循环语句结束本次循环语句)break (中止执行中止执行switch或循环语句或循环语句)sitch (多分支选择语句多分支选择语句)goto (转向语句转向语句)return (从函数返回语句从函数返回语句)上上面面9种种语语句句中中的的括括号号()表表示示中中是是一一个个条条件件,表表示示内内嵌嵌的语句。例如:的语句。例如:“if()else”的具体语句可以写成:的具体语句可以写成:if(xy)z=x;else z=y;(2)函函数数调调用用语语句句。由由一一次次函函数数调调用用

6、加加一一个个分分号号构构成成一一个个语语句,例如:句,例如:printf(this is a c stateent);(3)表表达达式式语语句句。由由一一个个表表达达式式构构成成一一个个语语句句,最最典典型型的的是,由赋值表达式构成一个赋值语句。是,由赋值表达式构成一个赋值语句。a=3 是一个赋值表达式,而是一个赋值表达式,而a=3;是是一一个个赋赋值值语语句句。可可以以看看到到一一个个表表达达式式的的最最后后加加一一个个分分号号就就成成了了一一个个语语句句。一一个个语语句句必必须须在在最最后后出出现现分分号号,分分号号是是语语句句中中不不可可缺缺少少的的一一部部分分(而而不不像像pascal

7、语语言言那那样样,分号只是语句间的分隔符号分号只是语句间的分隔符号)。例如:。例如:i=i+1(是表达式,不是语句是表达式,不是语句)i=i+1;(是语句是语句)任任何何表表达达式式都都可可以以加加上上分分号号而而成成为为语语句句,例例如如i+;是是一一语语句句,作作用用是是使使i值值加加1。又又如如x+y;也也是是一一个个语语句句,作作用用是是完完成成x+y的的操操作作,它它是是合合法法的的,但但是是并并不不把把x+y的的和和赋赋给另一变量,所以它并无实际意义。给另一变量,所以它并无实际意义。表表达达式式能能构构成成语语句句是是c语语言言的的一一个个重重要要特特色色。其其实实“函函数数调调用

8、用语语句句”也也是是属属于于表表达达式式语语句句,因因为为函函数数调调用用(如如sin(x)也也属属于于表表达达式式的的一一种种。只只是是为为了了便便于于理理解解和和使使用用,我我们们把把“函函数数调调用用语语句句”和和“表表达达式式语语句句”分分开开来来说说明明。由由于于c程程序序中中大大多多数数语语句句是是表表达达式式语语句句(包包括括函函数数调调用用语语句句),所以有人把,所以有人把c语言称作语言称作“表达式语言表达式语言”。(4)空语句。空语句。下面是一个空语句:下面是一个空语句:;即即只只有有一一个个分分号号的的语语句句,它它什什么么也也不不做做。有有时时用用来来做做被被转转向向点点

9、,或或循循环环语语句句中中的的循循环环体体(循循环环体体是是空空语语句句,表表示示循循环体什么也不做环体什么也不做)。(5)可可以以用用把把一一些些语语句句括括起起来来成成为为复复合合语语句句,又又称称分分程程序。序。如下面是一个复合语句。如下面是一个复合语句。z=x+y;t=z/100;printf(%f,t);注注意意:复复合合语语句句中中最最后后一一个个语语句句中中最最后后的的分分号号不不能能忽忽略略不写不写(这是和这是和pascal不同的不同的)。C语语言言允允许许一一行行写写几几个个语语句句,也也允允许许一一个个语语句句拆拆开开写写在在几几行上,书写格式无固定要求行上,书写格式无固定

10、要求(fortran、cobol有严格要求有严格要求)。3.2 程序的三种基本结构程序的三种基本结构 为为了了提提高高程程序序设设计计的的质质量量和和效效率率,现现在在普普遍遍采采用用结结构构化化程程序序设设计计方方法法。结结构构化化程程序序由由若若干干个个基基本本结结构构组组成成。每每个个基本结构可以包含基本结构可以包含 一个或若干个语句。有三种基本结构一个或若干个语句。有三种基本结构:(1)顺顺序序结结构构,见见图图3.2。先先执执行行a操操作作,再再执执行行b操操作作,两两者者是是顺序执行的关系。图中顺序执行的关系。图中(b)是是NS结构化流程图结构化流程图(下同下同)。图图3.2图3.

11、3BABA(a)(b)(2)选选择择结结构构,见见图图3.3。p代代表表一一个个条条件件,当当p条条件件成成立立(或或称称为为“真真”)时时执执行行a,否否则则执执行行b。注注意意,只只能能执执行行a或或b之之一一。两条路径汇合在一起然后出口。两条路径汇合在一起然后出口。(3)循环结构循环结构,有两种循环结构有两种循环结构:当当型型循循环环结结构构,见见图图3.4。当当p条条件件成成立立(“真真”)时时,反反复复执行执行a操作。直到操作。直到p为为“假假”时才停止循环。时才停止循环。直直到到型型循循环环结结构构,见见图图3.5。先先执执行行a操操作作,再再判判断断p是是否否为为“假假”,若若p

12、为为“假假”,再再执执行行a,如如此此反反复复,直直到到p为为“真真”为止。为止。图图3.4图3.5 由由选选择择结结构构可可以以派派生生出出另另一一种种基基本本结结构构:多多分分支支选选择择结结构构,见图见图3.6。根据根据k的值的值(k1,k2,kn)不同而决定执行不同而决定执行a1,a2,an之一。之一。已已经经证证明明,由由以以上上基基本本结结构构组组成成的的程程序序能能处处理理任任何何复复杂杂的的问问题题。上上面面图图3.2图图3.7中中方方框框中中的的a,b,a1,an等等可可以以是是一一个个简简单单的的语语句句,也也可可以以又又是是一一个个基基本本结结构构。例例如如,图图3.7是

13、是一一个个顺顺序序结结构构,它它由由两两个个操操作作顺顺序序组组成成。虚虚线线框框内内是是一一个个当当型型循循环环结结构构,可可以以用用“b”表表示示,因因此此图图3.7就就可可以以理理解解为图为图3.2(a)所示的顺序结构。所示的顺序结构。图图3.6 图图3.7 关关于于三三种种基基本本结结构构的的特特征征以以及及结结构构化化程程序序设设计计方方法法,读读者者可可能能已已在在学学习习其其他他高高级级语语言言程程序序设设计计时时学学习习过过,在在此此不不再再重重复复。只只是是应应当当强强调调说说明明,在在今今后后的的程程序序设设计计中中应应当当采采用用结结构构化化程程序序设设计计方方法法。在在

14、本本章章中中,我我们们将将介介绍绍几几种种最最基基本本的的语语句句,以以及及用用它它们们构构成成顺顺序序结结构构的的程程序序。在在第第4、第第5章章介绍选择结构和循环结构的程序设计。介绍选择结构和循环结构的程序设计。3.3 赋值语句赋值语句 前前已已介介绍绍,赋赋值值语语句句是是由由赋赋值值表表达达式式加加上上一一个个分分号号构构成成。由于赋值语句应用十分普遍,所以专门再讨论一下。由于赋值语句应用十分普遍,所以专门再讨论一下。C语语言言的的赋赋值值语语句句具具有有其其他他高高级级语语言言的的赋赋值值语语句句的的一一切切特特点和功能。但也应当注意到它们的不同:点和功能。但也应当注意到它们的不同:

15、(1)C语语言言中中的的赋赋值值号号“=”是是一一个个运运算算符符,在在其其他他大大多多数数语言中赋值号不是运算符。语言中赋值号不是运算符。(2)关关于于赋赋值值表表达达式式与与赋赋值值语语句句的的概概念念,其其他他多多数数高高级级语语言言没没有有“赋赋值值表表达达式式”一一概概念念。作作为为赋赋值值表表达达式式可可以以包包括括在其他表达式之中,例如:在其他表达式之中,例如:if(a=b)0)t=a;按按语语法法规规定定if后后面面的的()内内是是一一个个条条件件,例例如如可可以以是是:“if(x0)”。现现在在在在x的的位位置置上上换换上上一一个个赋赋值值表表达达式式“a=b”,其其作作用用

16、是是:先先进进行行赋赋值值运运算算(将将b的的值值赋赋给给a),然然后后判判断断a是是否否大大于于0,如如大大于于0,执执行行t=a。在在if语语句句中中的的“a=b”不不是是赋赋值值语语句句而而是是赋赋值值表表达达式式,这这样样写写是是合合法法的的。如如果果写写成成if(a=b;)0)t=a;就就错错了了。在在if的的条条件件中中不不能能包包含含赋赋值值语语句句。由由此此可可以以看看到到,c把把赋赋值值语语句句和和赋赋值值表表达达式式区区别别开开来来,增增加加了了表表达达式式的的种种类类,使使表表达达式式的的应应用用几几乎乎“无孔不入无孔不入”,能实现其他语言中难以实现的功能,能实现其他语言

17、中难以实现的功能.3.4 数据输入输出的概念及在数据输入输出的概念及在C语言中的实现语言中的实现(1)所所谓谓输输入入输输出出是是以以计计算算机机主主机机为为主主体体而而言言的的。从从计计算算机机向向外外部部输输出出设设备备(如如显显示示屏屏、打打印印机机、磁磁盘盘等等)输输出出数数据据称称为为“输输出出”,从从外外部部向向输输入入设设备备(如如键键盘盘、磁磁盘盘、光光盘盘、扫扫描描仪仪等等)输入数据称为输入数据称为“输入输入”。(2)C语语言言本本身身不不提提供供输输入入输输出出语语句句,输输入入和和输输出出操操作作是是由由函函数数来来实实现现的的。在在c标标准准函函数数库库中中提提供供了了

18、一一些些输输入入输输出出函函数数,例例如如,printf函函数数和和scanf函函数数。读读者者在在使使用用它它们们时时,千千万万不不要要误误认认为为它它们们是是C语语言言提提供供的的“输输入入输输出出语语句句”。printf和和scanf不是不是C语言的关键字,而只是函数的名字。语言的关键字,而只是函数的名字。实实际际上上完完全全可可以以不不用用printf和和scanf这这两两个个名名字字,而而另另外外编编两两个个输输入入输输出出函函数数,用用其其他他的的函函数数名名。C提提供供的的函函数数以以库库的的形形式式存存放在系统中,它们不是放在系统中,它们不是c语言文本中的组成部分。语言文本中的

19、组成部分。不不把把输输入入输输出出作作为为C语语言言提提供供的的语语句句的的目目的的是是使使C语语言言编编译译系系统统简简单单,因因为为将将语语句句翻翻译译成成二二进进制制的的指指令令是是在在编编译译阶阶段段完完成成的的,没没有有输输入入输输出出语语句句就就可可以以避避免免在在编编译译阶阶段段处处理理与与硬硬件件有有关关的的问问题题,可可以以使使编编译译系系统统简简化化,而而且且通通用用性性强强,可可移移植植性性好好,对对各各种种型型号号的的计计算算机机都都适适用用,便便于于在在各各种种计计算算机机上上实实现现。各各种种版版本本的的C语语言言函函数数库库是是各各计计算算机机厂厂商商(或或软软件

20、件开开发发公公司司)针针对对某某一一类类型型计计算算机机的的情情况况编编写写的的,并并且且已已编编译译成成目目标标文文件件(.obj文文件件)。它它们们在在连连接接阶阶段段与与由由源源程程序序 经经编编译译而而得得到到的的目目标标文文件件相相连接,生成一个可执行的目标程序。连接,生成一个可执行的目标程序。如如果果在在源源程程序序中中有有printf函函数数,在在编编译译时时并并不不把把它它翻翻译译成成目目标标指指令令,而而是是在在执执行行阶阶段段中中调调用用已已被被连连接接的的函函数数库库中中的的printf函函数数。由由于于c编编译译系系统统与与c函函数数库库是是分分别别进进行行设设计计的的

21、,因因此此不不同同的的计计算算机机系系统统所所提提供供函函数数的的数数量量、名名字字和和功功能能是是不不完完全全相相同同的的。不不过过,有有些些通通用用的的函函数数(如如printf和和scanf等等),各各种种计计算算机机系系统统都都提提供供,成成为为各各种种计计算算机机系系统统的的标标准准函函数数。c语语言言函函数数库库中中有有一一批批“标标准准输输入入输输出出函函数数”,它它是是以以标标准准的的输输入入输输出出设设备备(一一般般为为终终端端设设备备)为为输输入入输输出出对对象象的的。其其中中有有:putchar(输输出出字字符符),getchar(输输入入字字符符),printf(格格式

22、式输输出出),scanf(格格式式输输入入),puts(输输出出字字符符串串),gets(输输入入字字符符串串)。在在本本章章中中介介绍绍前前面面4个最基本的输入输出函数。个最基本的输入输出函数。(3)在在使使用用c语语言言库库函函数数时时,要要用用预预编编译译命命令令“include”将将有有关关的的“头头文文件件”包包括括到到用用户户源源文文件件中中。在在头头文文件件中中包包含含了了与与用用到到的的函函数数有有关关的的信信息息。例例如如使使用用标标准准输输入入输输出出库库函函数数时时,要要用用到到“stdio.h”文文 件件。文文 件件 后后 缀缀“h”是是 head的的 缩缩 写写,#i

23、nclude命命令令都都是是放放在在程程序序的的开开头头,因因此此这这类类文文件件被被称称为为“头头文文件件”。在在调调用用标标准准输输入入输输出出库库函函数数时时,文文件件开开头头应应有有以以下下预编译命令:预编译命令:#include 或或#include studio.h studioh是是standard input&output的的缩缩写写,它它包包含含了了与与标标准准i/o库有关的变量定义和宏定义库有关的变量定义和宏定义(有关预编译有关预编译命命令令见见第第7章章)。考考虑虑到到printf和和scanf函函数数使使用用频频繁繁,系系统统允允许许在使用这两个函数时可不加在使用这两个

24、函数时可不加#include命令。命令。3.5 字符数据的输入输出字符数据的输入输出 我我们们先先介介绍绍c标标准准i/o函函数数库库中中最最简简单单的的、也也是是最最容容易易理理解解的的字字符符输输入入输输出出函函数数putchar()和和getchar(),再再介介绍绍格格式式输输入入输输出出函函数数printf()和和scanf()函数。函数。3.5.1 putchar函数函数(字符输出函数字符输出函数)putchar函函数数的的作作用用是是向向终终端端输输出出一一个个字字符符:例例如如putchar(c);它输出字符变量它输出字符变量c的值。的值。c可以是字符型变量或整型变量。可以是字

25、符型变量或整型变量。例例3.1 输出单个字符。输出单个字符。#include main()char a,b,c;a=b;b=o;c=y;putchar(a);putchar(b);putchar(c);运行结果:运行结果:boy 也也可可以以输输出出控控制制字字符符,如如putchar(n)输输出出一一个个换换行行符符,使输出的当前位置移到下一行的开头。使输出的当前位置移到下一行的开头。如果将例如果将例3.1程序最后一行改为程序最后一行改为putchar(a);putchar(n);putchar(b);putchar(n);putchar(c);putchar(n);则输出结果为:则输出结果

26、为:b o y 也可以输出其他转义字符,如:也可以输出其他转义字符,如:putchar(101)(输出字符输出字符a)putchar()(输出单引号字符输出单引号字符)putchar(015)(输输出出回回车车,不不换换行行,使使输输出出的的当当前前位位置移到本行开头置移到本行开头)3.5.2 getchar函数函数(字符输入函数字符输入函数)此此函函数数的的作作用用是是从从终终端端(或或系系统统隐隐含含指指定定的的输输入入设设备备)输输入入一一个个字字符符。getchar函函数数没没有有参参数数,其其一一般般形形式式为为getchar()函数的值就是从输入设备得到的字符。例如:函数的值就是从

27、输入设备得到的字符。例如:例例3.2输入单个字符输入单个字符#include main()charc;c=getchar();putchar(c);在在运运行行时时,如如果果从从键键盘盘输输入入字字符符a并并按按回回车车键键,就就会会在在屏屏幕幕上上看看到输出的字符到输出的字符a。请请注注意意,getchar()只只能能接接收收一一个个字字符符。getchar函函数数得得到到的的字字符符可可以以赋赋给给一一个个字字符符变变量量或或整整型型变变量量,也也可可以以不不赋赋给给任任何何变变量量,作作为为表表达达式的一部分。例如,例式的一部分。例如,例3.2第第4、5行可以用下面一行代替:行可以用下面

28、一行代替:putchar(getchar();因因为为getchar()的的值值为为a,因因此此putchar函函数数输输出出a。也也可可以以用用printf函数输出:函数输出:printf(”%c,getchar();请请不不要要忘忘记记,如如果果在在一一个个函函数数中中(今今为为main函函数数)要要调调用用getchar函函数数,应应该该在在该该函函数数的的前前面面(或或本本文文件件开开头头)加上加上“包含命令包含命令”#include3.6.1 printf函数函数(格式输出函数格式输出函数)在在前前面面各各章章节节中中已已用用到到printf函函数数,它它的的作作用用是是向向终终端端

29、(或或系系统统隐隐含含指指定定的的输输出出设设备备)输输出出若若干干个个任任意意类类型型的的数数据据(putchar只只能能输输出出字字符符,而而且且只只能能是是一一个个字字符符,而而printf可以输出多个数据,且为任意类型可以输出多个数据,且为任意类型)。1.printf函数的一般格式为函数的一般格式为printf(格式控制,输出表列格式控制,输出表列)如:如:printf(%d,%cn,i,c)括弧内包括两部分:括弧内包括两部分:3.6 格式输入与输出(1)“格格式式控控制制”是是用用双双引引号号括括起起来来的的字字符符串串,也也称称“转转换换控制字符串控制字符串”,它包括两种信息:,它

30、包括两种信息:格格式式说说明明,由由“%”和和格格式式字字符符组组成成,如如%d,%f等等。它它的的作作用用是是将将输输出出的的数数据据转转换换为为指指定定的的格格式式输输出出。格格式式说说明明总是由总是由“%”字符开始的。字符开始的。普普通通字字符符,即即需需要要原原样样输输出出的的字字符符。例例如如上上面面printf函函数数中双引号内的逗号、空格和换行符。中双引号内的逗号、空格和换行符。(2)“输出表列输出表列”是需要输出的一些数据,可以是表达式。是需要输出的一些数据,可以是表达式。2.格式字符格式字符 对对不不同同类类型型的的数数据据用用不不同同的的格格式式字字符符。常常用用的的有有以

31、以下下几几种格式字符:种格式字符:(1)d格式符。格式符。用来输出十进制整数。有以下几种用法:用来输出十进制整数。有以下几种用法:%d,按整型数据的实际长度输出。按整型数据的实际长度输出。%md,m为为指指定定的的输输出出字字段段的的宽宽度度。如如果果数数据据的的位位数数小小于于m,则则左左端端补补以以空空格格,若若大大于于,则则按按实实际际位位数数输输出出。如如printf(%4d,%4d,a,b);若若a=123,b=12345,则输出结果为则输出结果为 123,12345%ld,输出长整型数据。如输出长整型数据。如long a=135790;printf(%ld,a);如如果果用用%d输

32、输出出,就就会会发发生生错错误误,因因为为整整型型数数据据的的范范围围为为-3276832767。一个一个int型数据可以用型数据可以用%d或或%ld格式输出。格式输出。(2)o格格式式符符,以以八八进进制制数数形形式式输输出出整整数数。由由于于是是将将内内存存单单元元中中的的各各位位的的值值(0或或1)按按八八进进制制形形式式输输出出,因因此此输输出出的的数数值值不不带带符符号号,即即将将符符号号位位也也一一起起作作为为八八进进制制数数的的一一部部分分输出。例如:输出。例如:int a=-1;printf(%d,%o,a,a);-1在内存单元中的存放形式在内存单元中的存放形式(以补码形式存放

33、以补码形式存放)如下:如下:1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 输出为输出为 -1,177777 不不会会输输出出带带负负号号的的八八进进制制整整数数。对对长长整整数数(long型型)可可以以用用“%lo”格格 式式 输输 出出。同同 样样 可可 以以 指指 定定 字字 段段 宽宽 度度,如如 printf(“%8o”,a)输出为输出为177777。(3)x格格式式符符,以以十十六六进进制制数数形形式式输输出出整整数数。同同样样不不会会出出现现负的十六进制数。例如:负的十六进制数。例如:int a=-1;printf(%x,%o,%d,a,a,a);输出结果为输出结

34、果为ffff,177777,-1 同同样样可可以以用用“%lx”输输出出长长整整型型数数,也也可可以以指指定定输输出出字字段段的宽度,如的宽度,如“%12x”。(4)u格格式式符符,用用来来输输出出unsigned型型数数据据,即即无无符符号号数数,以以十十进制形式输出。进制形式输出。一一个个有有符符号号整整数数(int型型)也也可可以以用用%u格格式式输输出出;反反之之,一一个个unsigned型型数数据据也也可可以以用用%d格格式式输输出出。按按相相互互赋赋值值的的规规则则处处理理(见见第第2章章2.9节节)。unsigned型型数数据据也也可可用用%o或或%x格格式输出。式输出。例例3.

35、3无符号数据的输出。无符号数据的输出。main()unsigned int a=65535;int b=-2 ;printf(a=%d,%o,%x,%un,a,a,a,a);printf(b=%d,%o,%x,%un,b,b,b,b);运行结果为:运行结果为:a=-1,177777,ffff,65535 b=-2,177776,fffe,65534 (5)c格式符,格式符,用来输出一个字符。如:用来输出一个字符。如:charc=a;printf(%c,c);输输出出字字符符a,请请注注意意:“%c”中中的的c是是格格式式符符,逗逗号号右右边的边的c是变量名,不要搞混。是变量名,不要搞混。一一个

36、个整整数数,只只要要它它的的值值在在0255范范围围内内,也也可可以以用用字字符符形形式式输输出出,在在输输出出前前,系系统统会会将将该该整整数数作作为为ascii码码转转换换成成相相应应的的字字符符;反反之之,一一个个字字符符数数据据也也可可以以用用整整数数形形式式输输出出。例例3.4 字符数据的输出。字符数据的输出。main()char c=a;int i=97;printf(%c,%dn,c,c);printf(%c,%dn,i,i);运行结果为:运行结果为:a,97 a,97 也可以指定输出字数宽度,如果有也可以指定输出字数宽度,如果有printf(%3c,c)则输出:则输出:“a”,

37、即,即c变量输出占变量输出占3列,前列,前2列补空格。列补空格。(6)s格式符,用来输出一个字符串。格式符,用来输出一个字符串。有几种用法:有几种用法:%s,例如:例如:printf(%s,china)输出输出“china”字符串字符串(不包括双引号不包括双引号)。%ms,输输出出的的字字符符串串占占列列,如如字字符符串串本本身身长长度度大大于于m,则则突突破破的的限限制制,将将字字符符串串全全部部输输出出。若若串串长长小小于于m,则左补空格。则左补空格。%-ms,如如果果串串长长小小于于,则则在在列列范范围围内内,字字符符串串向向左靠,右补空格。左靠,右补空格。%mns,输输出出占占列列,但

38、但只只取取字字符符串串中中左左端端n个个字字符符。这这n个字符输出在列的右侧,左补空格。个字符输出在列的右侧,左补空格。%-mns,其其中中、n含含义义同同上上,n个个字字符符输输出出在在列列范范围围的的左左侧侧,右右补补空空格格。如如果果n,则则自自动动取取n值值,即即保保证证n个字符正常输出。个字符正常输出。例例3.5字符串的输出。字符串的输出。main()printf(“%3s,%7.2s,%.4s,%-5.3sn”,“china”,china,china,china)输出如下:输出如下:china,ch,chin,chi 其其中中第第3个个输输出出项项,格格式式说说明明为为“%.4s”

39、,即即只只指指定定了了n,没指定,自动使没指定,自动使=n=4,故占故占4列。列。(7)f格格式式符符,用用来来输输出出实实数数(包包括括单单、双双精精度度),以以小小数数形形式式输出。有以下几种用法:输出。有以下几种用法:%f,不不指指定定字字段段宽宽度度,由由系系统统自自动动指指定定,使使整整数数部部分分全全部部如如数数输输出出,并并输输出出6位位小小数数。应应当当注注意意,并并非非全全部部数数字字都是有效数字。单精度实数的有效位数一般为都是有效数字。单精度实数的有效位数一般为7位。位。例例3.6输出实数时的有效位数。输出实数时的有效位数。main()float x,y;x=1111111

40、11;y=222222222;printf(%f,x+y);运行结果为运行结果为333333328125 显显然然,只只有有前前7位位数数字字是是有有效效数数字字。千千万万不不要要以以为为凡凡是是打打印印出出来来的的数数字字都都是是准准确确的的。双双精精度度数数也也可可用用%f格格式式输输出出,它它的的有有效效位位数数一一般般为为 16位,给出小数位,给出小数6位。位。例例3.7 输出双精度数时的有效位数。输出双精度数时的有效位数。main()double x,y;x=1111111111111.111111111;y=2222222222222.222222222;printf(%f,x+y

41、);输出结果为输出结果为3333333333333.333010 可以看到最后可以看到最后3位小数位小数(超过超过16位位)是无意义的。是无意义的。%nf 指指定定输输出出的的数数据据共共占占列列,其其中中有有n位位小小数数。如果数值长度小于,则左端补空格。如果数值长度小于,则左端补空格。%-nf 与与%nf基基本本相相同同,只只是是使使输输出出的的数数值值向向左端靠,右端补空格。左端靠,右端补空格。例例3.8输出实数时指定小数位数。输出实数时指定小数位数。main()float f=123.456;printf(“%f%10f%10.2f%.2f%-10.2fn”,f,f,f,f,f);输出

42、结果如下:输出结果如下:123.456001 123.456001 123.46 123.46 123.46 f的的值值应应为为123.456,但但输输出出为为123.455994,这这是是由由于于实实数数在在内存中的存储误差引起的。内存中的存储误差引起的。(8)e格式符,格式符,以指数形式输出实数。可用以下形式:以指数形式输出实数。可用以下形式:%e 不不指指定定输输出出数数据据所所占占的的宽宽度度和和数数字字部部分分的的小小数数位位数数,有有的的c编编译译系系统统自自动动指指定定给给出出6位位小小数数,指指数数部部分分占占5位位(如如e+002),其中其中“e”占占1位,指数符号位,指数符

43、号占占1位位,指指数数占占3位位。数数值值按按规规范范化化指指数数形形式式输输出出(即即小小数数点点前必须有而且只有前必须有而且只有1位非零数字位非零数字)。例如。例如printf(%e,123456);输出:输出:1234560e+002。6列列 5列列 输输出出的的实实数数共共占占13列列宽宽度度。(注注:不不同同系系统统的的规规定定略略有有不不同同)%m.ne 和和%-m.ne。、n和和“-”字字符符含含义义与与前前相相同同。此此处处n指指拟拟输输出出的的数数据据的的小小数数部部分分(又又称称尾尾数数)的的小小数数位位数数。若若f=123456,则:则:printf(%e%10e%10.

44、2e%.2e%-10.2e,f,f,f,f,f);输出如下:输出如下:1.234560e+002 1.234560e+002 1.23e+002 1.23e+002 1.23e+002 13列列 13列列 10列列 9列列 10列列 第第2个个输输出出项项按按%10e输输出出,即即只只指指定定了了=10,未未指指定定n,凡凡未未指指定定n,自自动动使使n=6,整整个个数数据据长长13列列,超超过过给给定定的的10列列,乃乃突突破破10列列的的限限制制,按按实实际际长长度度输输出出。第第3个个数数据据共共占占10列列,小小数数部部分分占占2列列。第第4个个数数据据按按“%2e”格格式式输输出出,

45、只只指指定定n=2,未未指指定定,自自动动使使等等于于数数据据应应占占的的长长度度,今今为为9列列。第第5个个数数据据应应占占10列列,数数值值只只有有9列列,由由于于是是“%-102e”,数数值值向向左左靠靠,右右补补一一个个空空格格。(注注:有有的的c系统的输出格式与此略有不同系统的输出格式与此略有不同)(9)g格格式式符符,用用来来输输出出实实数数,它它根根据据数数值值的的大大小小,自自动动选选f格格式式或或e格格式式(选选择择输输出出时时占占宽宽度度较较小小的的一一种种),且且不不输输出出无无意意义义的的零零。例例如如,若若f=123468,则,则printf(“%f%e%g”,f,f

46、,f);输出如下:输出如下:123.468000 1.234680e+002 123.468 10列列 13列列 10列列 用用%f格格式式输输出出占占10列列,用用%e格格式式输输出出占占13列列,用用%g格格式式时时,自自动动从从上上面面两两种种格格式式中中选选择择短短者者(今今以以%f格格式式为为短短),故故占占10列列,且且按按%f格格式式用用小小数数形形式式输输出出,最最后后3个个小小数数位位“0”为为无无意意义义的的0,不不输输出出,因因此此输输出出123.468,然后右补,然后右补3个空格。个空格。%g格式用得较少。格式用得较少。在使用在使用printf函数时,还有几点要说明:函

47、数时,还有几点要说明:(1)除除了了X,E,G外外,其其他他格格式式字字符符必必须须用用小小写写字字母母,如如%d不能写成不能写成%d。(2)可可以以在在printf函函数数中中的的“格格式式控控制制”字字符符串串内内包包含含第第2章章2.5节节 2.5.1段段 中中 的的“转转 义义 字字 符符”,如如“n”、“t”、“b”、“r”、“f”、“377”等。等。(3)上上面面介介绍绍的的d、o、x、u、c、s、f、e、g等等字字符符,如如用用在在“%”后后面面就就作作为为格格式式符符号号。一一个个格格式式说说明明以以“%”开开头头,以以上上述述9个个格格式式字字符符之之一一为为结结束束,中中间

48、间可可以以插插入入附附加加格格式式字符字符(也称修饰符也称修饰符)。例如:。例如:第第一一个个格格式式说说明明为为“%c”而而不不包包括括其其后后的的f,第第二二个个格格式式说说明明为为“%f”,不不包包括括其其后后的的s,第第三三个个格格式式说说明明为为%s。其他的字符为原样输出的普通字符。其他的字符为原样输出的普通字符。(4)如如果果想想输输出出字字符符“%”,则则应应该该在在“格格式式控控制制”字字符符串串中用连续两个中用连续两个%表示,如表示,如:printf(%f%,10/3);输出:输出:0333333%3.6.2 scanf函数函数(格式输入函数格式输入函数)在在第第1章章中中已

49、已初初步步接接触触到到了了scanf函函数数,在在本本节节中中再再作作详详细细介绍。介绍。1.一般形式一般形式scanf(格式控制,地址表列格式控制,地址表列)“格格式式控控制制”的的含含义义同同printf函函数数;“地地址址表表列列”是是由由若若干干个地址组成的表列,可以是变量的地址,或字符串首地址。个地址组成的表列,可以是变量的地址,或字符串首地址。例例3.9用用scanf函数输入数据。函数输入数据。main()int a,b,c;scanf(“%d%d%d”,&a,&b,&c);printf(“%d,%d,%dn”,a,b,c);图图3.83.8 运行时按以下方式输入运行时按以下方式输

50、入a、b、c的值:的值:3 4 5(输入输入a、b、c的值的值)3,4,5 (输出输出a、b、c的值的值)&a、&b、&c中中的的“&”是是“地地址址运运算算符符”,&a指指a在在内内存存中中的的地地址址。上上面面scanf函函数数的的作作用用是是:按按照照a、b、c在在内内存存的的地地址址将将a、b、c的的值值存存进进去去。见见图图3.8。变变量量a、b、c的的地址是在地址是在 编译连接阶段分配的。编译连接阶段分配的。“%d%d%d”表表示示按按十十进进制制整整数数形形式式输输入入数数据据。输输入入数数据据时时,在在两两个个数数据据之之间间以以一一个个或或多多个个空空格格间间隔隔,也也可可以

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁