第3章 简单的C程序设计_第1页
第3章 简单的C程序设计_第2页
第3章 简单的C程序设计_第3页
第3章 简单的C程序设计_第4页
第3章 简单的C程序设计_第5页
已阅读5页,还剩104页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第三章3.1 顺序程序设计举例顺序程序设计举例3.2 数据的表现形式及其运算数据的表现形式及其运算3.3 C语句语句3.4 数据的输入输出数据的输入输出3.1顺序程序设计举例顺序程序设计举例 例例3.1 有人用温度计测量出用华氏法表有人用温度计测量出用华氏法表示的温度示的温度(如如 F,今要求把它转换为以摄,今要求把它转换为以摄氏法表示的温度氏法表示的温度(如如 C) 。解题思路:找到二者间的转换公式解题思路:找到二者间的转换公式)32(95fcf代表华氏温度代表华氏温度,c代表摄氏温度代表摄氏温度3.1顺序程序设计举例顺序程序设计举例算法:算法:输入输入f的值的值输出输出c的值的值)32(9

2、5fc 例例3.1 有人用温度计测量出用华氏法表有人用温度计测量出用华氏法表示的温度示的温度(如如 F,今要求把它转换为以,今要求把它转换为以摄氏法表示的温度摄氏法表示的温度(如如 C) 。N-S图图3.1顺序程序设计举例顺序程序设计举例)32(95f#include int main ( ) float f,c; f=64.0; c=(5.0/9)*(f-32); printf(f=%fnc=%fn,f,c); return 0; 定义定义f和和c为单精度浮点型变量为单精度浮点型变量指定指定f的值的值计算计算c的值的值输出输出f和和c的的值值3.1顺序程序设计举例顺序程序设计举例 例例3.2

3、 计算存款利息。有计算存款利息。有1000元,想元,想存一年。有三种方法可选:存一年。有三种方法可选: (1)活期,年利率为活期,年利率为r1 (2)一年期定期,年利率为一年期定期,年利率为r2 (3)存两次半年定期,年利率为存两次半年定期,年利率为r3 请分别计算出一年后按三种方法所得到请分别计算出一年后按三种方法所得到的本息和。的本息和。3.1顺序程序设计举例顺序程序设计举例解题思路:确定计算本息和的公式。解题思路:确定计算本息和的公式。从数学知识可知:若存款额为从数学知识可知:若存款额为p0,则:,则:活期存款一年后本息和为:活期存款一年后本息和为: p1=p0(1+r1)一年期定期存款

4、,一年后本息和为:一年期定期存款,一年后本息和为: p2=p0(1+r2)两次半年定期存款,一年后本息和为:两次半年定期存款,一年后本息和为: ) 23+)(123+p0(1=p3rr3.1顺序程序设计举例顺序程序设计举例算法算法:输入输入p0,r1,r2,r3的值的值计算计算p1=p0(1+r1)计算计算p2=p0(1+r2)计算计算p3=p0(1+ )(1+ )输出输出p1,p2,p323r23r3.1顺序程序设计举例顺序程序设计举例#include int main ( ) float p0=1000, r1=0.0036,r2=0.0225, r3=0.0198, p1, p2, p3

5、; p1 = p0 * (1 + r1); p2 = p0 * (1 + r2); p3 = p0 * (1 + r3/2) * (1 + r3/2); printf(”%fn%fn%fn”,p1, p2, p3); return 0; 定义变量定义变量同时同时赋予初值赋予初值 数据类型是指数据的内在表现形式。通俗地说:数据类型是指数据的内在表现形式。通俗地说: 我们把数据在加工计算中的特征称为数据的类型。我们把数据在加工计算中的特征称为数据的类型。例如例如: : 工资工资, 成绩可进行算术运算成绩可进行算术运算, 具有一般数值的具有一般数值的特点特点, C语言中称为数值型语言中称为数值型,

6、可分为实型和整型。名可分为实型和整型。名字这种数据具有文字的特征字这种数据具有文字的特征, 在在C语言中称为字符型语言中称为字符型数据。数据。 C中的数据类型比较丰富中的数据类型比较丰富:1、 C的数据类型的数据类型短整型短整型int长整型长整型long单精度单精度float双精度双精度double数组数组结构体结构体共用体共用体(已淘汰已淘汰)浮点型浮点型整型整型字符型字符型char枚举枚举(已淘汰已淘汰)C的的数数据据类类型型1基本类型基本类型2构造类型构造类型3指针类型指针类型4空类型空类型voidC C语言提供了以下一些语言提供了以下一些数据类型数据类型: :1基本类型基本类型 基本数

7、据类型:整型、字符型、实型、枚举类型。其中,实型也称基本数据类型:整型、字符型、实型、枚举类型。其中,实型也称为浮点型,根据数据的精度分为单精度浮点型和双精度浮点型。基本数为浮点型,根据数据的精度分为单精度浮点型和双精度浮点型。基本数据类型最主要的特点是,其值不可以再分解为其它类型,它属于最基本据类型最主要的特点是,其值不可以再分解为其它类型,它属于最基本的类型。的类型。 (1)整型)整型 在在C语言中,整型数据可以用十进制、八进制和十六进制表示。其语言中,整型数据可以用十进制、八进制和十六进制表示。其中,八进制整数以中,八进制整数以0打头,十六进制整数以打头,十六进制整数以0 x打头。打头。

8、 1、 C的数据类型的数据类型(2)浮点型)浮点型 浮点型数据有两种表示方法:十进制小数表示法和指数表示法。浮点型数据有两种表示方法:十进制小数表示法和指数表示法。在指数表示法中,在指数表示法中,e或或E前面必须有数字且后面的数必须是整数。前面必须有数字且后面的数必须是整数。 说明:说明:十进制小数表示法中,小数点前面如果只有十进制小数表示法中,小数点前面如果只有0,则可以省,则可以省略略0。例如,。例如,0.123可以写作可以写作.123。 1、C的数据类型的数据类型(3)字符型)字符型 在在C语言中,字符型数据是利用一对单引号括起来的一个字符。语言中,字符型数据是利用一对单引号括起来的一个

9、字符。例如,例如,B、b、C、x、Y、n都是字符型数据。单引都是字符型数据。单引号只是为了表明该数据是字符型数据,与数值型数据(整型、浮点型号只是为了表明该数据是字符型数据,与数值型数据(整型、浮点型等)区别。注意,等)区别。注意,B和和b是两个不同的字符。是两个不同的字符。 在在C语言中,还有一种特殊的字符语言中,还有一种特殊的字符转义字符。转义字符是以转义字符。转义字符是以反斜杠反斜杠开头的字符,例如,程序中出现的换行符开头的字符,例如,程序中出现的换行符n就是转义字就是转义字符。符。 1、C的数据类型的数据类型 在在C语言中,还有一种数据语言中,还有一种数据字符串。字符串。C语言中的数据

10、类型中并没有语言中的数据类型中并没有专门的字符串型,字符串数据是由多个字符型数据构成的数据。字符串专门的字符串型,字符串数据是由多个字符型数据构成的数据。字符串数据使用一对双引号括起来。数据使用一对双引号括起来。 例如,例如,” ”、”nwuchenrui”、”123”、”northwest”、”pku”都是字符串。都是字符串。 注意:字符串数据中不允许出现双引号(注意:字符串数据中不允许出现双引号(”)和反斜杠()和反斜杠()。)。1、C的数据类型的数据类型 2构造类型构造类型 构造类型是由用户自己定义的数据类型,将在第10章介绍。构造类型包括数组类型、结构体类型和联合体类型。 3指针类型指

11、针类型 指针类型是一种特殊的类型,它是表示地址的数据类型。指针是C语言的灵魂,利用指针可以很方便地访问内存中的数据,大大提高程序的执行效率,编程更加灵活。 4空类型空类型 空类型表示数据的类型为空,通常被用在指针类型的转换。 1、C的数据类型的数据类型v 程序设计中,每个要使用的变量都要事程序设计中,每个要使用的变量都要事 先指定它的数据类型!先指定它的数据类型!1不同类型的数据在内存中占据不同长度的存储区。不同类型的数据在内存中占据不同长度的存储区。2不同类型的数据取值范围不同。不同类型的数据取值范围不同。3不同类型的数据有不同的操作。不同类型的数据有不同的操作。为什么要指定数据类型为什么要

12、指定数据类型? 因此要求在使用数据之前因此要求在使用数据之前, 必须对必须对数据的类型进行说明数据的类型进行说明, 即通知编译系即通知编译系统统, 以便为其分配相应的存储单元以便为其分配相应的存储单元。什么是标识符:什么是标识符: 程序中要用到多个的变量、函数、文件、符号程序中要用到多个的变量、函数、文件、符号常量等常量等, , 每个对象要有一个名字每个对象要有一个名字, , 以便区分以便区分, , 这这些名字统称为标识符。些名字统称为标识符。 标识符中只能使用英文字母,数字和下化线,标识符中只能使用英文字母,数字和下化线,且只能且只能注意:注意:C语言区分大小写!语言区分大小写!定义标识符时

13、,定义标识符时,尽量采用好记忆的单词。尽量采用好记忆的单词。 :Price 、 price、PRICE, 又如:又如:sum比比s好记一些。好记一些。 关键字又叫保留字关键字又叫保留字, 是是C编译系统已规定某些标编译系统已规定某些标识符有特定含义,用户只能按规定使用。在程序中识符有特定含义,用户只能按规定使用。在程序中定义标识符时定义标识符时, 。 程序运行过程中不能被改变的量。程序运行过程中不能被改变的量。 如程序中:如程序中: 20 整型常量整型常量 15.8 浮点型常量浮点型常量 a 字符常量字符常量直接常量直接常量 在程序中,为了书写方便,用标识符代表一个在程序中,为了书写方便,用标

14、识符代表一个常量。常量。#define 标识符标识符 字符串字符串 可事先规定可事先规定PRICE=30, 在程序中所有在程序中所有PRICE均代表均代表30是个常量,是个常量,PRICE的值在程序执行时不的值在程序执行时不能改变。能改变。#define PRICE 30#include void main ( ) int num, total; num=10; total=num * PRICE; printf(total=%dn,total); 程序中用程序中用#define命令行定义命令行定义PRICE代表常量代表常量30,此后凡在本此后凡在本文件中出现的文件中出现的PRICE都代表都代

15、表30,可以和常量一样进行运算可以和常量一样进行运算用一个标识符代表一个常量的用一个标识符代表一个常量的,称为符号常量称为符号常量,即以标识符形式出即以标识符形式出现的常量。符号常量的值在其作用域现的常量。符号常量的值在其作用域(在本例中为主函数在本例中为主函数)内不能改内不能改变变,也不能再被赋值。也不能再被赋值。 如再用赋值语句给如再用赋值语句给PRICE赋值是错误的。赋值是错误的。 PRICE=40; /* 错误,不能给符号常量赋值。错误,不能给符号常量赋值。 运行结果: total=300例 符号常量的使用 例例 1. 开头的均被称为开头的均被称为预编译命令,功能:在编预编译命令,功能

16、:在编译之前完成指定的工作;译之前完成指定的工作; 说明:说明: 2. 预处理命令在程序中的位置只要遵循先声明预处理命令在程序中的位置只要遵循先声明后使用的原则即可;后使用的原则即可; 3. 每条命令必须每条命令必须,因其不是语句,故,因其不是语句,故尾部尾部,也,也; 4. define命令又被称为宏替换命令,功能:在命令又被称为宏替换命令,功能:在编译之前将程序中的标识符替换成字符串,然后编译之前将程序中的标识符替换成字符串,然后再将程序翻译成二进制,故命令中的标识符又被再将程序翻译成二进制,故命令中的标识符又被称为宏名,优点:称为宏名,优点:“一改全改一改全改”; 5. 为了与变量区分,

17、一般符号常量用为了与变量区分,一般符号常量用表示;表示; 6. 在在define命令中可以使用一个已定义过的宏名。命令中可以使用一个已定义过的宏名。说明:说明:程序执行过程中可以改变它的值。程序执行过程中可以改变它的值。1、每个变量要按标识符的规定、每个变量要按标识符的规定命名变量名。;命名变量名。;2、变量在使用前必须先要声明。、变量在使用前必须先要声明。3、在程序执行过程中,变量中的值可、在程序执行过程中,变量中的值可改变改变,若,若 数据与变量类型不同,则系统将数据按变量数据与变量类型不同,则系统将数据按变量 类型类型转换转换后,再存入变量。后,再存入变量。程序运行期间,值可以被改变的量

18、称为程序运行期间,值可以被改变的量称为变量变量 1、每个变量在使用前必须先声明,目的是通知系、每个变量在使用前必须先声明,目的是通知系统给变量按指定的类型,在统给变量按指定的类型,在内存中内存中分配相应的字节分配相应的字节数(存储单元),在程序执行时才能存入数据。数(存储单元),在程序执行时才能存入数据。声明变量的格式声明变量的格式类型符说明符类型符说明符 变量名变量名1,变量,变量2 ;类型符类型符: 代表存储单元的字节数代表存储单元的字节数3、整型数据、整型数据数据在内存中是以数据在内存中是以“二进制数的补码二进制数的补码”形式存放的。形式存放的。ANSI C标准定义的整型类型类型Bit数

19、有效表示范围(E ,e 表示表示10)实型数据在内存中是以实型数据在内存中是以“尾数尾数”和和“阶码阶码”的形式存放的。的形式存放的。控控制制字字符符n回车换行回车换行(光标移到下一行第一列光标移到下一行第一列)10t水平制表水平制表 (光标移到下一个光标移到下一个Tab位置位置)9b退格退格(光标移回到同一行前一列光标移回到同一行前一列)8r回车回车(光标移到同一行第一列光标移到同一行第一列)13f换页换页(光标移到下一页开头光标移到下一页开头)12特殊特殊标点标点符号符号反斜杠字符反斜杠字符 “”92单引号单引号(撇号撇号)字符字符 39“双引号字符双引号字符 “34所有所有字符字符ddd

20、1到到3位位8进制数所代表的字符进制数所代表的字符0-255xhh1到到2位位16进制数所代表的字符进制数所代表的字符0-255自动在每一个字符串常量的结尾加一个自动在每一个字符串常量的结尾加一个以便系统据此判断字符串是否结束。以便系统据此判断字符串是否结束。3.2.7 运算符和表达式运算符和表达式1.基本的算术运算符基本的算术运算符:+ :正号运算符正号运算符(单目运算符单目运算符) - :负号运算符负号运算符(单目运算符单目运算符)* :乘法运算符乘法运算符/ :除法运算符除法运算符% :求余运算符求余运算符+ :加法运算符加法运算符 - :减法运算符减法运算符3.2.7 运算符和表达式运

21、算符和表达式说明说明两个整数相除的结果为整数两个整数相除的结果为整数u如如5/3的结果值为,舍去小数部分的结果值为,舍去小数部分u如果除数或被除数中有一个为负值,舍入方向如果除数或被除数中有一个为负值,舍入方向不固定不固定。例如,例如,-5/3,有的系统中得到的结果,有的系统中得到的结果为为-1,在有的系统中则得到结果为,在有的系统中则得到结果为-2 如如5/3=1,-5/3=-1,取整后向零靠拢,取整后向零靠拢% 运算符要求参加运算的运算对象运算符要求参加运算的运算对象(即操作数即操作数)为为整数,结果也是整数。如整数,结果也是整数。如8%3,结果为,结果为23.2.7 运算符和表达式运算符

22、和表达式2. 自增、自减运算符自增、自减运算符:作用是使变量的值或减作用是使变量的值或减u+i,-i:在使用在使用i之前,先使之前,先使i的值加(减)的值加(减)1ui+,i-:在使用在使用i之后,使之后,使i的值加(减)的值加(减)13.2.7 运算符和表达式运算符和表达式3. 算术表达式和运算符的优先级与结合性算术表达式和运算符的优先级与结合性:用算术运算符和括号将运算对象(也称操作用算术运算符和括号将运算对象(也称操作数)连接起来的、符合语法规则的式子,数)连接起来的、符合语法规则的式子,称为算术表达式称为算术表达式运算对象包括常量、变量、函数等运算对象包括常量、变量、函数等语言规定了运

23、算符的优先级语言规定了运算符的优先级和和结合性结合性3.2.7 运算符和表达式运算符和表达式4.不同类型数据间的混合运算不同类型数据间的混合运算:(1)+、-、*、/ 运算的两个数中有一个数为运算的两个数中有一个数为float或或double型,结果是型,结果是double型型。系统将系统将float型数据型数据都先转换为都先转换为double型,然后进行运算型,然后进行运算(2) 如果如果int型与型与float或或double型数据进行运算,先把型数据进行运算,先把int型和型和float型数据转换为型数据转换为double型,然后进行运型,然后进行运算,结果是算,结果是double型型(

24、3)字符型数据与整型数据进行运算,就是把字符的字符型数据与整型数据进行运算,就是把字符的ASCII代码与整型数据进行运算代码与整型数据进行运算3.2.7 运算符和表达式运算符和表达式 例例3.3 给定一个大写字母,要求用小写给定一个大写字母,要求用小写字母输出。字母输出。解题思路:解题思路:u关键是关键是找到大找到大、小写字母间小写字母间的的内在联系内在联系u同一个字母,用小写表示的字符的同一个字母,用小写表示的字符的ASCII代代码比用大写表示的字符的码比用大写表示的字符的ASCII代码大代码大323.2.7 运算符和表达式运算符和表达式#include int main ( ) char

25、c1,c2; c1=A; c2=c1+32; printf(%cn,c2); printf(”%dn”,c2); return 0;将字符将字符A的的ASCII代码代码65放到放到c1中中将将65+32的的结果结果放到放到c2中中用字符形式输出用字符形式输出用十进制形式输出用十进制形式输出3.2.7 运算符和表达式运算符和表达式5. 强制类型转换运算符强制类型转换运算符强制类型转换运算符强制类型转换运算符的的一般形式为一般形式为 (类型名)(表达式)(类型名)(表达式)u(double)a (将转换成(将转换成double类型)类型)u(int) (x+y) (将(将x+y的值转换成的值转换成

26、int型)型) u(float)(5%3)(将(将5%3的值转换成的值转换成float型)型)有两种类型转换有两种类型转换u系统自动进行的类型转换系统自动进行的类型转换u强制类型转换强制类型转换3.2.7 运算符和表达式运算符和表达式6.运算符运算符(1) 算术运算符算术运算符 (+ - * / % + -)(2) 关系运算符关系运算符 ( !)!)(3) 逻辑运算符逻辑运算符 (!(! |)(4) 位运算符位运算符 ( | )(5) 赋值运算符赋值运算符 (及其扩展赋值运算符)(及其扩展赋值运算符)(6) 条件运算符条件运算符 (?:)(?:)3.2.7 运算符和表达式运算符和表达式6.运算

27、符运算符(7) 逗号运算符逗号运算符 (,),)(8) 指针运算符指针运算符 (*和)和)(9) 求字节数运算符求字节数运算符 (sizeof)(10) 强制类型转换运算符强制类型转换运算符 ( (类型类型) )(11) 成员运算符成员运算符 (.-)(12) 下标运算符下标运算符 ( )(13) 其他其他 (如函数调用运算符()(如函数调用运算符()3.3 C语句语句 在在C C语言中,大多数的操作运算都是通过表达式来实现的。语言中,大多数的操作运算都是通过表达式来实现的。表达式后加一个分号组成表达式语句。表达式后加一个分号组成表达式语句。 C语句有下面的几种类型语句有下面的几种类型1、控制

28、语句、控制语句2、函数调用语句、函数调用语句3、表达式语句、表达式语句4、空语句、空语句5、复合语句等、复合语句等简单语句简单语句( (一一) )控制语句控制语句 完成一定的控制功能完成一定的控制功能1 if() else 条件语句 6 break 间断语句 2 for() 循环语句 7 switch() 开关语句3 while()循环语句 8 goto 转向语句 4 do while();循环语句 9 return 返回语句5 continue 继续语句在在C程序中,最常用的语句是:程序中,最常用的语句是:u赋值语句赋值语句u输入输出语句输入输出语句3.4.1例例3.5 求求 方程的根。方程

29、的根。 设设 。02cbxaxacb42 解题思路:首先要知道求方程式的根的方法。解题思路:首先要知道求方程式的根的方法。 由数学知识已知:如果由数学知识已知:如果 0,则一元二次方程有两个,则一元二次方程有两个实根实根:acb42aacbbx2421aacbbx2422abp2aacbq242若记若记qpx1qpx2#include #include int main ( ) double a,b,c,disc,x1,x2,p,q; scanf(%lf%lf%lf,&a,&b,&c); disc=b*b-4*a*c; p=-b/(2.0*a); q=sqrt(disc

30、)/(2.0*a); x1=p+q; x2=p-q; printf(x1=%7.2fnx2=%7.2fn,x1,x2); return 0;程序中程序中调用数学函数调用数学函数sqrt输入输入a,b,c的值的值#include #include int main ( ) double a,b,c,disc,x1,x2,p,q; scanf(%lf%lf%lf,&a,&b,&c); disc=b*b-4*a*c; p=-b/(2.0*a); q=sqrt(disc)/(2.0*a); x1=p+q; x2=p-q; printf(x1=%7.2fnx2=%7.2fn,x1

31、,x2); return 0;输入的是双输入的是双精度型实数精度型实数#include #include int main ( ) double a,b,c,disc,x1,x2,p,q; scanf(%lf%lf%lf,&a,&b,&c); disc=b*b-4*a*c; p=-b/(2.0*a); q=sqrt(disc)/(2.0*a); x1=p+q; x2=p-q; printf(x1=%7.2fnx2=%7.2fn,x1,x2); return 0;要求输入要求输入3个实数个实数自动自动转成实数转成实数后赋给后赋给a,b,c#include #include

32、 int main ( ) double a,b,c,disc,x1,x2,p,q; scanf(%lf%lf%lf,&a,&b,&c); disc=b*b-4*a*c; p=-b/(2.0*a); q=sqrt(disc)/(2.0*a); x1=p+q; x2=p-q; printf(x1=%7.2fnx2=%7.2fn,x1,x2); return 0;输出输出数据占数据占7列,其中小数占列,其中小数占2列列3.4.2 有关数据输入输出的概念有关数据输入输出的概念(1) 语言本身不提供输入输出语句语言本身不提供输入输出语句 输入和输出操作是由输入和输出操作是由C标

33、准函数库中的函数来实现的标准函数库中的函数来实现的 printf和和scanf不是语言的关键字,而只是库函数的名字不是语言的关键字,而只是库函数的名字 putchar、getchar、puts、gets(2)在使用在使用输入输出输入输出函数时,要在程序文件的开头用预编译指令函数时,要在程序文件的开头用预编译指令 #include 或或 #include stdio.h3.4 .3 用用printf函数输出数据函数输出数据 函数作用:向终端输出若干个任意类型的数据。 一般格式:printf(格式控制,输出表列)%d%d: :以带符号的十进制形式输出整数以带符号的十进制形式输出整数%o%o: :以

34、八进制无符号形式输出整数以八进制无符号形式输出整数%x%x: :以十六进制无符号形式输出整数以十六进制无符号形式输出整数To be continuedTo be continued%u%u: :以无符号十进制形式输出整数以无符号十进制形式输出整数%c%c: :以字符形式输出,只输出一个字符以字符形式输出,只输出一个字符%s%s: :输出字符串输出字符串%f%f: :以小数形式输出单,双精度数,隐含输出六位小数以小数形式输出单,双精度数,隐含输出六位小数%e%e: :以指数形式输出实数以指数形式输出实数%g%g: :选用选用%f%f或或%e%e格式中输出宽度较短的一种格式,不输格式中输出宽度较短

35、的一种格式,不输 出无意义的出无意义的0 0几种常见的格式符的修饰符:L:用于长整型整数,可加在格式符d,o,x,u前面M(正整数):数据最小宽度N(正整数):对实数实数,表示输出n位小数;对字符串字符串,表示截取的字符个数;“” :输出的数字或字符在域内向左靠。3.4 格式输入与输出(续)格式输入与输出(续) (1)%格式符格式符:用来输出十进制整数。几种用法:几种用法: :按十进制整型数据的实际长度输出。 :为指定的输出字段的宽度。如果数据的位数小于,则左端补以空格;若大于,则按实际位数输出。 (“” :输出的数字或字符在域内向左靠) :输出长整型数据。 例:例:#includevoid

36、main()int a=12;printf(c=%d,%6d,%-6dn,a,a,a);(2) %格式符格式符:以八进制整数形式输出。以八进制整数形式输出。输出的数值不带符号,符号位也一起作为八进制数的一部分输出。输出的数值不带符号,符号位也一起作为八进制数的一部分输出。例:例:int a=-1; printf(“%d,%o”,a,a); -1在内存单元中的存放形式(以补码形式存放)如下: 输出为: -1,177777不会输出带负号的八进制整数。对长整数(long型)可以用“lo”格式输出。还可以指定字段宽度,例:例:printf(“%8o“,a); 输出为: 177777 (数字前有2个空格

37、)1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1(3)%x格式符格式符。以十六进制数形式输出整数。 同样不会出现负的十六进制数。同样不会出现负的十六进制数。例:int a=-1; printf(“%x,%o,%d”a,a,a); 输出结果为: ffff,177777,-1可以用“lx”输出长整型数,也可以指定输出字段的宽度例: “12”#includevoid main()int a,b;a=16,b=-1;printf(%xn,a);printf(%xn,b);(4)%格式符格式符,用来输出unsigned型数据.一个有符号整数(int型)也可以用u格式输出;一个unsign

38、ed型数据也可以用d格式输出。unsigned型数据也可用o或x格式输出。(5)%格式符格式符,用来输出一个字符。如:char da; printf(”%c”,d); 输出字符a 一个整数,只要它的值在0255范围内,可以用”%c”使之按字符形式输出,在输出前,系统会将该整数作为ASCII码转换成相应的字符;一个字符数据也可以用整数形式输出。 注意注意:输出的数值不带符号,负数符号位输出时被认为是数值位。例: 字符数据的输出。#includevoid main()char c=a;int i=97;printf(“%c,%dn”,c,c);printf(“%c,%dn”,i,i); 运行结果:

39、运行结果:a,97a,97a,97a,97指定输出字数的宽度,指定输出字数的宽度,printf(“%3c”,c);printf(“%3c”,c);则输出:则输出: a a(6)%s格式符:格式符:输出字符串 %s。例如:printf(“%s”,“CHINA”); 输出字符串“CHINA”(不包括双引号)。 %ms,输出的字符串占m列,若串长大于m,则全部输出,若串长 小于m,则左补空格。 %-ms,若串长小于m,字符串向左靠,右补空格。 %m.ns,输出占m列,只取字符串中左端n个字符,输出在m列的 右侧,左补空格。 %-m.ns,n个字符输出在m列的左侧,右补空格,若nm,m自 动取n值。(

40、7)%f格式符格式符:用来以小数形式输出实数 %f:不指定字段宽度,由系统自动指定字段宽度,使整数部分全部输出,并输出位小数。应当注意,在输出的数字中并非全部数字都是有效数字。单精度实数的有效位数为位。%m.nf:指定输出的数据共占列,其中有位小数。如果数值长度小于,则左端补空格。%-m.nf与%m.nf基本相同,只是使输出的数值向左端靠,右端补空格。 单精度实数的有效位数为7位。例例: : 输出实数时的有效位数。#include void ()float x,y;x=111111.111;y=222222.222;printf(“%f”,x+y);运行结果:运行结果:. 例:输出双精度数时的

41、有效位数。#include void main()double x,y;x=1111111111111.111111111; y=2222222222222.222222222;printf(“%f”,x+y);运行结果:3333333333333.333010 例:输出实数时指定小数位数。#include void main()float f=123.456;printf(“%f,%10f,%10.2f,%.2f,%-10.2fn”,f,f,f,f,f);可用以下形式: %e:不指定输出数据所占的宽度和数字部分的小数位数。例: printf(“%e”,123,456);输出:输出: 1.23

42、4560 e=002 6列 5列所输出的实数共占13列宽度。(注:不同系统的规定略有不同) (8)格式符格式符,以指数形式输出实数。 %m.ne和%m.ne。m、n和“-”字符的含义与前相同。 此处n指拟输出的数据的小数部分(又称尾数)的小数位数。 若f=123.456,则:printf(“%e %10e %10.2e %.2e %-10.2e”,f,f,f,f,f);输出如下:1.234560e+002 1.234560e+002 1.23e+002 1.23e+002 13列 13列 10列 9列 1.23e+002 10列说明:未指定n,自动使n=6.超过给定的10列,乃突破10列的限制

43、,按实际长度输出。第3个数据共占10列,小数部分占2列。只指定n=2,未指定m,自动使m等于数据应占的长度。第5个数据应占10列,数值只有9列,由于是“%-10.2e”,数值向左靠,右补一个空格。(注:有的C系统的输出格式与此略有不同) (9)格式符:用来输出实数 根据数值的大小,自动选格式或格式(选择输出时占宽度较小的一种),且不输出无意义的零。例:若f=123.468,则printf(”%f%e%g”,f,f,f);输出如下:123.468000 1.234680e+002 123.468 10列 13列 10列说明:用%f格式输出占10列,用%e格式输出占13列,用%g格式时,自动从上面

44、两种格式中选择短者(今以%f格式为短)故占10列,并按%f格式用小数形式输出,最后3个小数位为无意义的,不输出,因此输出123.468,然后右补3个空格。%g格式用得较少。说明:说明: 除了除了X,E,G外,其他各式字符必须用小写。外,其他各式字符必须用小写。 可以在可以在printf函数中的函数中的“格式控制格式控制”字符串中包含转字符串中包含转义字符。义字符。 一个格式说明必须以一个格式说明必须以“%”开头,以开头,以9个格式字符之个格式字符之一为结束,中间可以插入附加格式字符。一为结束,中间可以插入附加格式字符。 想输出想输出%,则应该在格式控制字符串中用连续两个,则应该在格式控制字符串

45、中用连续两个%表示。表示。3.4.4 用用scanf函数输入数据函数输入数据(一)(一). .scanfscanf函数函数函数作用:按照变量在内存的地址将变量值存进去。函数作用:按照变量在内存的地址将变量值存进去。一般格式:一般格式:scanfscanf(格式控制,(格式控制,地址地址列表)列表)同同printf函数函数由若干个地址组成的表列,变量的地址,或字符串的首地址由若干个地址组成的表列,变量的地址,或字符串的首地址(二)(二). scanf函数中的格式声明函数中的格式声明与与printf函数中的格式声明相似函数中的格式声明相似,以开始以开始,以以一个格式字符结束,中间可以插入附加的字符

46、一个格式字符结束,中间可以插入附加的字符。例如:例如:scanf(a=%f,b=%f,c=%f,&a,&b,&c);使用使用scanf函数时应注意的问题函数时应注意的问题 :(1)scanf函数中的“格式控制”后面是变量地址,而不变量名。 (2) 如果在“格式控制”字符串中除了格式说明以外还有其他字符, 则在输入数据时在对应位置应输入与这些字符相同的字符。 (3) 在用“”格式输入字符时,空格字符和“转义字符”都作为 有效字符输入 (4) 在输入数据时,遇以下情况时认为该数据结束。 遇空格,或按“回车”或“跳格”(Tab)键; 按指定的宽度结束,如“”,只取列; 遇非法

47、输入。scanf (”%f%f%f”,a,b,c); 错错scanf (”%f%f%f”,&a,&b,&c);对对使用使用scanf函数时应注意的问题函数时应注意的问题 :(1)scanf函数中的“格式控制”后面是变量地址,而不变量名。 (2) 如果在“格式控制”字符串中除了格式说明以外还有其他字符, 则在输入数据时在对应位置应输入与这些字符相同的字符。 (3) 在用“”格式输入字符时,空格字符和“转义字符”都作为 有效字符输入 (4) 在输入数据时,遇以下情况时认为该数据结束。 遇空格,或按“回车”或“跳格”(Tab)键; 按指定的宽度结束,如“”,只取列; 遇非法输

48、入。 scanf(a=%f,b=%f,c=%f,&a,&b,&c); 1 3 2 错错 a=1,b=3,c=2 对对 a=1 b=3 c=2 错错使用使用scanf函数时应注意的问题函数时应注意的问题 :(1)scanf函数中的“格式控制”后面是变量地址,而不变量名。 (2) 如果在“格式控制”字符串中除了格式说明以外还有其他字符, 则在输入数据时在对应位置应输入与这些字符相同的字符。 (3) 在用“”格式输入字符时,空格字符和“转义字符”都作为 有效字符输入 (4) 在输入数据时,遇以下情况时认为该数据结束。 遇空格,或按“回车”或“跳格”(Tab)键; 按指定的宽度

49、结束,如“”,只取列; 遇非法输入。scanf(”%c%c%c”,&c1,&c2,&c3); abc 对对 a b c 错错 (4) 在输入数据时,遇以下情况时认为该数据结束。 遇空格,或按“回车”或“跳格”(Tab)键; 按指定的宽度结束,如“”,只取列; 遇非法输入(不属于数值的字符)。 例如:例如:scanf (”%d%c%f”,&a,&b,&c);若输入若输入 1234a123o.26 使用使用scanf函数时应注意的问题函数时应注意的问题 : (4) 在输入数据时,遇以下情况时认为该数据结束。 遇空格,或按“回车”或“跳格”(Tab)键

50、; 按指定的宽度结束,如“”,只取列; 遇非法输入(不属于数值的字符)。 例如:例如:scanf (”%d%c%f”,&a,&b,&c);若输入若输入 1234a123o.26 使用使用scanf函数时应注意的问题函数时应注意的问题 : (4) 在输入数据时,遇以下情况时认为该数据结束。 遇空格,或按“回车”或“跳格”(Tab)键; 按指定的宽度结束,如“”,只取列; 遇非法输入(不属于数值的字符)。 例如:例如:scanf (”%d%c%f”,&a,&b,&c);若输入若输入 1234a123o.26 使用使用scanf函数时应注意的问题函数时应注意的问题 :3.4.5 字符数据的输入输出字符数据的输入输出1.用用putchar函数从计算机向显示器输出一个字符函数从计算机向显示器输出一个字符(1)调用形式:)调用形式: putchar(c)(2)功能:)功能:在屏幕上输出一个字符;在屏幕上输出一个字符;(3)如果)如果putchar函数的参数是整

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论