第二章 数据类型、运算符与表达式 、赋值语句、输入输出

53
第第第 第第第第 第第第第第第第 第第第第第 第第第第 、、 本本本本 本本本 本本本本本本 ,一 本本本本本本本本本本 本本本本本 本本本 () 本本本

Upload: jolene-ramirez

Post on 30-Dec-2015

156 views

Category:

Documents


0 download

DESCRIPTION

第二章 数据类型、运算符与表达式 、赋值语句、输入输出. 本质上讲,任何一个程序都是由 待处理的数据 和 一系列处理它们的指令(操作) 组成的。. C 语言的词法单位可分成 6 类: 1 .关键词 2 .标识符 3 .常量 4 .字符串 5 .运算符 6 .分割符. 【 例 2.1】C 语言的一个简单例子。 #include main() { int a,b,sum; printf(”Enter two numbers:”); - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: 第二章  数据类型、运算符与表达式 、赋值语句、输入输出

第二章 数据类型、运算符与表达式 、赋值语句、输入输出

本质上讲,任何一个程序都是由待处理的数据和一系列处理它们的指令(操作)组成的。

Page 2: 第二章  数据类型、运算符与表达式 、赋值语句、输入输出

C 语言的词法单位可分成 6 类: 1 .关键词 2 .标识符 3 .常量 4 .字符串 5 .运算符 6 .分割符

Page 3: 第二章  数据类型、运算符与表达式 、赋值语句、输入输出

【例 2.1 】 C 语言的一个简单例子。 #include <stdio.h> main() { int a,b,sum; printf(”Enter two numbers:”); scanf(”%d%d”,&a,&b); sum=a+b+6; printf(”The sum is %d\n”,sum); }

Page 4: 第二章  数据类型、运算符与表达式 、赋值语句、输入输出

• 其中: int 是关键词,• sum 是标识符,• 6 是常量,• “Enter two numbers” 是字符串,• + 是运算符,• ( 是分割符。

Page 5: 第二章  数据类型、运算符与表达式 、赋值语句、输入输出

关键字: auto break case char const continue default do double else enum extern float for goto if int long register return short signed sizeof static struct switch typedef union unsigned void volatile while

注:( 1 )关键字在一门语言中具有特殊含义,用户不能另作它用。( 2 )准关键字:也有固定含义,如 : 库函数名、预处理命令,用户可作它用,但将失去原先含义,不建议这么做。

Page 6: 第二章  数据类型、运算符与表达式 、赋值语句、输入输出

• 标识符:是用户自行定义的符号 , 用来标识常量、变量、函数、标号等。

• 命名规则:命名规则:• 由字母或下划线开头,后跟零个或多个字母、下划线和数字

的符号序列。• 1 、不能是 C 的关键字• 2 、第一个字符必须是字母或下划线• 3 、中间不能有空格。• 4 、长度一般不超过 32 个字符。• 5 、大小写敏感。• 6 、标识符命名应该遵循见名知义的原则 。• MyAge, myage• * 所有标识符必须先定义 / 说明而后使用

Page 7: 第二章  数据类型、运算符与表达式 、赋值语句、输入输出

• 分隔符:• [ ] ( ) { } * . : = ; #

• 分隔符用于分隔各种词法记号。

Page 8: 第二章  数据类型、运算符与表达式 、赋值语句、输入输出

2.2 C 的数据类型

1. 数据结构:数据的组织形式。不同语言所允许定义和使用的数据结构是不同的。

2. 处理同一类问题,如果数据结构不同,算法也会不同,应当综合考虑算法和数据结构。

3. C 语言的数据结构是以数据类型形式出现的。

4. C 语言的数据类型

Page 9: 第二章  数据类型、运算符与表达式 、赋值语句、输入输出

空类型指针类型

共用体类型结构体类型数组类型

构造类型

枚举类型双精度型单精度型

实型(浮点型)

字符型整型

基本类型

数据类型

Page 10: 第二章  数据类型、运算符与表达式 、赋值语句、输入输出

2.3 常量与变量

C 语言中数据有常量和变量之分。它们分别属于C 语言所定义的各种数据类型。 1 常量和符号常量 常量:在程序运行过程中,其值不能被改变的量。

常量的数据类型一般从其字面形式即可判断。常量又叫字面常量或直接常量。

例: 12 , 0 , -3 (整型常量)

5.62 -125.8 (实型常量)

‘a’ ‘c’ ‘1’ ‘3’ (字符常量)

“I love China!” “258” (字符串常量)

Page 11: 第二章  数据类型、运算符与表达式 、赋值语句、输入输出

符号常量:一个常量用一个标识符代表时,叫符号常量 .

定义符号常量的方法: #define 标识符 常量值

例: #define pi 3.1415926

注:

A) 在程序中凡是出现符号常量的地方均用其所代表的值参加运算。

B) 符号常量在其作用域内其值不能改变,也不能再赋值。(它不是变量)

C) 使用符号常量的好处 : 见名知义(增强可读性)、减少书写出错的机会,一改全改

#define PI 3.1415926main(){int r=3; float s,v; s=PI*r*r; v=PI*r*r*r; printf(“s=%f,v=%f”,s,v);}

Page 12: 第二章  数据类型、运算符与表达式 、赋值语句、输入输出

2 变量 变量:在程序运行中,其值可以改变的量。 注:

( 1 )每一个变量均用一个标识符表示,叫变量名。

( 2 )标识符:用来标识变量名、符号常量名、函数名、数组名、类型名、文件名等的有效字符序列称为标识符。

a) C 语言规定标识符只能由字母、数字和下划线组成,且第一个字符必须是字母或下划线。

b) 标识符区分大小写。

c) turbo c 允许标识符长度最大为 32 个字符,但最好不要超过 8 个字符。

d) 标识符命名应该遵循见名知义的原则 。

Page 13: 第二章  数据类型、运算符与表达式 、赋值语句、输入输出

( 3 )每个变量实际上对应内存中一定的存储单元,存储单元存储的值叫变量值,实际参加运算的是变量名所对应的存储单元的值,即变量值。

( 4 ) C 语言规定程序中使用的所有变量必须先定义后使用。

( 5 )变量定义的目的是为变量分配存储单元,并规定存储数据的类型,以保证程序中变量名使用得正确,检查该变量所进行的运算是否合法。

125

a变量名

变量值

存储单元0xfefae04

变量示意图:

Page 14: 第二章  数据类型、运算符与表达式 、赋值语句、输入输出

整型数据 1 .整型常量的表示方法

( 1 )十进制整数 : 如: 89 , -520 (数码: 0~9 )

( 2 )八进制整数:以 0 开头。如: 012 -011

(数码: 0~7 )

( 3 )十六进制整数:以 0x 或 0X 开头。如: 0x23,0x1f,0XA3B

(数码: 0~9 a~f )

100 1100100

0x64

100 1100100

0144

除 2 取余乘 2i-1

除 8 取余乘 8i-1

除 16 取余乘 16i-1

Page 15: 第二章  数据类型、运算符与表达式 、赋值语句、输入输出

2 .整型变量 ( 1 )整型数据在内存中的存放形式

以二进制的补码形式存放。(正数的补码与其原码形式相同,负数的补码为它的绝对值的原码按位取反加 1 ,符号位正数为 0 ,负数为 1 。)

int i;

i=10; 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0

15 0

1 1 1 1 1 1 1 1 1 1 1 1 0 1 0 1

1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 0

10 的原码

-10 的补码

取反

+1

( 2 )整型的分类 见 p9 表 2.1int

Unsignedlong

Page 16: 第二章  数据类型、运算符与表达式 、赋值语句、输入输出

( 3 )整型变量的定义 C 规定程序中所用到的变量必须强制类型定义,一般是在函数的声

明部分定义。格式:类型标识符 变量名表;注:变量名表中各变量用“,”号隔开。例: main()

{int a , b; long c, d; unsigned int e,f; ….

}

Page 17: 第二章  数据类型、运算符与表达式 、赋值语句、输入输出

(4) 整型数据的溢出

不同的数据类型具有不同的取值范围,当在计算中超出其取值范围时叫溢出。 C 语言中,当发生溢出时,系统并不报错,当超过上界时,从下界开始计数,当超出下界时,从上界开始往下计数 ( 不同软件下有区别 vc,win tc) 。

运行结果为32767 , -32768

0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1

1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

main()

{int a,b;

a=32767;

b=a+1;

printf(“%d,%d”,a,b);

}

a:

b:

32767

-32768

Page 18: 第二章  数据类型、运算符与表达式 、赋值语句、输入输出

实型数据

1. 实型常量的表示方法 实数又称浮点数。

( 1 )十进制小数形式:(必须有小数点,否则为整型)

例: 121.3 .321 0.0

( 2 )指数形式(用字母 e 或 E 表示 10 的幂次)

例: 123e3 或 1.23e5 、 0.123e6 表示 123×103

注:字母 e 之前必须有数字,且 e 后面的幂次必须为整数。

e5 , 2.3e3.4 ( 错 )

规范化的指数形式: e 之前的小数部分中,小数点左边有且只有一位非 0 数字,计算机输出的指数形式的实数均为规范化的指数形式。

Page 19: 第二章  数据类型、运算符与表达式 、赋值语句、输入输出

2. 实型变量 ( 1 )实型变量的分类 见表 2.2

float , 32 位,有效数字 6~7 位

Double , 64 位,有效数字 15~16 位

long double ,128 位,有效数字 18~19 位

( 2 )实型数据的舍入误差

实型数据提供的有效数字是有限的,有效位以外的数字将被舍去,由此可能会产生一些误差,避免将一个很大的数和一个很小的数直接相加或相减,或将两个很小的数相加或相减。

例 :float a=10.222222225,b=10.222222229; =>a 和 b 相等

Page 20: 第二章  数据类型、运算符与表达式 、赋值语句、输入输出

3. 实型常量的类型

C 将实型常量当作双精度来参加运算,以保证结果的精确,再将结果取相应的有效位赋给变量,亦可强制实数作为单精度参加运算,方法是实数后加 f 或 F 。

一个实型常量可以赋给单精度、双精度、长双精度型变量,系统自动取相应的有效位数字。

Page 21: 第二章  数据类型、运算符与表达式 、赋值语句、输入输出

字符型数据

1. 字符常量

C 的字符常量是用单引号括起来的一个字符,如:’ a’,’A’ 。C还允许用一种特殊形式的字符常量,以“ \” 开头的字符序列叫转义字符,见表 3.3 。利用转义字符,可以输出任何可打印字符,图形字符和控制字符。

Page 22: 第二章  数据类型、运算符与表达式 、赋值语句、输入输出

p10 表 2.3:

字符形式\n

\t

\v

\b

\r

\f

\\

\'

\ddd

\xhh

功能换行

横向跳格 ( 即跳到下一个输出区 )

竖向跳格退格回车走纸换页

反斜杠字符“ \”

单引号 ( 撇号 ) 字符1 到 3 位 8 进制数所代表的字符1 到 2 位 16 进制数所代表的字符

Page 23: 第二章  数据类型、运算符与表达式 、赋值语句、输入输出

注意 : \ ddd 表示 ASCII 码字符

三位八进制

如 \ 101 –– 表示字母 A

又 : \ xhh 两位十六进制 ASCII 字符

\ x 41–– 表示字母 A

\208 或 \x103 都是错的!

Page 24: 第二章  数据类型、运算符与表达式 、赋值语句、输入输出

3. 字符数据在内存中的存储形式及其使用方法 ( 1 )字符数据在内存中存放的并不是字符本身,而是字符的二进制 ASCII 码。由此,字符数据和整型数之间可以通用。

( 2 )由于字符数据只占用一个字节,它能表示 0~255 的整数,从而 0~255 整数可以赋予字符变量,亦可输出为字符。

2. 字符变量

字符型变量只能存放一个字符,在内存中占一个字节。字符变量的定义: char 变量名表;

0 0 0 0 0 0 0 0

( 3 )对 ASCII 码扩展字符( 128~255 )有些系统将其最高位作为符号位,从而这些扩展字符转换为整型数时为负数,为避免这一点,可定义字符变量为无符号字符,标识符为: unsigned char

1 1 1 1 1 1 1 1~

Page 25: 第二章  数据类型、运算符与表达式 、赋值语句、输入输出

例 1: main ( )

{ char c1, c2;

c1=97;

c2=98;

printf ("%c %c", c1, c2)

}

运行结果 a b 运行结果 a b

看如下例子 :

思考:若保持结果不变,哪些地方可以作修改?

Cyy\L3_6

Page 26: 第二章  数据类型、运算符与表达式 、赋值语句、输入输出

例 2: main ( )

{ char c1, c2;

c1= ' a ';

c2=' b ';

c1=c1– 32; c2=c2– 32;

printf ("%c %c", c1, c2)

}

运行结果 A B运行结果 A BCyy\L3_7

Page 27: 第二章  数据类型、运算符与表达式 、赋值语句、输入输出

4. 字符串常量 字符串常量是用一对双引号括起来的字符序列。如:“ How do you do .” …

注:

A) 不能把一个字符串常量赋给字符变量。

B) ’a’ 和“ a” 是不同的。

C H I N A \0

例:字符串“ CHINA” 在内存中的形式为:

"A " A /0 但 'A' A

C) 字符串存放时 , 系统自动在最后加上“ \ 0” –– 空字符,故字符串的长度为其实际长度加 1 。而字符数据没有结束标志。

Page 28: 第二章  数据类型、运算符与表达式 、赋值语句、输入输出

2.4 算术运算符与 算术表达式

运算符 : 运算的符号表示。

C 语言有丰富的运算功能 , 先简述之

C 运算符C 运算符

1. 算术运算符 +, –, , /, % , 等

3. 逻辑运算符 !, &&, ¦¦

2. 关系运算符 >, <, = =, > =, <=, !=

Page 29: 第二章  数据类型、运算符与表达式 、赋值语句、输入输出

4. 位运算符 <<, >>, ~, ¦, ^, &.

5. 赋值运算符 = 等

6. 条件运算符 ? 等

7. 逗号运算符 ,

8. 指针运算符 *, &

Page 30: 第二章  数据类型、运算符与表达式 、赋值语句、输入输出

11. 分量运算符 • , ,

12. 下标运算符 [ ]

13. 其它运算符 如函数的调用 ( )

9. 求字节数运算符 size of

10. 强制类型转换运算符 ( 类型 )

Page 31: 第二章  数据类型、运算符与表达式 、赋值语句、输入输出

• 功能• 注意问题• 优先级• 结合性

表达式:

( 1 )一个单独的标识符(变量、常量、函数等)是一个表达式;

( 2 )由表达式和运算符按照语法规则构成的更加复杂的表达式也是表达式。

通俗地讲,表达式就是使用运算符和标识符(操作数)按照语法规则连接起来的算式,因此任何表达式都是有值的,

Page 32: 第二章  数据类型、运算符与表达式 、赋值语句、输入输出

算术运算符和算术表达式

1 .基本的算术运算符+ (加或正号) —(减或负号) * (乘)/ (除) % (求余)

两个整数相除的结果为整数(舍去小数部分) 3/4 = >0, 7/4=>1

对求余% 运算,要求两侧均应为整型数。算术运算(除% 运算外)的两个数中有一个为实数,则结果为 double 型。

Page 33: 第二章  数据类型、运算符与表达式 、赋值语句、输入输出

2. 算术表达式和运算符的优先级与结合性 算术表达式:用算术运算符和括号将运算对象连接起来,符合 C 语法规则的式子。优先级:

高 低

+( 正)-( 负 )

*/%

+-

注:

A )同一级运算符按结合性(结合方向)处理,对算术运算符结合方向为从左至右。

B )若出现括号,括号内优先处理。

Page 34: 第二章  数据类型、运算符与表达式 、赋值语句、输入输出

各类数值型数据间的混合运算 整型、字符型、实型数据之间可以混合运算,在进行运算之前,不同类型的数据要先转换成同一类型,类型转换由系统自动进行。

转换规则: (必定转换)Double float 高

Long

Unsigned 低Int char,short

float f ; double d;

f-20+13.4-‘a’*5/d

(必定转换)

Page 35: 第二章  数据类型、运算符与表达式 、赋值语句、输入输出

3. 强制类型转换运算符

一般形式:(类型名)(表达式)

例: (int)(a)

(int)(x+y)

(int)x+y

注: 强制类型转换并不改变变量原来的数据类型(系统产生一个中间变量)强制类型转换主要用在系统不能进行自动类型转换时。强制类型转换运算符优先级高于算术运算符。

Page 36: 第二章  数据类型、运算符与表达式 、赋值语句、输入输出

4. 自增( ++ )、自减( -- )运算符 ++i,--i (使用 i 之前,先使 i自增(减) 1 )

i++,i-- (使用 i 之后,使 i自增(减) 1 )

例: int a,b,i=2;

a=i++;b=++i; (结果为: a=2 b=4 i=4)

注:++ 、 -- 运算符只能用于变量,不能用于常量和表达式。++ 、 -- 运算符的结合方向为自右至左。i++,++i通常用在循环语句中,使循环变量值改变;它们作为一单独语句使用时,前置和后置效果是一样的。

Page 37: 第二章  数据类型、运算符与表达式 、赋值语句、输入输出

5 、赋值运算符和赋值表达式1 .赋值运算符“ =”, 一般使用形式:变量名 = 表达式

作用是将一个数据或一个表达式的值赋给一个变量。

2 .类型转换 (p59)

(2). 整型数据赋给实型变量 , 数值不变 , 但按实数形式存放 .

(1). 将实型数据 (无论单 ,双精度 ) 赋给整型变量时 ,舍弃小数 .

赋值时 ,两边类型若不一致 , 则按以下规则转换 :

(3) 、不同类型的整型数据间的赋值归根到底就是一条:按存储单元中的存储形式直接传送。

Page 38: 第二章  数据类型、运算符与表达式 、赋值语句、输入输出

1 0 1 0 1 1 1 0

0 0 0 0 0 0 0 0 1 0 1 0 1 1 1 0

76543210

76543210

a 、大 <= 小 , 从低位开始放,不足,补0

b 、小 <= 大 , 从低位开始取,超出,舍去;0 1 0 1 0 1 1 1 1 0 1 0 1 1 1 0

76543210

1 0 1 0 1 1 1 0

76543210

整型数据间赋值:

Page 39: 第二章  数据类型、运算符与表达式 、赋值语句、输入输出

3 .复合的赋值运算符

+= - = *= /= %= <<= >>= &= ^= |=

例: a+=b a=a+b

a*=b a=a*b

……

特别地: x*=y+8 x=x*(y+8)

Page 40: 第二章  数据类型、运算符与表达式 、赋值语句、输入输出

4 .赋值表达式由赋值运算符将一个变量和一个表达式连接起来的式子称为赋值表达式。一般形式:变量名 = 表达式求解过程:将赋值运算符右侧的“表达式”的值赋给左侧的变量,整个赋值表达式的值就是被赋值的变量的值。例: a=5 ( a 的值为 5 ,整个赋值表达式的值也是 5 ) a=6*3

a=b=5 (等价于 a=(b=5) )注:赋值表达式的结合方向为自右至左。赋值表达式可包含复合的赋值运算符。例: a+=a-=a*a ( 等价于 a=a-a*a ; a=a+a)

赋值表达式后面不能加分号,加了分号就变成了语句。

Page 41: 第二章  数据类型、运算符与表达式 、赋值语句、输入输出

5 、逗号表达式 和条件表达式1 .逗号运算符“,”2 .逗号表达式:用逗号运算符将两个表达式连接起来的式子。3 .逗号表达式的一般形式:表达式 1 ,表达式 2

4 .逗号表达式的求解过程:先求解表达式 1 ,再求解表达式 2 ,整个逗号表达式的值是表达式 2 的值。5 .逗号表达式的优先级为最低。例:若 a 原值为 4 , a=3*5,a*4 (逗号表达式的值为 60 , a=15 ) a=(3*5,a*4) (逗号表达式的值为 16 , a=16)

6 .逗号表达式的目的是分别得到各个表达式的值。7 .逗号表达式的更一般形式:表达式 1 ,表达式 2 ,表达式 3 ,… 求解过程为自左至右顺序求解各个表达式的值,整个逗号 表达式的值是最后一个表达式的值。

Page 42: 第二章  数据类型、运算符与表达式 、赋值语句、输入输出

条件表达式 :一般形式 < 表达式 1>? < 表达式 2> : < 表达

式 3>含义:首先计算 < 表达式 1> 的值, 若为非零,则表达式的值为 < 表达式 2> , 否则表达式的值为 < 表达式 3> 。举例: max=(a>b)?a:b /* 将 a 、 b两数中的较大值送给max*/

Page 43: 第二章  数据类型、运算符与表达式 、赋值语句、输入输出

1 、不要编写太复杂的表达式。例如: I=a>=b&&c<d&&c+f<=g+h;

2 、不要编写多用途的复合表达式。例如: d=(a=b+c)+r;

应拆分为两个独立的语句: a=b+c;

d=a+r;

注意:

Page 44: 第二章  数据类型、运算符与表达式 、赋值语句、输入输出

2.5 变量赋初值和赋值语句 1 .在定义变量的同时使变量初始化。 例: int a=3;

int b=23,c=45;

2 . C 可以使被定义的变量一部分赋初值 例: int a,b,c=5;

相当于: int a,b,c;

c=5;

3 .可以对几个变量赋予同一个初值 例: int a=3,b=a,c=a;

但不能写成: int a=b=c=3;

Page 45: 第二章  数据类型、运算符与表达式 、赋值语句、输入输出

4 、 赋值语句 : 变量 = 表达式 ;

赋值语句由赋值表达式加上分号构成,作用是把表达式的值赋予变量。例: a=3;

a=3*2;

a=b=c=3*3;

b=(b=c=3)*2;

a*=a+c;

a=a*(a+c);

注:赋值语句和赋值表达式均可为变量赋值,但多数情况下,可使用赋值表达式的地方却不可以使用赋值语句。

例: if ((a=b)>0) t=a; 合法

if ((a=b;)>0) t=a; 不合法

Page 46: 第二章  数据类型、运算符与表达式 、赋值语句、输入输出

数据输入输出的概念及在 C 语言中的实现 1 .输入输出概念

( 1 )从计算机向外部输出设备(显示屏、打印机、磁盘文件)输出数据叫“输出”。

( 2 )从外部输入设备(键盘、磁盘、光盘文件、扫描仪等)向计算机输入数据叫“输入”。

2 .数据输入输出在 C 语言中的实现

( 1 )C 语言并不象其它语言提供输入、输出语句,而是由函数来实现。

( 2 )C 语言函数库提供一批标准输入输出函数。如: printf( ) 、 scanf( ) 、 putchar( )……

Page 47: 第二章  数据类型、运算符与表达式 、赋值语句、输入输出

( 3 )不提供语句而使用函数的好处:

使编译系统简化,不用处理与硬件有关的问题,通用性强,可移植性好。

( 4 )使用 C 语言库函数时,必须用预编译命令将有关的“头文件”包括到源文件中,在头文件中包含了与函数有关的信息。

( 5 )预编译命令格式: #include< 头文件 > 或 # include ” 头文件”

( 6 )标准输入输出函数的头文件为: stdio.h 头文件及库函数可参看第 9 章

( 7 )C 语言允许在使用 printf( ) 和 scanf( ) 函数时,可不加预编译命令。

Page 48: 第二章  数据类型、运算符与表达式 、赋值语句、输入输出

格式输入与输出 1 .格式输出函数 printf( ) 。

一般格式: printf (格式控制,输出项表)

功能:按格式控制中所设置的格式,输出列表项中指定的任意类型的数据。

例: printf (“ %d %f c=%u\n” , a , b , c );

注:

( 1 )格式控制是用双引号括起来的字符串,可包括格式说明和普通字符。

( 2 )格式说明由“ %” 和格式字符组成,如 %d 、作用是将输出的数据转换为指定的格式。

Cyy\L4_2

Page 49: 第二章  数据类型、运算符与表达式 、赋值语句、输入输出

( 3 )普通字符将原样输出,用于数据分隔或数据说明。

( 4 )输出项表用逗号分隔,可以是常量、变量、表达式,其类型和顺序都必须与格式说明一一对应。

( 5 )格式字符。 P18

( 6 )附加格式说明字符(修饰符);定义域宽, 见 P19

( 7 )在格式控制中使用转义字符。

Cyy2\L2-3.c

Page 50: 第二章  数据类型、运算符与表达式 、赋值语句、输入输出

2 .格式输入函数 scanf () 一般格式: scanf (格式控制,地址列表) 功能:从终端得到数据赋予相应的地址列表中的变量。 例: scanf (“ %d %f %u” , &a,&b,&c ) ;

注:( 1 )地址列表是由若干个地址组成的表列,可以是变量的地址、字符串的首地址。“ &” 是地址运算符,代表变量的地址。( 2 )格式说明

格式控制含义与 printf ()函数类似。( 3 )用“ %d %d %d” 形式时,输入的数据可用一个或多个空格间隔,也可以用回车键、 Tab 键分隔。

Cyy2\L2-6.c

Page 51: 第二章  数据类型、运算符与表达式 、赋值语句、输入输出

( 4 )对实数不能规定精度(不报错,但数据错误)( 5 )格式控制中还有其它普通字符,则输入数据时应输入这些字符。( 6 )用“ %c” 输入字符时,空格字符、转义字符、回车都作为有效字符输入。( 7 )最好是输入字符与输入数值数据分开两个 scanf ()函数输入。( 8 ) 输入数据,遇到以下情况时认为此项数据结束。

空格、回车、 Tab 、指定宽度、非法输入( 9 )为了对输入数据进行提示说明,可先使用 printf ()输出提示说明文字。

例:从键盘输入半径,输出圆面积和球体积。 ( 程序cyy\L4-1.c)

Page 52: 第二章  数据类型、运算符与表达式 、赋值语句、输入输出

字符数据的输入输出

1 .字符输出函数 putchar( )

格式: putchar( 输出项 ) ;

功能:向终端输出一个字符。

注:输出项可以是字符常量、字符型变量、整型变量或转义字符。(只能有一个)

例: a=65;b=’A’;

putchar(a); putchar(a+1);

putchar(b); putchar(‘\n’);

putchar(‘\101’); Cyy\L4_1

Page 53: 第二章  数据类型、运算符与表达式 、赋值语句、输入输出

2 .字符输入函数 getchar( );

功能:从终端得到一个字符(赋予变量或参加表达式运算)

注:( 1 ) getchar( )没有参数;

( 2 ) getchar( ) 得到的字符可以赋予一个字符变量或 整型变量。

例: a= getchar( );

putchar(getchar( )+1);

( 3 )使用 putchar( ) 和 getchar( ) 函数必须包含头文件 stdio.h Cyy\L4_3