c语言谭浩强版顶级讲义

上传人:re****.1 文档编号:592799353 上传时间:2024-09-22 格式:PPT 页数:72 大小:1.89MB
返回 下载 相关 举报
c语言谭浩强版顶级讲义_第1页
第1页 / 共72页
c语言谭浩强版顶级讲义_第2页
第2页 / 共72页
c语言谭浩强版顶级讲义_第3页
第3页 / 共72页
c语言谭浩强版顶级讲义_第4页
第4页 / 共72页
c语言谭浩强版顶级讲义_第5页
第5页 / 共72页
点击查看更多>>
资源描述

《c语言谭浩强版顶级讲义》由会员分享,可在线阅读,更多相关《c语言谭浩强版顶级讲义(72页珍藏版)》请在金锄头文库上搜索。

1、第第4章章 最简单的最简单的c程序设计程序设计顺序程序设计顺序程序设计4.1 C语句概述4.2 程序的三种基本结构4.3 赋值语句4.4 数据输入输出的概念及在语言中的实现4.5 字符数据的输入输出4.6 格式输入与输出4.7 顺序结构程序设计举例习题在上一章介绍了程序中用到的一些基本要素在上一章介绍了程序中用到的一些基本要素(常量、变量、运算符、表达式等常量、变量、运算符、表达式等 ),它们是,它们是构成程序的基本成分。在第构成程序的基本成分。在第 1章中已经介绍章中已经介绍了几个简单的了几个简单的c程序。本章将介绍为编写简程序。本章将介绍为编写简单的程序所必需的一些内容。单的程序所必需的一

2、些内容。4.1 C语句概述语句概述和其他高级语言一样,和其他高级语言一样,c语言的语句用来向计算机系统语言的语句用来向计算机系统发出操作指令。一个语句经编译后产生若干条机器指发出操作指令。一个语句经编译后产生若干条机器指令。一个实际的程序应当包含若干语句。应当指出,令。一个实际的程序应当包含若干语句。应当指出,c语句都是用来完成一定操作任务的。声明部分的内语句都是用来完成一定操作任务的。声明部分的内容不应称为语句。如:容不应称为语句。如:int a;不是一个不是一个c语句,它不产语句,它不产生机器操作,而只是对变量的定义。从第生机器操作,而只是对变量的定义。从第1章已知,章已知,一个函数包含声

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

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

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

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

7、而不像像pascal 语言那样,分号只是语句间的分隔符号语言那样,分号只是语句间的分隔符号 )。例如:例如: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 有严格要求有严格要求)。4.2 程序的三种基本结构程序的三种基本结构为了提高程序设计的质量和效率,现在普遍采用结为了提高程序设计的质量和效率,现在普遍采用结构化程序设计方法。结构化程序由若干个基本结构化程序设计方法。结构化程序由若干个基本结构组成。每一个基本结构可以包含构组成。每一个基本结构可以包含 一个或若干个一个或若干个语句。有三种基本结构语句。有三种基本结构 :(1) 顺序结构顺序结构,见图见图4.2。先执行。先执行a操作操作,再执行再执行b操作操作,两者是顺序执

11、行的关系。图中两者是顺序执行的关系。图中 (b)是是ns结构化流程结构化流程图图(下同下同)。图图4.2图图4.3(2) 选择结构选择结构,见图见图4.3。p代表一个条件代表一个条件,当当p条件成条件成立立(或称为或称为“真真”)时执行时执行a,否则执行否则执行b。注意。注意,只能只能执行执行a或或b之一。两条路径汇合在一起然后出口。之一。两条路径汇合在一起然后出口。(3) 循环结构循环结构,有两种循环结构有两种循环结构: 当型循环结构当型循环结构,见图见图4.4。当。当p条件成立条件成立(“真真”)时时,反复执行反复执行a操作。直到操作。直到p为为“假假”时才停止循环。时才停止循环。 直到型

12、循环结构直到型循环结构,见图见图4.5。先执行。先执行a操作操作,再判断再判断p是否为是否为“假假”,若若p为为“假假”,再执行再执行a,如此反复如此反复,直直到到p为为“真真”为止。为止。图图4.4图图4.5由选择结构可以派生出另一种基本结构由选择结构可以派生出另一种基本结构 : 多分支选多分支选择结构择结构,见图见图4.6。根据根据k的值的值(k1,k2,kn)不同而决定执行不同而决定执行a1,a2,an之一。之一。已经证明已经证明,由以上基本结构组成的程序能处理任何由以上基本结构组成的程序能处理任何复杂的问题。上面图复杂的问题。上面图 4.2图图4.7中方框中的中方框中的a,b,a1,a

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

14、明在此不再重复。只是应当强调说明 ,在今后的在今后的程序设计中应当采用结构化程序设计方法。在本程序设计中应当采用结构化程序设计方法。在本章中章中,我们将介绍几种最基本的语句我们将介绍几种最基本的语句 ,以及用它们以及用它们构成顺序结构的程序。在第构成顺序结构的程序。在第 4、第、第5章介绍选择结章介绍选择结构和循环结构的程序设计。构和循环结构的程序设计。4.3 赋值语句赋值语句前已介绍,赋值语句是由赋值表达式加上一个分号前已介绍,赋值语句是由赋值表达式加上一个分号构成。由于赋值语句应用十分普遍,所以专门再构成。由于赋值语句应用十分普遍,所以专门再讨论一下。讨论一下。C语言的赋值语句具有其他高级

15、语言的赋值语句的语言的赋值语句具有其他高级语言的赋值语句的一切特点和功能。但也应当注意到它们的不同:一切特点和功能。但也应当注意到它们的不同:(1) C语言中的赋值号语言中的赋值号“ =”是一个运算符,在其他是一个运算符,在其他大多数语言中赋值号不是运算符。大多数语言中赋值号不是运算符。(2) 关于赋值表达式与赋值语句的概念,其他多数关于赋值表达式与赋值语句的概念,其他多数高级语言没有高级语言没有“赋值表达式赋值表达式”一概念。作为赋值一概念。作为赋值表达式可以包括在其他表达式之中,例如:表达式可以包括在其他表达式之中,例如:if(a=b)0)t=a;按语法规定按语法规定if后面的后面的()内

16、是一个条件,例如可以内是一个条件,例如可以是:是:“if(x0)”。现在在。现在在x的位置上换上一个赋的位置上换上一个赋值表达式值表达式“a=b”,其作用是:先进行赋值运算,其作用是:先进行赋值运算(将将b的值赋给的值赋给a),然后判断,然后判断a是否大于是否大于0,如大于,如大于0,执行执行t=a。在。在if语句中的语句中的“a=b”不是赋值语句而是不是赋值语句而是赋值表达式,这样写是合法的。如果写成赋值表达式,这样写是合法的。如果写成if(a=b;)0)t=a;就错了。在;就错了。在if的条件中不能包的条件中不能包含赋值语句。由此可以看到,含赋值语句。由此可以看到, c把赋值语句和赋把赋值

17、语句和赋值表达式区别开来,增加了表达式的种类,使表值表达式区别开来,增加了表达式的种类,使表达式的应用几乎达式的应用几乎“无孔不入无孔不入”,能实现其他语言,能实现其他语言中难以实现的功能中难以实现的功能 .4.4 数据输入输出的概念及在数据输入输出的概念及在C语言中的实现语言中的实现(1) 所谓输入输出是以计算机主机为主体而言的。从所谓输入输出是以计算机主机为主体而言的。从计算机向外部输出设备计算机向外部输出设备 (如显示屏、打印机、磁盘如显示屏、打印机、磁盘等等)输出数据称为输出数据称为“输出输出” ,从外部向输入设备,从外部向输入设备(如键盘、磁盘、光盘、扫描仪等如键盘、磁盘、光盘、扫描

18、仪等 )输入数据称为输入数据称为“输入输入”。(2) C语言本身不提供输入输出语句,输入和输出操语言本身不提供输入输出语句,输入和输出操作是由函数来实现的。在作是由函数来实现的。在 c标准函数库中提供了一标准函数库中提供了一些输入输出函数,例如,些输入输出函数,例如, printf函数和函数和scanf 函数。函数。读者在使用它们时,千万不要误认为它们是读者在使用它们时,千万不要误认为它们是 C语语言提供的言提供的“输入输出语句输入输出语句”。 printf和和scanf 不是不是C语言的关键字,而只是函数的名字。实际上完全语言的关键字,而只是函数的名字。实际上完全可以不用可以不用printf

19、和和scanf 这两个名字,而另外编两个这两个名字,而另外编两个输入输出函数,输入输出函数, 用其他的函数名。用其他的函数名。C提供的函数以提供的函数以库的形式存放在系统中,它们不是库的形式存放在系统中,它们不是c语言文本中的组语言文本中的组成部分。成部分。在第在第1章中曾介绍,不把输入输出作为章中曾介绍,不把输入输出作为C语言提供的语语言提供的语句的目的是使句的目的是使C语言编译系统简单,因为将语句翻译语言编译系统简单,因为将语句翻译成二进制的指令是在编译阶段完成的,没有输入输成二进制的指令是在编译阶段完成的,没有输入输出语句就可以避免在编译阶段处理与硬件有关的问出语句就可以避免在编译阶段处

20、理与硬件有关的问题,可以使编译系统简化,而且通用性强,可移植题,可以使编译系统简化,而且通用性强,可移植性好,对各种型号的计算机都适用,便于在各种计性好,对各种型号的计算机都适用,便于在各种计算机上实现。各种版本的算机上实现。各种版本的C语言函数库是各计算机厂语言函数库是各计算机厂商商(或软件开发公司或软件开发公司)针对某一类型计算机的情况编写针对某一类型计算机的情况编写的,并且已编译成目标文件的,并且已编译成目标文件(.obj文件文件)。它们在连接。它们在连接阶段与由源程序阶段与由源程序 经编译而得到的目标文件相连接,经编译而得到的目标文件相连接,生成一个可执行的目标程序。如果在源程序中有生

21、成一个可执行的目标程序。如果在源程序中有printf函函数,在编译时并不把它翻译成目标指令,而是在数,在编译时并不把它翻译成目标指令,而是在执行阶段中调用已被连接的函数库中的执行阶段中调用已被连接的函数库中的 printf函函数。由于数。由于c编译系统与编译系统与c函数库是分别进行设计的,函数库是分别进行设计的,因此不同的计算机系统所提供函数的数量、名字因此不同的计算机系统所提供函数的数量、名字和功能是不完全相同的。不过,有些通用的函数和功能是不完全相同的。不过,有些通用的函数(如如printf和和scanf 等等),各种计算机系统都提供,各种计算机系统都提供,成为各种计算机系统的标准函数。成

22、为各种计算机系统的标准函数。 c语言函数库语言函数库中有一批中有一批“标准输入输出函数标准输入输出函数” ,它是以标准的,它是以标准的输入输出设备输入输出设备(一般为终端设备一般为终端设备)为输入输出对象为输入输出对象的。其中有:的。其中有:putchar(输出字符输出字符),getchar( 输入输入字符字符),printf(格式输出格式输出),scanf( 格式输入格式输入),puts( 输出字符串输出字符串),gets( 输入字符串输入字符串)。在本章中。在本章中介绍前面介绍前面4个最基本的输入输出函数。个最基本的输入输出函数。(3) 在使用在使用c语言库函数时,要用预编译命令语言库函数

23、时,要用预编译命令“include” 将有关的将有关的“头文件头文件” 包括到用户源文件中。包括到用户源文件中。在头文件中包含了与用到的函数有关的信息。例如在头文件中包含了与用到的函数有关的信息。例如使用标准输入输出库函数时,要用到使用标准输入输出库函数时,要用到“stdio.h” 文件。文件。文件后缀文件后缀“h” 是是head 的缩写,的缩写,#include 命令都是放命令都是放在程序的开头,因此这类文件被称为在程序的开头,因此这类文件被称为“头文件头文件” 。在调用标准输入输出库函数时,文件开头应有以下在调用标准输入输出库函数时,文件开头应有以下预编译命令:预编译命令:#include

24、 或或#include studio.hstudio h是是standard input & output 的缩写,它包含了的缩写,它包含了与标准与标准i/o库有关的变量定义和宏定义库有关的变量定义和宏定义(有关预编译有关预编译命令见第命令见第7章章)。考虑到。考虑到printf和和scanf 函数使用频繁,函数使用频繁,系统允许在使用这两个函数时可不加系统允许在使用这两个函数时可不加#include 命令。命令。4.5 字符数据的输入输出字符数据的输入输出我们先介绍我们先介绍c标准标准i/o函数库中最简单的、也是最容易理函数库中最简单的、也是最容易理解的字符输入输出函数解的字符输入输出函数p

25、utchar() 和和getchar() ,再介绍,再介绍格式输入输出函数格式输入输出函数printf()和和scanf() 函数。函数。4.5.1 putchar 函数函数(字符输出函数字符输出函数)putchar 函数的作用是向终端输出一个字符:例如函数的作用是向终端输出一个字符:例如putchar(c) ;它输出字符变量;它输出字符变量c的值。的值。c可以是字符型可以是字符型变量或整型变量。变量或整型变量。例例4.1输出单个字符。输出单个字符。#include main()char a ,b,c;a=b;b=o;c=y;putchar(a) ;putchar(b) ;putchar(c)

26、 ;运行结果:运行结果:boy也可以输出控制字符,如也可以输出控制字符,如 putchar(n)输出一个换输出一个换行符,使输出的当前位置移到下一行的开头。如行符,使输出的当前位置移到下一行的开头。如果将例果将例4.1程序最后一行改为程序最后一行改为putchar(a);putchar( n);putchar(b);putchar( n);putchar(c); putchar( n);则输出结果为:则输出结果为:boy也可以输出其他转义字符,如:也可以输出其他转义字符,如:putchar(101)(输出字符输出字符a)putchar() ( 输出单引号字符输出单引号字符)putchar(01

27、5) ( 输出回车,不换行,使输出输出回车,不换行,使输出的当前位置移到本行开头的当前位置移到本行开头 )4.5.2 getchar 函数函数(字符输入函数字符输入函数)此函数的作用是从终端此函数的作用是从终端 (或系统隐含指定的输入设或系统隐含指定的输入设备备)输入一个字符。输入一个字符。getchar 函数没有参数,其一函数没有参数,其一般形式为般形式为getchar()函数的值就是从输入设备得到的字符。例如:函数的值就是从输入设备得到的字符。例如:例例4.2输入单个字符输入单个字符#include main()charc ;c=getchar() ;putchar(c) ;在运行时,如果

28、从键盘输入字符在运行时,如果从键盘输入字符a并按回车键,就会在并按回车键,就会在屏幕上看到输出的字符屏幕上看到输出的字符a。a(输入输入a后,按后,按“回车回车”键,字符才送到内存键,字符才送到内存)a ( 输出变量输出变量c的值的值a)请注意,请注意,getchar() 只能接收一个字符。只能接收一个字符。getchar 函数得到的函数得到的字符可以赋给一个字符变量或整型变量,也可以不赋给字符可以赋给一个字符变量或整型变量,也可以不赋给任何变量,作为表达式的一部分。例如,例任何变量,作为表达式的一部分。例如,例4.2第第4、5行行可以用下面一行代替:可以用下面一行代替:putchar(get

29、char() ;因为因为getchar() 的值为的值为a ,因此,因此 putchar 函数输出函数输出a 。也可以用也可以用printf函数输出:函数输出:printf(”%c ,getchar() ;请不要忘记,如果在一个函数;请不要忘记,如果在一个函数中中(今为今为main函数函数)要调用要调用getchar 函数,应该在该函数的函数,应该在该函数的前面前面(或本文件开头或本文件开头)加上加上“包含命令包含命令”#include 4.6格式输入与输出格式输入与输出4.6.1 printf 函数函数(格式输出函数格式输出函数)在前面各章节中已用到在前面各章节中已用到 printf函数,它

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

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

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

33、ga=135790 ;printf(%ld,a);如果用如果用%d输出,就会发生错误,因为整型数据的范围为输出,就会发生错误,因为整型数据的范围为-32768 32767 。对。对long 型数据应当用型数据应当用%ld格式输出。对长格式输出。对长整型数据也可以指定字段宽度,如将上面整型数据也可以指定字段宽度,如将上面printf函数中的函数中的“%ld”改为改为“%8ld”,则输出为:,则输出为:1357908列列一个一个int型数据可以用型数据可以用%d或或%ld格式输出。格式输出。(2) o格式符,以八进制数形式输出整数。由于是将内存单格式符,以八进制数形式输出整数。由于是将内存单元中的

34、各位的值元中的各位的值(0或或1)按八进制形式输出,因此输出的数按八进制形式输出,因此输出的数值不带符号,即将符号位也一起作为八进制数的一部分值不带符号,即将符号位也一起作为八进制数的一部分输出。例如:输出。例如:int a=-1;printf(%d ,%o ,a,a); -1在内存单元中的存放形式在内存单元中的存放形式(以补码形式存放以补码形式存放)如下:如下:1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1输出为输出为-1,177777不会输出带负号的八进制整数。对长整数不会输出带负号的八进制整数。对长整数 (long 型型)可以用可以用“%lo”格式输出。同样可以指定字段宽

35、度,格式输出。同样可以指定字段宽度,如如printf(“%8o”,a)输出为输出为177777 。(3) x格式符,以十六进制数形式输出整数。同样不格式符,以十六进制数形式输出整数。同样不会出现负的十六进制数。例如:会出现负的十六进制数。例如:int a=-1;printf(%x ,%o,%d ,a,a,a);输出结果为输出结果为ffff,177777 ,-1同样可以用同样可以用“%lx”输出长整型数,也可以指定输输出长整型数,也可以指定输出字段的宽度,如出字段的宽度,如“ x”。(4) u格式符,用来输出格式符,用来输出 unsigned 型数据,即无符号型数据,即无符号数,以十进制形式输出

36、。数,以十进制形式输出。一个有符号整数一个有符号整数(int型型)也可以用也可以用%u格式输出;反格式输出;反之,一个之,一个unsigned 型数据也可以用型数据也可以用%d格式输出。格式输出。按相互赋值的规则处理按相互赋值的规则处理 (见第见第2章章2.9节节)。unsigned型数据也可用型数据也可用%o或或%x格式输出。格式输出。例例4.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);运行结果为

37、:运行结果为:a=-1,177777 ,ffff,65535b=-2,177776 ,fffe,65534 请读者自己分析。请读者自己分析。(5) c格式符,用来输出一个字符。如:格式符,用来输出一个字符。如:charc=a;printf(%c,c);输出字符输出字符a,请注意:,请注意:“%c”中的中的c是格式符,逗是格式符,逗号右边的号右边的c是变量名,不要搞混。是变量名,不要搞混。一个整数,只要它的值在一个整数,只要它的值在 0255范围内,也可以用范围内,也可以用字符形式输出,在输出前,系统会将该整数作为字符形式输出,在输出前,系统会将该整数作为ascii 码转换成相应的字符;反之,一

38、个字符数据码转换成相应的字符;反之,一个字符数据也可以用整数形式输出。例也可以用整数形式输出。例 4.4字符数据的输出。字符数据的输出。main()char c=a;int i=97;printf(%c ,%dn ,c,c);printf(%c ,%dn ,i,i);运行结果为:运行结果为:a,97a,97 也可以指定输出字数宽度,如果有也可以指定输出字数宽度,如果有printf(,c) 则输出:则输出:“ a”,即,即c变量输出占变量输出占3列,前列,前2列补空格。列补空格。(6) s 格式符,用来输出一个字符串。有几种用法:格式符,用来输出一个字符串。有几种用法:%s,例如:例如:prin

39、tf(%s,china)输出输出“china” 字符串字符串(不包括双引号不包括双引号)。%ms,输出的字符串占列,如字符串本身长,输出的字符串占列,如字符串本身长度大于度大于m,则突破的限制,将字符串全部输出。,则突破的限制,将字符串全部输出。若串长小于若串长小于m,则左补空格。,则左补空格。%-ms,如果串长小于,则在列范围内,如果串长小于,则在列范围内,字符串向左靠,右补空格。字符串向左靠,右补空格。%mns,输出占列,但只取字符串中左端,输出占列,但只取字符串中左端n个字符。这个字符。这n个字符输出在列的右侧,左补空个字符输出在列的右侧,左补空格。格。%-mns,其中、,其中、n含义同

40、上,含义同上,n个字符输出个字符输出在列范围的左侧,右补空格。如果在列范围的左侧,右补空格。如果 n,则,则自动取自动取n值,即保证值,即保证n个字符正常输出。个字符正常输出。例例4.5字符串的输出。字符串的输出。main()printf(%3s ,%7.2s,%.4s,%-5.3sn ,china,china, china, china)输出如下:输出如下:china ,ch,chin,chi 其中第其中第3个输出项,格式说明为个输出项,格式说明为“ %.4s”,即只指定,即只指定了了n,没指定,自动使,没指定,自动使 =n=4,故占,故占4列。列。(7) f格式符,用来输出实数格式符,用来

41、输出实数 (包括单、双精度包括单、双精度 ),以,以小数形式输出。有以下几种用法:小数形式输出。有以下几种用法:%f,不指定字段宽度,由系统自动指定,使,不指定字段宽度,由系统自动指定,使整数部分全部如数输出,并输出整数部分全部如数输出,并输出 6位小数。应当注位小数。应当注意,并非全部数字都是有效数字。单精度实数的意,并非全部数字都是有效数字。单精度实数的有效位数一般为有效位数一般为7位。位。例例4.6输出实数时的有效位数。输出实数时的有效位数。main()float x,y;x=111111 111;y=222222 222;printf(%f,x+y);运行结果为运行结果为333333

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

43、最后3位小数位小数(超过超过16位位)是无意义的。是无意义的。%nf指定输出的数据共占列,其中有指定输出的数据共占列,其中有n位小数。如果数值长度小于,则左端补空格。位小数。如果数值长度小于,则左端补空格。%-nf与与%nf基本相同,只是使输出基本相同,只是使输出的数值向左端靠,右端补空格。的数值向左端靠,右端补空格。例例4.8输出实数时指定小数位数。输出实数时指定小数位数。main()float f=123.456;printf(%f f .2f %.2f %-10.2fn ,f,f,f,f,f);输出结果如下:输出结果如下:123.456001 123.456001 123.46 123.

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

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

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

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

48、);输出如下:输出如下: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函数时,还有几点要说

49、明:函数时,还有几点要说明:(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个格式字符之一为结束,个格式字符之

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

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

52、;图图4.84.8运行时按以下方式输入运行时按以下方式输入 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的值存进去。见的值存进去。见图图4.8。变量。变量a、b、c的地址是在的地址是在 编译连接阶段分编译连接阶段分配的。配的。“%d%d%d” 表示按十进制整数形式输入数据。输表示按十进制整数形式输入数据。输入数据时,在两个数据之

53、间以一个或多个空格间入数据时,在两个数据之间以一个或多个空格间隔,也可以用回车键、跳格键隔,也可以用回车键、跳格键 tab。下面输入均为。下面输入均为合法:合法: 3 4 5 34 5 3(按按tab键键)45用用“%d%d%d” 格式输入数据时,不能用逗号作两格式输入数据时,不能用逗号作两个数据间的分隔符,如下面输入不合法:个数据间的分隔符,如下面输入不合法:3,4,52. 格式说明格式说明和和printf函数中的格式说明相似,以函数中的格式说明相似,以 %开始,以一个开始,以一个格式字符结束,中间可以插入附加的字符。格式字符结束,中间可以插入附加的字符。说明:说明:(1) 对对unsign

54、ed 型变量所需的数据,可以用型变量所需的数据,可以用 %u,%d或或%o,%x格式输入。格式输入。(2) 可以指定输入数据所占列数,系统自动按它截取可以指定输入数据所占列数,系统自动按它截取所需数据。如,所需数据。如,scanf(=,&a,&b);输入:输入: 123456系统自动将系统自动将123赋给赋给a,456赋给赋给b。此方法也可用于。此方法也可用于字符型:字符型:scanf(,&ch);如果从键盘连续输入如果从键盘连续输入 3个字符个字符abc,由于,由于ch只能容纳只能容纳一个字符,系统就把第一个字符一个字符,系统就把第一个字符 a赋给赋给ch。(3) 如果在如果在%后有一个后有

55、一个“*”附加说明符,表示跳过附加说明符,表示跳过它指定的列数。例如,它指定的列数。例如,scanf(- %*3d -,&a,&b);如果输入如下信息:;如果输入如下信息:12 345 67将将12赋给赋给a,%*3d表示读入表示读入3位整数但不赋给任何位整数但不赋给任何变量。然后再读入变量。然后再读入 2位整数位整数67赋给赋给b。也就是说第也就是说第2个数据个数据“345”被跳过。在利用现成的被跳过。在利用现成的一批数据时,有时不需要其中某些数据,可用此一批数据时,有时不需要其中某些数据,可用此法法“跳过跳过”它们。它们。(4) 输入数据时不能规定精度,例如,输入数据时不能规定精度,例如,

56、scanf(%7 2f ,&a);是不合法的,不能企图用这样的是不合法的,不能企图用这样的 scanf 函数并输入以函数并输入以下数据而使下数据而使a的值为的值为1234567。12345673. 使用使用scanf 函数时应注意的问题函数时应注意的问题(1) scanf 函数中的函数中的“格式控制格式控制”后面应当是变量地址,后面应当是变量地址,而不应是变量名。例如,而不应是变量名。例如,如果如果a、b为整型变量,则为整型变量,则scanf(%d ,%d ,a,b);是不对的,应将是不对的,应将“ a,b”改为改为“&a,&b”。这是。这是c语语言与其他高级语言不同之处。许多初学者常在此言与

57、其他高级语言不同之处。许多初学者常在此出错。出错。(2) 如果在如果在“格式控制格式控制”字符串中除了格式说明以字符串中除了格式说明以外还有其他字符,则在输入数据时应输入与这些外还有其他字符,则在输入数据时应输入与这些字符相同的字符。例如字符相同的字符。例如scanf(%d ,%d ,&a,&b);输入时应用如下形式:输入时应用如下形式:3,4注意注意3后面是逗号,它与后面是逗号,它与 scanf 函数中的函数中的“格式控制格式控制”中的逗号对应。如果输入时不用逗号而用空格或中的逗号对应。如果输入时不用逗号而用空格或其他字符是不对的:其他字符是不对的:3 4(不对不对)3:4(不对不对) 如果

58、是如果是scanf(%d %d,&a,&b);输入时两个数据间应空输入时两个数据间应空 2个或更多的空格字符。如:个或更多的空格字符。如:10 34或或1034如果是如果是scanf(%d %d%d ,&h,&,&s);输入应该用以下形式:输入应该用以下形式:122336如果是如果是scanf(a=%d ,b=%d,c=%d ,&a,&b,&c);输入应为以下形式:输入应为以下形式:a=12,b=24,c=36这种形式为了使用户输入数据时添加必要的信息以这种形式为了使用户输入数据时添加必要的信息以帮助理解,不易发生输入数据的错误。帮助理解,不易发生输入数据的错误。(3) 在用在用“%c”格式输

59、入字符时,空格字符和格式输入字符时,空格字符和“转义转义字符字符”都作为有效字符输入:都作为有效字符输入:scanf(%c%c%c,&c1,&c2,&c3);如输入如输入a bc字符字符a送给送给c1,字符,字符 送给送给 c2,字符,字符b送给送给c3,因为,因为%c只要求读入一个字符,后面不需要用只要求读入一个字符,后面不需要用空格作为两个字符的间隔,因此空格作为两个字符的间隔,因此 作为下一个作为下一个字符送给字符送给c2。(4) 在输入数据时,遇以下情况时该数据认为结束。在输入数据时,遇以下情况时该数据认为结束。 遇空格,或按遇空格,或按“回车回车”或或“跳格跳格” (tab)键。键。

60、 按指定的宽度结束,如按指定的宽度结束,如“ =”,只取,只取3列。列。 遇非法输入。遇非法输入。如如scanf(%d%c%f,&a,&b,&c);若输入若输入1234a 1230.26 ab c 第一个数据对应第一个数据对应%d格式在输入格式在输入1234之后遇字母之后遇字母a,因此认为数值因此认为数值1234后已没有数字了,第一个数据到后已没有数字了,第一个数据到此结束,把此结束,把1234送给变量送给变量a。字符。字符a送给变量送给变量b,由于由于%c只要求输入一个字符,因此输入字符只要求输入一个字符,因此输入字符 a之后之后不需要加空格,后面的数值应送给变量不需要加空格,后面的数值应送

61、给变量 c。如果由。如果由于疏忽把本来应为于疏忽把本来应为 1230.26 错打成错打成123o.26 ,由于,由于123后面出现字母后面出现字母o,就认为该数值数据到此结束,就认为该数值数据到此结束,将将123送给送给c。C语言的格式输入输出的规定比较繁琐,用得不对就语言的格式输入输出的规定比较繁琐,用得不对就得不到预期的结果,而输入输出又是最基本的操作,得不到预期的结果,而输入输出又是最基本的操作,几乎每一个程序都包含输入输出,不少编程人员由几乎每一个程序都包含输入输出,不少编程人员由于掌握不好这方面的知识而浪费了大量调试程序的于掌握不好这方面的知识而浪费了大量调试程序的时间。因此我们做了

62、比较仔细的介绍,以便时间。因此我们做了比较仔细的介绍,以便在编程时有所遵循。但是,在学习本书时不必花在编程时有所遵循。但是,在学习本书时不必花许多精力去死抠每一个细节,重点掌握最常用的许多精力去死抠每一个细节,重点掌握最常用的一些规则即可。一些规则即可。其他部分可在需要时随时查阅。这部分的内容建议其他部分可在需要时随时查阅。这部分的内容建议自学和上机,教师不必在课堂上一一细讲。应当自学和上机,教师不必在课堂上一一细讲。应当通过编写和调试程序来逐步深入而自然地掌握输通过编写和调试程序来逐步深入而自然地掌握输入输出的应用。入输出的应用。4.7 顺序结构程序设计举例顺序结构程序设计举例下面介绍几个顺

63、序程序设计的例子。下面介绍几个顺序程序设计的例子。例例4.10输入三角形的三边长,求三角形面积。输入三角形的三边长,求三角形面积。为简单起见,设输入的三边长为简单起见,设输入的三边长 a、b、c能构成三角形。能构成三角形。从数学知识已知求三角形面积的公式为从数学知识已知求三角形面积的公式为其中其中s=(a+b+c)/2据此编写程序如下:据此编写程序如下:include ain()float a,b,c,s,area;scanf(%f ,%f,%f ,&a,&b,&c);s=10/2(a+b+c);area=s rt(s(s-a)(s-b)(s-c) ;printf(a=%7.2f , b=%7

64、.2f, c =%7.2f, s =%7.2fn ,a,b,c,s);printf(area=%7 2fn ,area);程序中第程序中第7行中行中sqrt()是求平方根的函数。由于要调是求平方根的函数。由于要调用数学函数库中的函数,必须在程用数学函数库中的函数,必须在程序的开头加一条序的开头加一条#include 命令,把头文件命令,把头文件“ math.h”包含到程序中来。请注意,以后凡在程序中要用到包含到程序中来。请注意,以后凡在程序中要用到数学函数库中的函数,都应当数学函数库中的函数,都应当“包含包含” math.h头头文件。文件。运行情况如下:运行情况如下:3,4,6a= 3.00

65、, b= 4.00 , c= 6.00 , s= 6.50area= 5 33例例4.11从键盘输入一个大写字母,要求改用小写字从键盘输入一个大写字母,要求改用小写字母输出。前面已介绍过大小写字母间转换的方法,母输出。前面已介绍过大小写字母间转换的方法,根据此思路编出下面的程序。根据此思路编出下面的程序。#include main() char cl ,c2;cl=getchar() ;printf(%c ,%dn ,cl,cl);c2=cl+32 ;printf(%c ,%dn ,c2,c2);运行情况如下:运行情况如下:aa,65a,97用用getchar 函数得到从键盘上输入的大写字母函

66、数得到从键盘上输入的大写字母 a,赋给字符变量赋给字符变量c1。将。将c1分别用字符形式分别用字符形式(a)和整数和整数形式形式(65)输出。再经过运算得到小写字母输出。再经过运算得到小写字母 a, 赋赋给字符变量给字符变量c2,将,将c2分别用字符形式分别用字符形式(a)和整数形和整数形式式(97)输出。输出。例例4.12求求ax2+bx+c=0 方程的根。方程的根。a,b,c由键盘输入,由键盘输入,设设b2-4ac 0。众所周知,一元二次方程式的根为众所周知,一元二次方程式的根为可以将上面的分式分为两项:可以将上面的分式分为两项:据此编写程序如下:据此编写程序如下:include ain(

67、);float a,b,c,disc ,x1,x2,p,;,;scanf(a=%f ,b=%f,c=%f ,&a,&b,&c);disc=b*b-4*a*c ;p=-b/(2*a);=srt(disc)/(2*a) ;x1=p+;x2=p-;printf(nnx1=%5.2fnx2=%5.2fn ,x1,x2);运行情况如下:运行情况如下:a=1,b=3,c=2x1=-100x2=-200注意程序中用了预处理命令注意程序中用了预处理命令include 。4.8习题习题4.1 C语言中的语句有哪几类语言中的语句有哪几类 ?C语句与其他语言中语句与其他语言中的语句有哪些异同的语句有哪些异同 ?4.

68、2 怎样区分表达式和表达式语句怎样区分表达式和表达式语句 ?C语言为什么要语言为什么要设表达式语句设表达式语句?什么时候用表达式,什么时候用表达什么时候用表达式,什么时候用表达式语句式语句?4.3 C语言为什么要把输入输出的功能作为函数,语言为什么要把输入输出的功能作为函数,而不作为语言的基本部分而不作为语言的基本部分 ?4.4 若若a=3,b=4,c=5,x=12,y=24,z=-36,u=51274 ,n=128765 ,c1=a,c2=b。想得到以下。想得到以下的输出格式和结果,请写出程序的输出格式和结果,请写出程序 (包括定义变量类型包括定义变量类型和设计输出和设计输出)。要求输出的结

69、果如下:要求输出的结果如下:a= 3 b= 4 c= 5x=1.200000 ,y=2.400000 ,z=-3.600000x+y= 3.60 y+z=-1.20 z+x=-2.40u= 51274 n= 128765c1=a or 97(ascii)c2=b or 98(ascii)4.5 请写出下面程序的输出结果:请写出下面程序的输出结果:main()int a=5,b=7;float x=67 8564, y=-789124;char c=a ;long n=1234567 ;unsigned u=65535 ;printf(%d%dn,a,b);printf(=n,a,b);prin

70、tf(%f ,%fn ,x,y);printf(%-10f ,%-10fn ,x,y);printf(%8.2f , %8.2f,%.4f,%.4f,?,?n,x,y,x,y,x,y);printf(%e , 2en ,x,y);printf(%c ,%d,%o,%xn ,c,c,c,c);printf(%ld ,%lo,%xn ,n,n,n);printf(%u ,%o,%x,%dn ,u,u,u,u);printf(%s ,%5.3sn ,coMputer,coMputer);4.6 用下面的用下面的scanf 函数输入数据,使函数输入数据,使 a=10,b=20,c1=a,c2=a,x=

71、1.5,y=-3.75,z=67.8 ,请问在,请问在键盘上如何输入数据键盘上如何输入数据 ?scanf(%c%c%f%f%*f,%f ,&a, &b,&c1, &c2, &x, &y, &z);3.7设圆半径设圆半径r=15,圆柱高圆柱高h=3,求圆周长、圆面积、圆球表面积、圆,求圆周长、圆面积、圆球表面积、圆球体积、圆柱体积。用球体积、圆柱体积。用 scanf 输入数据,输出计算输入数据,输出计算结果,输出时要求有文字说明,取小数点后结果,输出时要求有文字说明,取小数点后 2位数位数字。请编程序。字。请编程序。4.7 输入一个华氏温度,要求输出摄氏温度。公式输入一个华氏温度,要求输出摄氏温度。公式为为 c=5/9(f-32)输出要有文字说明,取输出要有文字说明,取 2位小数。位小数。

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 建筑/环境 > 施工组织

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号