C语言的数据类型简介几个基本概念
C语言的三种基本数据类型基本运算符和表达式
C基本语句数据的输出数据的输入简单程序设计举例
C语言程序设计第 3章 基本程序语句
C语言程序设计2006/8/20
第 3章 基本程序语句 2
字符型( char)
整型 ( short,int,long,unsigned)
单精度型 ( float)
实型双精度型 ( double)
枚举类型 ( enum)
数组类型 ( [ ])
构造类型 结构体类型 ( struct)
共用体类型 ( union)
指针类型 ( *)
空类型 ( void)
基本类型数据类型
3.1 C语言的数据类型简介
C语言程序设计2006/8/20
第 3章 基本程序语句 3
3.2 几个基本概念一,标识符
1,标识符,是用来标识名称的,可以用来标识变量名、符号常量名、函数名、类型名、数组名、文件名等。 C语言规定标识符只能由字母、数字和下划线组成,且第一个字符必须是字母或下划线。
如,Day,month,student,name_1,s2,_12,_t13
注意,C语言中大写字母和小写字母被认为是两个不同的字符,
大写字母 ‘ A’与小写字母 ‘ a’则表示不同的标识符。
2,标识符的分类关键字分为三类 预定义标识符用户标识符
C语言程序设计2006/8/20
第 3章 基本程序语句 4
二、常量,常量是指在程序运行中,其数值不能被改变的量
1,直接常量,是在程序中直接引用的数据
2,符号常量符号常量是用标识符来代表一个数据符号常量的定义形式,
#define 符号常量标识符 常量数据例如,#define PI 3.14159
C语言程序设计2006/8/20
第 3章 基本程序语句 5
三、变量
变量是指以标识符为名字,其值可以改变的量。
变量分为整型、实型、字符型等。
变量的定义形式:类型标识符 变量名 1 [,变量名 2,
变量名 3...];
变量的初始化:在定义变量的同时给变量一个初始值。
如,int a=5,b=3;
注意,在同一程序块中,变量不能被重复定义;
使用变量时必须,先定义,后使用,。
C语言程序设计2006/8/20
第 3章 基本程序语句 6
1,定义形式,类型标识符,变量名 1 [,变量名 2,变量名 3...];
例如,int a,b,c ;
float x,y;
char c1,c2; 或 int c1,c2;
自己设定,满足标识符的规定。
如,int,
float,char ;不可省
2,变量初始化在说明变量的同时给变量一个初始值。
例如
int a=5,b=3; √
int a=b=c=3;?
int a,b,c; a=b=c=3; √
C语言程序设计2006/8/20
第 3章 基本程序语句 7
一,整型数据
1,整型常量:
(1) 十进制形式,与数学上的整数表示相同;
例如,12,-100,0
(2) 八进制形式,在数码前加数字 0;
例如,012=1*81+2*80=10(十进制 )
(3) 十六进制形式,在数码前加 0X( 数字 0和字母 X) 。
例如,0x12=1*161+2*160=18(十进制 )
* 八进制的数码范围为 0~7; 018?
* 十六进制的 数码除了数字 0~9外,
还使用英文字母 a~ f (或 A~ F)表示 10~15。
如,0x1e √
3.3 C语言的三种基本数据类型
C语言程序设计2006/8/20
第 3章 基本程序语句 8
2、整型变量
( 1 ) 整型变量分类根据数据所占的二进制位数分为,int,short,long;
同样存储长度的数据又分 unsigned,signed;
故可组合出六种类型。
(2)整型数据的存储方式数据在内存中是以二进制形式存储的。 C语言中,一个
int型数据通常用两个字节存放,其中最高位用来存放整数的符号,若最高位为 0则表示该数为正数,若最高位为 1则表示该数为负数。如,int i=-1; 则存放形式为:
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
C语言程序设计2006/8/20
第 3章 基本程序语句 9
3、值域:
由机器中数据的存储长度决定。
如 Turbo C中,有 short(2字节 )≤int(2字节 ) ≤long(4
字节 )
关键字 所占位数 取值范围
short 16 -32768~ 32767
unsigned short 16 0~ 65535
int 16 -32768~ 32767
unsigned 16 0~ 65535
long 32 -2147483648~ 2147483647
unsigned long 32 0~ 4294967295
C语言程序设计2006/8/20
第 3章 基本程序语句 10
main( )
{ int x,y,z,w; /*定义 x,y,z,w为整型变量 */
unsigned int k; /*定义 k为无符号整型变量 */
x=10; y=-20; k=30;
z=x+k; w=y+k;
printf(,x+k=%d,y+k=%d\n”,z,w) ;
}
例 3.1:
程序运行结果为:
x+k=40,y+k=10
C语言程序设计2006/8/20
第 3章 基本程序语句 11
1,实型常量:
(1) 十进制小数形式,由数字和小数点组成;
例如,3.4,4.,.3。
(2) 指数形式:,十进制小数,+,e(或 E)”+“十进制数整数,。
例如,12.5e-6 表示 12.5× 10-6 。
小数点不能单独出现; 0.√,0 √,?
e或 E的两边必须有数,且其后面必须为整数;
如,6E0.2? e5?
2,实型变量(分类和值域):
关键字 字节数 取值范围 精度 (位 )
float 4 3.4× 10-38~3.4× 1038 7
double 8 1.7× 10-308 ~1.7× 10308 15
注意二,实型数据
C语言程序设计2006/8/20
第 3章 基本程序语句 12
1,常量:
(1) 用单引号括起来的一个字符;如,‘ A?,‘ 1?,’
等 。
(2) 用单引号括起来的由反斜杠 (\)引导的转义字符。
字符形式 功能
\n 换行
\t 横向跳格
\b 退格
\r 回车
\\ 反斜杠字符
\? 单引号字符
\ddd 8进制数表示的 ASCII码对应的字符
\xhh 16进制数表示的 ASCII码对应的字符三,字符型数据
C语言程序设计2006/8/20
第 3章 基本程序语句 13
例如:字符 A的 ASCII码为:
65D(十进制) =41H(十六进制) =101Q(八进制)
∴ 字符 A可以表示为 ‘ A?,’ \x41?,’ \101?。
2,变量的分类和 值域,
分类,char 和 unsigned char;
值域,每个字符型数据在内存中占 一 个字节;包括 ASCII字符表中的所有字符 ( 可显示字符和非显示字符 ) 。
3,字符串常量:
是用一对双引号括起来的字符序列 。
如:,SHANGHAI”,,FGHijk”,,CHINA”。
字符串常量的存放:
每个字符均以其 ASCII码存放,且在最后加一个,空字符,
注意?\ √?\\? √\
a?与,a”的区别。
C语言程序设计2006/8/20
第 3章 基本程序语句 14
120,-100,0;
0120,072;
0xFFFF,0x1e,0X28AF,0XED4 ;
120L,200L ; 长整型常量
3.14,-3.1,5.12E-6 ;
'a','#','\n','\101';
099,12f,0xg,48EA ;
019.5,1e-08; 实型常量只能用十进制形式表示
2.1E10.2,E-6,6.4E+4.8,E9 ;
"changsha","+++\\? ab" ;
' \','\p',''','ab';
课堂练习:
请判断这些常量正确与否

C语言程序设计2006/8/20
第 3章 基本程序语句 15
一,C运算符简介按操作功能运算符大致可分为 算术运算符、
关系运算符、逻辑运算符、按位运算符以及其它运算符如赋值运算符,条件运算符、
逗号运算符等。
表达式是由操作数和运算符组成的序列 。
3.4 基本运算符和表达式算术运算符 + - * / %
关系运算符 > < == > = < = !=
逻辑运算符 ! && ‖
位运算符,,~ | ∧ &
赋值运算符 =
条件运算符?,
逗号运算符,
指针运算符 * 和 &
求字节数运算符 sizeof
强制类型转换运算符分量运算符? →
下标运算符 [ ]
其它运算符号
C语言程序设计2006/8/20
第 3章 基本程序语句 16
二,算术运算符和算术表达式
1,基本的算术运算符
+(加 ),3+4,+3
-(减 ),3-5,-5
*(乘 ),3*5
/(除 ),5/2的值为 2; 5.0/2的值为 2.5;
%(取余 ),5%3的值为 2;
-5%3的值为 -2;
5%(-3)的值为 2;
-5%(-3)的值为 -2;
12.3%3 ×
若 a能被 b整除,则有,a%b==0
C语言程序设计2006/8/20
第 3章 基本程序语句 17
2,算术表达式
用算术运算符和括符将操作数连接起来的式子。
优先级:() *,/,% +,-
结合性:从左至右;
表达式的值:
数值型 (int,long,unsigned,double);
例如:
已知,float a=2.0;
int b=6,c=3;
求解,a*b/c-1.5+?a?+fabs(-5)=?
C语言程序设计2006/8/20
第 3章 基本程序语句 18
double float
long
unsigned
int char,short
float a=2.0; int b =6,c =3;
a*b/c -1.5 +?a? +fabs(-5)
12.0/3
5
4.0 - 1.5
2.5 + 97(int)
99.5 + 5
104.5(double)
C语言程序设计2006/8/20
第 3章 基本程序语句 19
1,赋值运算符 =
2,赋值表达式,用赋值运算符将变量和表达式连接起来的式子
一般形式为,<变量 >赋值运算符 <表达式 >
优先级,赋值运算符的优先级比算术运算符低 。
结合性:自右至左 ( 右结合性 ) 。
求值规则,先计算,=”右边表达式的值,再将其值赋给左边的变量 。
表达式的值:赋值号左边变量的值即为赋值表达式的值 。
例如,(1) x=(y=12)/4 y值为 12,x值为 3,表达式的值为 3
(2) x=y=12/4 y值为 3,x值为 3,表达式的值为 3
(3) x=(y=12/4) y值为 3,x值为 3,表达式的值为 3
(4) (x=y)=12/4?
三、赋值运算符和赋值表达式
C语言程序设计2006/8/20
第 3章 基本程序语句 20
3,复合赋值运算符
*=,/=,%=,+=,-=,<<=,>>=,&=,Λ =,|=
注意,
复合运算符是一个运算符,但功能上,是两个运算符功能的组合。
例如,
(1) a+=b 相当于 a=a+b
a*=b 相当于 a=a*b
a*=b+c 相当于 a=a*(b+c) 而不是 a=a*b+c
(2) 设 a=12,计算表达式 a+=a-=a*12和 a+=a-=a*=12
的值
C语言程序设计2006/8/20
第 3章 基本程序语句 21
4,赋值时的类型转换
实型数据赋给整型 ( 字符型 ) 变量:去掉小数部分; 如,int
f=23.457; 变量 f的值为 23。
整型(字符型)数据赋给实型变量,补足有效位。
字符型数据赋给整型变量:将字符数据( 8位)放到整型变量的低 8位中,高 8位进行,符号扩展,。
一个 int,short,long,unsigned型数据赋给一个 char 型变量:
截取低 8位赋给字符型变量。
带符号的整型数据( int型)赋给 long型变量:进行符号扩展。
带符号的 long型数据赋给 int型变量时,只截取低 16位赋给 int
变量。
unsigned int 型数据赋给 long int变量:高位补 0。
int 型数据赋给 unsigned int变量:内存情况不变,但若是负数,
其符号位也作为数值赋给 unsigned 型变量。
C语言程序设计2006/8/20
第 3章 基本程序语句 22
5,自增与自减运算符
++i,--i:先使变量 i的值增 1(或减 1),再使用变量 i的值作为整个表达式的值来参加其它的运算;
i++,i--:先使用变量 i的值进行其它运算,再使变量 i
的值增 1(或减 1)。
等价于 i=i+1;
j=i;i++; 所以 i的值为 4,j的值为 3。
i++;j=i; 所以 i的值为 4,j的值为 4。
例如:
(1) i++;
++i;
(2) i=3;
j=i++;
(3) i=3;
j=++i;
C语言程序设计2006/8/20
第 3章 基本程序语句 23
结合性:自右至左。
如,i = 2; j = -i++;
等价于,j=-(i++); 即,j=-i;i++;
“++”与,-“是同优先级所以 i的值为 3,j的值为 -2。
注意,++”或,--”自增与自减运算符的使用 。
设 i=3,k=(i++)+(i++)+(i++),k=?
设 i=3,k=(i++)+(++i)+(++i),k=?
设 i=3,j=4,k=i+++j,k=?
设 i=3; printf(“%d %d”,i,-i++);结果为?
C语言程序设计2006/8/20
第 3章 基本程序语句 24
1,6种关系运算符,< <= >= > == !=
2,关系表达式,用关系运算符将表达式连接起来的式子
★ 优先级,(< <= >= >)>( == != )
★ 结合性:自左至右;
★ 表达式的值,若为真,则结果为 1;
若为假,则结果为 0。
3>5 的值为 0; 3<4>2 的值为 0;
3+(4<3)*4的值为 3;
3+4<3*4 的值为 1;
X=6>3 的值为 1。
算术运算符优先级高于关系运算符关系运算符优先级高于赋值运算符例如四、关系运算符和关系表达式
C语言程序设计2006/8/20
第 3章 基本程序语句 25
1,3种逻辑运算符,&& || !
逻辑量:可以是整型、实型、字符型和指针类型,
0——假 非 0——真;
如,0,0.0,‘ \0’,NULL都代表 假 。
2,逻辑表达式,用逻辑运算符将表达式连接起来的式子
★优先级,!>&&>||
★ 结合性:自左至右;
★表达式的值,若为真,则结果为 1;
若为假,则结果为 0。
五、逻辑运算符和逻辑表达式
C语言程序设计2006/8/20
第 3章 基本程序语句 26
int a=5; float b=3.5;
!a (0) !(a < b) (1)
a && b (1) !a&&b (0)
!a&&!b (0) !(a&&b) (0)
&&:只要有一个为假,结果则为假;
a || b (1) !a||b (1)
!a||!b (0) !(a||b) (0)
||:只要有一个为真,结果则为真;
(a < b) && (a > 0) (0)
(a < b) || (a > 0) (1)
例如
C语言程序设计2006/8/20
第 3章 基本程序语句 27
! 高算术运算符关系运算符
&&和 ||
赋值运算符 低
4 - 01 && 2
8 < 41
0
1
5 > 3 && 2 || 8 < 4 - !5
C语言程序设计2006/8/20
第 3章 基本程序语句 28
注意:
在逻辑表达式的求解中,并不是所有的逻辑运算符都被执行,只是在必须执行下一个逻辑运算符才能求出表达式的解时,才执行该运算符 。
例如:
(1)a = 0; b = 1;
c = a++ && ( b = 3 );
结果,a为 1,b为 1,c为 0。
(2)a = 1; b = 1; c=0;
d = --a || b-- || (c = b+3 );
结果,a为 0,b为 0,c为 0,d为 1。
C语言程序设计2006/8/20
第 3章 基本程序语句 29
逻辑表达式一般用于控制语句中的条件:
例如:
(1) n是小于 m的偶数:
n<m&&n%2==0
(2)year是闰年,
( 能被 4整除但不能被 100整除或能被 400整除 )
year %4==0&&year%100!=0||year%400==0
C语言程序设计2006/8/20
第 3章 基本程序语句 30
1,条件运算符和,,它们与三个操作数组组成三元运算 。
2,形式为,<表达式 1>? <表达式 2>:<表达式 3>
3,求值规则和表达式的值,
真 (非 0),求解表达式 2
求解表达式 1 条件表达式的值假 (0),求解表达式 3
例如,
int max,a=5;b=3;
max=a>b?a:b max及赋值表达式的值均为 5;
a<b?a:b+1 条件表达式的值为 4。
六,条件运算符
C语言程序设计2006/8/20
第 3章 基本程序语句 31
又如,--a == b++? a++,b++
(a=a-1;)4 == 3(b=b+1;)? a++:b++
a为 4 b为 4
0 4(b=b+1;)
表达式值为 4
b为 5
∴ a值为 4,b值为 5,条件表达式的值为 4。
4,优先级,逻辑 >条件 >赋值
C语言程序设计2006/8/20
第 3章 基本程序语句 32
5,结合性,自右至左;
y = x>10? x/10,x>0? x,-x;
等价于,
y = x>10? x/10,(x<0? x,-x);
∴ 当 x的值为 15时,表达式的结果为,1
当 x的值为 5时,表达式的结果为,-5
七、逗号运算符:,
形式,逗号表达式 1,逗号表达式 2,…,逗号表达式 n
求值规则,从左至右依次计算各表达式的值 ;
优先级,最低;
结合性:自左至右;
表达式的值:最后一个表达式的值。
C语言程序设计2006/8/20
第 3章 基本程序语句 33
例如:
a b y 表达式
y=a=4,b=5,a+b; 4 5 4 9
y=(a=4,b=5,a+b); 4 5 9 9
y=(a=4,b=5),a+b; 4 5 5 9
y=a=(4,b=5),a+b; 5 5 5 10
注意,
C语言常用逗号作为分隔符,例如,
int a=3,b=4,c=5;
printf(“%d,%d,%d”,(a,b,c)); ×
printf(“%d,%d,%d”,a,(a,b,c),c); 结果为 3,5,5
C语言程序设计2006/8/20
第 3章 基本程序语句 34
强制类型转换:指将表达式的类型强制转换为指定的类型,
其一般形式为,(类型名 )表达式
其作用:将表达式的结果的类型强制转换为类型名所指的类型 。
例如八、强制类型转换运算符
(int)(3.4+2.8) 的值为 6
强制类型转换时,得到所需类型的中间变量,而原来变量的类型不会改变。
C语言程序设计2006/8/20
第 3章 基本程序语句 35
例如,int a=2,b=5;
float x=4.4;
则有,表达式 结果
b/a 2
(float)b/a 2.5
(float)(b/a) 2.0
(int)x%a+x 4.4
(int)x%(a+x) 不合法
C语言程序设计2006/8/20
第 3章 基本程序语句 36
C语言的语句可分为以下四类:简单语句
(包括输入 /输出语句)、空语句、复合语句和流程控制语句。简单语句又有表达式语句和函数调用语句。
本章只介绍简单语句,空语句和复合语句的使用 。
3.5 C基本语句
C语言程序设计2006/8/20
第 3章 基本程序语句 37
一,简单语句
1,表达式语句就是一个表达式加上一个分号。
如,A++;
x=1;
2,函数调用语句由函数调用表达式加分号构成。
printf(“%d”,a);
3,空语句空语句用一个分号表示,其一般形式为:;
C语言程序设计2006/8/20
第 3章 基本程序语句 38
C 语言有丰富的标准函数库,可提供各类函数供用户调用调用标准库函数可完成预先设定好的操作,
例如调用标准库函数求数学函数值:
sin(x),cos(x),exp(x) (求 ex ),fabs(x)
(求 x的绝对值 ),log(x)( 求 lnx) 等 。
C语言程序设计2006/8/20
第 3章 基本程序语句 39
表达式语句举例 【 例 3.2】
#include<stdio.h>
#include<math.h>
main()
{ int a = 2,b = 4;
float x,y;
x = a / 2 + sqrt( b ); /*x=3.0 */
a++ ; /*a=3 */
y = x * a ; /*y=9.0 */
printf(“x=%6.2f,y= %6.2f,,x,y);
}
C语言程序设计2006/8/20
第 3章 基本程序语句 40
程序说明
注意表达式类型转换
注意赋值类型
输出结果,
x= 3.00,y= 9.00
C语言程序设计2006/8/20
第 3章 基本程序语句 41
调用调用标准库函数要注意以下几点
在程序中要包含相应的头文件例如,#include<stdio.h>
#include<math.h>
调用规则,函数名 (参数表 )
有返回值的函数要作为表达式的一部分如,Y=sin(1.7);
在表达式中调用函数,实际上是转去执行一段预先设计好的程序,求出结果后返回调用点。
所以函数的值又叫函数的返回值。
C语言程序设计2006/8/20
第 3章 基本程序语句 42
无返回值的函数可作为语句调用。
printf(“%d”,a);
调用它不是为了得到返回值(函数值),
是为了完成某项任务。
函数调用举例
Y = sin ( 1.12);
Y1 = sin ( x );
Y2 = 3*sin (x+1.12 ) + sqr(x);
Y3 = sin ( sqrt(x+1.12) );
C语言程序设计2006/8/20
第 3章 基本程序语句 43
二,复合语句,用一对花括号 {}将多条语句组合在一起,在语法上相当于一条语句。
1、一般形式:
{ [内部数据说明 ;]
语句 1;
……
语句 n;
}
注意:
(1)在复合语句中说明的变量,是局部变量,仅在复合语句中有效。
(2)复合语句的 } 之后,不能有分号 。
C语言程序设计2006/8/20
第 3章 基本程序语句 44
复合语句 (程序块 ) 示例 【 例 3.3】
main( )
{ int x=1;
{int x=2;
{int x=3;
printf(“x=%d”,x);
}
printf(“x=%d”,x);
}
printf(“x=%d”,x);
}
C语言程序设计2006/8/20
第 3章 基本程序语句 45
3.6 数据的输出
C语言本身不提供输入输出语句,得由标准 I/O库函数提供。输入输出库函数很丰富,可以从键盘、显示器、磁盘文件和硬件端口进行输入或输出操作。
本节主要介绍用于显示器输出的两个函数。
C语言程序设计2006/8/20
第 3章 基本程序语句 46
一,格式输出函数
1.格式输出函数原型,
int printf(char * format [,argument,…])
stdio.h
函数功能:按规定格式向输出设备 (一般为显示器 )输出数据,并返回输出的字符数。
这个函数可以输出多字信息。
C语言程序设计2006/8/20
第 3章 基本程序语句 47
2.格式输出函数的一般形式
printf(“格式控制字符串”,输出项表 );
可以是 0个、一个或多个输出项,
可以是常量或变量表达式,
用逗号分隔。类型可以是整型实型字符型和字符串型,
用双引号括起来,
控制输出项的格式和输出一些提示信息
C语言程序设计2006/8/20
第 3章 基本程序语句 48
3.格式输出函数示例程序 【 例 3.4】
#include,stdio.h”
main()
{int i = 97;
char ch =?a?;
printf (“i=%d,%c\n”,i,i );
}
两个输出项都是变量 i,但以不同的格式输出,
一个是输出的整型数,一个输出的是字符 a,其格式是由 %d与 %c控制的,
输出结果,
i =97,a
C语言程序设计2006/8/20
第 3章 基本程序语句 49
int i = 97;
char ch =?a?;
printf (“i =%d,%c\n”,i,i );
输出结果,
i =97,a
printf (“i =%d,%c\n”,i,i );
两个输出项都是变量 i,
但以不同的格式输出,一个是输出的整型数,一个输出的是字符 a,其格式是由,%d与 %c控制的,
in i = 97;
cha =?a?;
(“i =%d,%c\n”,i,i );
输出结果,
i =
97,a
普通字符,
按原样输出双引号括起来的普通字符,在屏幕上原样输出。
转义字符指明特定的操作,如 ′\n′表示换行而格式说明部分由 %和格式字符串组成,下面详细讨论。
C语言程序设计2006/8/20
第 3章 基本程序语句 50
4、格式说明
★ 每个格式说明都必须以,%”开头,以一个格式字符结束,在此之间可以根据需要插入,长度说明,,,宽度说明,,左对齐符号,-”等。
★ 格式说明与输出参数表要按顺序一一对应,且各输出项的数据类型要与对应的格式字符相符
★ 常见的格式字符
( 1 ) d格式符:用来输出十进制整数 。
有以下几种用法:
① %d,按整型数据的实际长度输出 。
② %md,按指定宽度 m输出整型数据,若数据位数小于 m,则数据靠右对齐,左边补空格,否则按实际长度输出 。
③ %-md,按指定宽度 m输出整型数据,若数据位数小于 m,则数据靠左对齐,右边补空格,否则按实际长度输出 。
C语言程序设计2006/8/20
第 3章 基本程序语句 51
如:
int a=12,b=2345;
printf(“%d,%3d,%-3d,%3d\n”,a,a,a,b);
则输出结果为:
12,︺ 12,12︺,2345
④ %ld或 %mld( %-mld),按实际长度或指定宽度 m输出
long型数据,若数据位数小于 m,则左边(或右边)补空格,否则按实际长度输出。
如:
long a=12,b=2345;
printf(“%ld,%3ld,%-3ld,%3ld\n”,a,a,a,b);
对于 long型数据,必须用 %ld格式输出,若用 %d格式输出,
则会发生运行结果错误,因为整型数据的范围是 -
32768~32767。
一个 int型数据可用 %d或 %ld格式输出。
C语言程序设计2006/8/20
第 3章 基本程序语句 52
(2) o格式符:用来以八进制形式输出整数,即将内存单元中的所有二进制数值(包括符号位)转换成八进制形式输出,输出的数值不带符号。
如:
int a=-1;
printf(“%d,%o\n”,a,a);
输出结果为,
-1,177777
对 long型数据,可以用 %lo形式输出。也可以指定长度输出,
用 %mo,%-mo等形式输出
C语言程序设计2006/8/20
第 3章 基本程序语句 53
(3) x(X)格式符:用来以十六进制形式输出整数,即将内存单元中的所有二进制数值(包括符号位)转换成十六进制形式输出,输出的数值也不带符号。用大写 X表示输出结果中的 a,b,c,d,e,f用大写字母 A,B,C,D、
E,F输出。
如:
int a=-1;
printf(“%d,%o,%x,%X\n”,a,a,a);
输出结果为:
-1,177777,ffff,FFFF
对 long型数据,同样可以用 %lx形式输出。也可以指定长度输出,用 %mx,%-mx等形式输出。
C语言程序设计2006/8/20
第 3章 基本程序语句 54
(4) u格式符:用来以十进制形式输出 unsigned型数据,
即将内存中的二进制数据(包括符号位)全部转换成十进制形式输出,输出的数值不带符号。
一个有符号的( int)整数可以用 %u格式输出,反之,一个 unsigned型数据也可用 %d,%o,%x格式输出。
【 例 3.5】
main()
{int a=-2;
unsigned b=65535;
printf(“a=%d,%o,%x,%u\n”,a,a,a,a);
printf(”b=%d,%o,%x,%u\n”,b,b,b,b);
}
输出结果为:
a=-2,177776,fffe,65534
b=-1,177777,ffff,65535
C语言程序设计2006/8/20
第 3章 基本程序语句 55
(5) c格式符:用来输出一个字符。
也有指定宽度输出 %mc( %-mc),字符的左边(右边)补空格。
一个整数只要其值在 0~255之间,也可以用字符形式输出,
在输出前先转换成相应的 ASCII字符;反之,一个字符也可以用整数形式输出。
如:
char c=?a?;
int a=65;
printf(“c=%c,%d\na=%3c,%d\n”,c,c,a,a);
输出结果为:
c=a,97
a=︺︺ A,65
C语言程序设计2006/8/20
第 3章 基本程序语句 56
(6) s格式符:用来输出一个字符串。
有如下用法:
%s:按实际长度输出;
%ms( 或 %-ms),输出字符串占 m列,若字符串长度大于 m,则按实际长度输出,否则若字符串长度小于 m,则字符串右 ( 左 ) 对齐,
左边 ( 或右边 ) 补空格;
%m.ns( 或 %-m.ns),输出字符串占 m列,但只取字符串左端的 n个字符输出,这 n个字符的左边 ( 或右边 ) 补空格;若 n>m,则 m自动取 n的值,保证 n个字符正常输出;若省略 m,则 m等于 n。 如:
printf(“%s,%6s,%-6s,%-4.2s,%4.2\n”,”CHINA”,” CHINA,,”CHINA”,
”CHINA”,”CHINA”);
输出结果为:
CHINA,︺ CHINA,CHINA︺,CH︺︺,CH︺︺
C语言程序设计2006/8/20
第 3章 基本程序语句 57
(7) f格式符:用来以小数形式输出实数(包括单、双精度)。
%f:整数部分全部输出,小数部分输出 6位 。
%m.nf(或 %-m.nf):输出数据占 m列(包括整数部分、小数点和小数部分),小数位数为
n位。如果数值宽度小于 m,则数值靠右(左)
对齐,左边(或右边)补空格;否则,整数部分全部输出,小数部分为 n位;若省略 m,则整数部分全部输出,小数部分为 n位。
C语言程序设计2006/8/20
第 3章 基本程序语句 58
格式举例
main()
{float f=123.456;
printf(“%f %10f %-10.2f %.2f
%10.2f\n”,f,f,f,f,f);
}
结果为,123.456001︺︺ 123.456001︺︺ 123.46︺︺︺︺
︺︺ 123.46︺︺︺︺︺︺ 123.46
C语言程序设计2006/8/20
第 3章 基本程序语句 59
(8) e格式符:以指数形式输出实数
%e:输出数据宽度共占 11位( Turbo
C2.0中),其中整数部分非零数字占 1位,
小数点占 1位,小数部分占 5位,指数部分占 4位( e占 1位,指数符号占 1位,指数占 2位)。
%m.ne(-%m.ne),m,n,-字符的含义与前面的 f格式中相同,这里的 n是指输出的数据的小数部分(又称尾数)的位数。
C语言程序设计2006/8/20
第 3章 基本程序语句 60
(9) g格式符:用来输出实数,根据数值的大小,自动选取 f格式或 e格式(选择输出时占宽度较小的一种)输出,且不输出无意义的 0。
float f=123.456;
printf(“%f,%e,%g\n”,f,f,f);
运行结果为:
123.456001,1.23456e+02,123.456
C语言程序设计2006/8/20
第 3章 基本程序语句 61
d 以带符号的十进制形式输出整数(正数不输出符号)
o 以 8进制无符号形式输出整数(不输出前导符 O)
x(X) 以 16进制无符号形式输出整数(不输出前导符 Ox)
u 以无符号 10进制形式输出整数
c 以字符形式输出一个字符
s 输出字符串
f 以小数形式输出单、双精度数,隐含输出 6位小数
e(E) 以标准指数形式输出单、双精度数,小数位数为 6位
g(G) 选用 %f或 %e格式中输出宽度较短的一种格式
% 百分号
printf格式字符
C语言程序设计2006/8/20
第 3章 基本程序语句 62
5.调用函数 printf时的注意事项
在格式控制字符串中,格式说明与输出项从左到右在类型上必须一一对应匹配。
在格式控制字符串中,格式说明与输出项的个数应该相同。
如果要输出百分号( %),则在格式控制串中用两个连续的百分号( %%)来表示。
在调用 printf函数时,输出项有自增(自减)
运算时,计算输出项的顺序从右至左。
C语言程序设计2006/8/20
第 3章 基本程序语句 63
二,字符输出函数
stdio.h函数原型,int putchar(int)
作用:向标准输出设备 (一般为显示器 )输出一个字符,
并返回返回概字母的 ASCII码值。参数可以是字符常量,
变量或整型数。
putchar(97);
putchar(?\n?);
putchar(?a?);
C语言程序设计2006/8/20
第 3章 基本程序语句 64
3.7 数据的输入一,格式化输入函数 (scanf函数 )
1.格式输入 函数原型
int scanf(char * format [,argument,… ])
函数功能:从键盘输入任何类型的数据给所指定的单元,
并返回输入的数据个数 。
2.格式输入函数 一般形式
scanf(“格式控制字符串,,地址列表 );
“格式控制字符串,的含义与 printf函数相同;,地址列表,
是由若干个地址组成的列表,可以是变量的地址,也可以是字符串的首地址,或后面要学习的指针变量 。
C语言程序设计2006/8/20
第 3章 基本程序语句 65
【 例 3.8】
#include <stdio.h>
main()
{
int a,b;
float c;
scanf(“%d %d %f,,&a,&b,&c);
printf(“a=%db=%dc=%f\n”,a,b,c);
}
运行时,
3︺ 4︺ 4.3↙ (输入数据给变量 a b c)
a=3b=4c=4.300000 (输出结果 )
格式控制字符串说明了需要输入数据的类型:两个整型数和一个单精度实型数。
&a,&b和 &c是变量 a,b和 c的地址。
C语言程序设计2006/8/20
第 3章 基本程序语句 66
3.格式说明
scanf函数中的格式控制字符串中可以包括:普通字符、转义字符和格式说明。
普通字符和转义字符是在程序执行过程中需要从键盘原样输入的内容。
格式说明是以,%”开头,以格式字符结束,中间可以插入长度说明、宽度说明等。
格式字符表示输入数据转换后的数据类型。
C语言程序设计2006/8/20
第 3章 基本程序语句 67
scanf格式字符
d(D) 十进制整数
o(O) 八进制整数
x(X) 十六进制整数
i(I) 自动根据数头分辨十、八、十六进制
u(U) 无符号十进制整数
c 单个字符
s 字符串
f(e,g,G) 实数
C语言程序设计2006/8/20
第 3章 基本程序语句 68
4、使用 scanf应注意,
scanf函数格式控制字符串中的普通字符不是用于输出的,都是要求输入的 。 如 scanf(,x=%d”,&x) ;中的,x=”在运行时要求从键盘输入 。
scanf函数中的参数的第二部分一定是地址列表,不能是表达式,请 记 得 在 变 量 前 加 上 &。 如,scanf
(,%d%d”,a,b) ;这在编译时不出现错误,执行结果会出现混乱 。
在格式控制字符串中,格式说明与输入项从左到右在类型上必须一一对应 。 若不对应,如:
int a,b;
scanf(,%d%f”,&a,&b) ;
则在运行时,系统提示错误,运行终止,返回 0。
C语言程序设计2006/8/20
第 3章 基本程序语句 69
在格式控制字符串中,格式说明与输入项的个数应该相同。若格式说明个数比输入项个数少,多余的输入项则得不到正确数据;若格式说明个数比输入项个数多,
则对于多的格式输入的数据不使用。
执行 scanf( )输入数值型数据时,在两个数据之间允许以一个或多个空格间隔,也可以用回车键,tab键分隔。但在输入字符型数据时,不能用分隔符,否则分隔符也作为有效字符输入给对应的变量。
C语言程序设计2006/8/20
第 3章 基本程序语句 70
如:执行语句
scanf(“%d%d%d”,&a,&b,&c);
以下输入数据的方法都是正确的:
① 3 5 8
② 3
5 8
③ 3
5
8
C语言程序设计2006/8/20
第 3章 基本程序语句 71
执行语句
scanf(“%d%c%d”,&a,&b,&c);
输入第二个数据前不能有分隔符,若输入
3 c 2
则变量 b和 c得不到正确数据。
若输入
3c2
或 3c 2
则能得到正确结果。
C语言程序设计2006/8/20
第 3章 基本程序语句 72
long型数据一定要用 %ld格式输入,double
型数据一定要用 %lf格式输入,否则运行结果错误。
实数输入时不允许规定精度,象 %10.4f是不合法的。
可以指定输入数据所占的宽度,系统自动按指定的宽度截取数据。
如:
scanf(“%2d%3d%2d”,&a,&b,&c);
输入以下数据
121345678
变量 a,b,c的值分别为,12,134,56
C语言程序设计2006/8/20
第 3章 基本程序语句 73
%与格式字符之间有‘ *’号时,该数据会被禁止使用。
如:
scanf(“%2d%*3d%2d”,&a,&b);
输入以下数据
121345678
变量 a,b的值分别为,12,56
中间的 134三位数字跳过去不使用。
在输入数据时,遇到下列情况则认为该数据输入结束:
①遇空格,或回车,Tab键。
②遇指定的宽度结束。
③遇非法输入。
C语言程序设计2006/8/20
第 3章 基本程序语句 74
二、字符输入函数
int getchar(void) stdio.h
从输入设备 (一般为键盘 )上输入一个字符。它每被调用一次,就从标准输入设备上取一个自符,
返回值是该字符的 ASCII编码值。可以赋给字符变量或整型变量。
执行 getchar()是输入字符后要回车。
C语言程序设计2006/8/20
第 3章 基本程序语句 75
3.8 程序举例例 3.9 输入圆的半径,输出圆的周长和面积 。
分析:
1.定义实型变量 r,l,s用于存放半径,周长,面积;
2.调用输入函数,输入 r:
3.分别利用周长公式和面积公式求出 l,s;
4.调用输出函数输出 l,s。
C语言程序设计2006/8/20
第 3章 基本程序语句 76
程序:
#include <stdio.h>
void main()
{float r,l,s;
scanf(,%f,,&r); /*输入一个浮点数据,存入地址 &r */
l = 2 * 3.14159 * r; /*计算周长,赋值给 l */
s = 3.14159 *r * r; /*计算面积,赋值给 s */
printf(“\n l=%8.4f”,l); /*周长占 8个字符宽,4位小数 */
printf(“\n s=%8.4f”,s);
/*输出面积,数据共占 8个字符宽,4位小数 */
}
C语言程序设计2006/8/20
第 3章 基本程序语句 77
分析:
1.输入小写字母存入变量 a;
2.转换成大写 a = a-32;
3.输出 a.
例 3.10 从键盘输入一个小写字母,用大写形式输出该字母。
C语言程序设计2006/8/20
第 3章 基本程序语句 78
#include,stdio.h”
void main()
{ char a;
printf(“Input a lowercase letter:,);
a = getchar();
a = a-32; /*将大写字母转换成对应的小写字母 */
printf(“%c \n”,a);
}
思考,如何使程序可以处理任何字符的输入 。 即判断输入的是小写字母,才转换成大写;如果输入的其他字符,则直接输出 。
程序:
C语言程序设计2006/8/20
第 3章 基本程序语句 79
例 3.11 从键盘输入一个学生三门课程的成绩,
求其平均成绩并输出,保留一位小数。
分析:
1.输入三门课程成绩存入变量 a,b,c;
2.求平均成绩 aver=(a+b+c)/3;
3.输出 aver。
C语言程序设计2006/8/20
第 3章 基本程序语句 80
#include,stdio.h”
void main()
{
float a,b,c,aver;
printf(“input a,b,c:,);
scanf(“%f%f%f”,&a,&b,&c);
aver=(a+b+c)/3;
printf(“%.1f \n”,aver);
}
程序:
C语言程序设计2006/8/20
第 3章 基本程序语句 81
分析:
1.输入两个整数存入变量 x和 y;
2.交换两变量 x和 y的值;
3.输出 a。
对第 2步再细化:
2.1 把 x的值先赋给一个临时变量 t,t=x;
2.2 把 y的值赋给变量 x,x=y;
2.3 把 t的值赋给变量 y,y=t。
例 3.12 从键盘输入两个整数给两个变量 x和 y,
交换变量 x和 y和值,然后输出。
C语言程序设计2006/8/20
第 3章 基本程序语句 82
#include,stdio.h”
void main()
{
int x,y,t;
printf(“input x,y:”);
scanf(“%d%d”,&x,&y);
t=x;
x=y;
y=t;
printf(“x=%d y=%d \n”,x,y);
}
程序:
本章小结
C语言的运算符丰富,数据类型也丰富,
库函数多 。 C语言本身没有提供输入输出语句,其输入输出操作都是通过函数调用来实现的 。
本章介绍了常用的几种运算符、基本的数据类型以及输入输出标准函数,并且通过实例说明了编制简单程序的方法。