C语言初学者入门讲座 第三讲 基础语句
从程序流程的角度来看,程序可以分为三种基本结构, 即顺序结构、分支结构、循环结构。 这三种基本结构可以组成所有的各种复杂程序。C语言提供了多种语句来实现这些程序结构。 本文将介绍这些基本语句及其应用,使读者对C程序有一个初步的认识, 为以后的学习打下基础。 9 n7 c7 |! i# y/ A) L# d3 Q, B9 j
我爱电脑技术社区--打造最好的电脑技术自学交流平台$ k% P7 q# T# C& `3 l% y+ y: E
C程序的语句
7 }& _! a- K: ` s我爱电脑技术论坛
# D" T9 g# T) C1 L8 m. Z L+ S7 [6 Z3 B C程序的执行部分是由语句组成的。 程序的功能也是由执行语句实现的。
! j t" o7 a2 S. M" z4 H电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站1 g( k3 G9 @7 H, t! y8 T, w
C语句可分为以下五类:
+ d7 `3 g/ `6 n! N& t我爱电脑技术论坛
3 X2 H* C5 W' z2 D/ A' E$ i: U( R我爱电脑技术社区--打造最好的电脑技术自学交流平台 1.表达式语句我爱电脑技术社区--打造最好的电脑技术自学交流平台8 E: p x f$ {. ~
2.函数调用语句电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站; b( P+ U1 u0 Q0 G( y$ P
3.控制语句
7 l1 s5 v- a" k2 B: r, r我爱电脑技术论坛 4.复合语句我爱电脑技术社区--打造最好的电脑技术自学交流平台 c |) W0 \: Z/ e; O2 ~# N
5.空语句我爱电脑技术论坛6 g9 [ k8 v- }* v, Z/ z4 c
4 y. F( ?! i) r( o电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站 1.表达式语句
# D( }+ j- e$ w7 Q' o% Q打造最好的电脑自学交流论坛3 n& v- S5 L+ y0 A \, i
表达式语句由表达式加上分号“;”组成。其一般形式为: 表达式; 执行表达式语句就是计算表达式的值。例如: x=y+z; 赋值语句y+z; 加法运算语句,但计算结果不能保留,无实际意义i++; 自增1语句,i值增1电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站2 X+ N) @' c+ |! V1 S; m- M* L
5 ]5 H1 ^7 z% H# M' W 2.函数调用语句
3 D, v0 S& Q4 U. R/ Nwww.520diannao.com* k/ `+ J+ f5 ]" P4 p2 y
由函数名、实际参数加上分号“;”组成。其一般形式为: 函数名(实际参数表); 执行函数语句就是调用函数体并把实际参数赋予函数定义中的形式参数,然后执行被调函数体中的语句,求取函数值。(在第五章函数中再详细介绍)例如printf("C Program");调用库函数,输出字符串。www.520diannao.com+ K, u3 J+ k* f+ v& J+ d7 f
打造最好的电脑自学交流论坛, A# [5 e9 Z* A% @; j
3.控制语句打造最好的电脑自学交流论坛. B6 R0 i6 s5 b3 G" a
打造最好的电脑自学交流论坛2 O% L. |9 p3 h
控制语句用于控制程序的流程, 以实现程序的各种结构方式。
0 e g) {/ j: M) p( E
! L- K" z; j* B9 N" F0 e电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站 它们由特定的语句定义符组成。C语言有九种控制语句。 可分成以下三类:我爱电脑技术社区--打造最好的电脑技术自学交流平台, {9 n" }6 V; i: b3 @9 e# r+ d
www.520diannao.com* G; d# H# ?, q) V5 q# I
(1) 条件判断语句www.520diannao.com( H1 c6 g8 x" E' R S9 ~
4 H2 m: r' P. M6 a我爱电脑技术论坛 if语句,switch语句
9 m( }2 |* j! [' z3 w打造最好的电脑自学交流论坛
) z( R. k5 Q/ `9 k0 z% ?打造最好的电脑自学交流论坛 (2) 循环执行语句电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站8 O O( R: `( J: e1 A9 S" w
j! z0 a/ R' g- c* S% A: G& B打造最好的电脑自学交流论坛 do while语句,while语句,for语句
( e/ A9 N0 C3 `& L6 b- _9 K3 T电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站
' P% s$ S4 C& k4 p6 ^www.520diannao.com (3) 转向语句
! H. b# B( _, D5 wwww.520diannao.com
+ ^1 K: Q/ @& a1 Y* F$ M break语句,goto语句,continue语句,return语句
2 T7 T0 b4 g J我爱电脑技术论坛我爱电脑技术社区--打造最好的电脑技术自学交流平台) @5 g4 w" H- b# `
4.复合语句
& H7 U! C" n9 ], awww.520diannao.com
( N7 t/ R. {' S$ u5 n电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站 把多个语句用括号{}括起来组成的一个语句称复合语句。 在程序中应把复合语句看成是单条语句,而不是多条语句,例如 电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站1 ?9 J: A2 B" v+ h
6 e' ?0 w4 d. ^" P9 h, W6 g
{我爱电脑技术论坛! ^8 g5 s* b# p; m5 V4 z
x=y+z;
- C& j6 @, G: D9 f% n, | a=b+c;
+ t" ?8 R- W" ?. \0 \7 i) a打造最好的电脑自学交流论坛 printf(“%d%d”,x,a);
* l: n/ p* A) N8 U8 K}
+ e8 l$ w0 F. m1 O/ T w. @. y. @www.520diannao.com
4 L) z0 B% f% Y" fwww.520diannao.com 是一条复合语句。复合语句内的各条语句都必须以分号“;”结尾,在括号“}”外不能加分号。www.520diannao.com5 ]& V* X3 }7 O$ L- _
电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站! `5 k4 T# \% e3 m5 J3 p
5.空语句电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站' S% ^- [# m/ V, I
打造最好的电脑自学交流论坛( p5 l+ P, r; Q# C
只有分号“;”组成的语句称为空语句。 空语句是什么也不执行的语句。在程序中空语句可用来作空循环体。例如 while(getchar()!='\n'); 本语句的功能是,只要从键盘输入的字符不是回车则重新输入。这里的循环体为空语句。
2 x( g* ?1 h% m; [ ~: B6 d
3 Q2 P% K+ E! Kwww.520diannao.com 赋值语句
3 r) k" m: V/ [4 M9 ~* Z打造最好的电脑自学交流论坛
/ t; l/ K, ?" D7 n我爱电脑技术社区--打造最好的电脑技术自学交流平台 赋值语句是由赋值表达式再加上分号构成的表达式语句。 其一般形式为: 变量=表达式; 赋值语句的功能和特点都与赋值表达式相同。 它是程序中使用最多的语句之一。 在赋值语句的使用中需要注意以下几点:电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站4 N: k8 b- d. ~( j
7 d- v7 _! }0 K: _7 U我爱电脑技术论坛 1.由于在赋值符“=”右边的表达式也可以又是一个赋值表达式,因此,下述形式 变量=(变量=表达式); 是成立的,从而形成嵌套的情形。其展开之后的一般形式为: 变量=变量=…=表达式;
$ ?7 A/ k" V/ u电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站打造最好的电脑自学交流论坛% r/ [, y4 |- Z8 }" x0 r- T
例如:
?6 s# H$ {. u$ W; }我爱电脑技术论坛3 _/ _$ u4 G" Y5 `. t
a=b=c=d=e=5;按照赋值运算符的右接合性,因此实际上等效于: 2 e/ j* L* L- \/ T) a+ C; ?
打造最好的电脑自学交流论坛0 c4 w' ~. H0 ]2 k) _0 y# I
e=5;2 Q; E+ o2 G5 ], x/ r; i
d=e;
: g* v! r- R/ I我爱电脑技术社区--打造最好的电脑技术自学交流平台c=d;
3 c0 ~, M: P7 t8 K3 q' C: sb=c;
( R$ p9 ?4 B* o% ~8 J$ U我爱电脑技术论坛a=b;我爱电脑技术社区--打造最好的电脑技术自学交流平台1 {4 M; Q4 M7 s* k A3 G
) x% A6 y- N7 i8 _* r9 k* |+ N 2.注意在变量说明中给变量赋初值和赋值语句的区别。给变量赋初值是变量说明的一部分,赋初值后的变量与其后的其它同类变量之间仍必须用逗号间隔,而赋值语句则必须用分号结尾。
' ]3 w: A" I4 b& \. x! N6 i打造最好的电脑自学交流论坛
: H8 k. S6 J5 S' S7 _$ c我爱电脑技术社区--打造最好的电脑技术自学交流平台 3.在变量说明中,不允许连续给多个变量赋初值。 如下述说明是错误的: int a=b=c=5 必须写为 int a=5,b=5,c=5; 而赋值语句允许连续赋值。# _/ X9 }7 w5 c" @3 m% u
电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站# q, Z3 W! X8 p! ]- J
4.注意赋值表达式和赋值语句的区别。赋值表达式是一种表达式,它可以出现在任何允许表达式出现的地方,而赋值语句则不能。
) S5 O: I: t' jwww.520diannao.com
- G; [+ {8 Z9 U$ @2 w 下述语句是合法的: # N9 ]5 G( s( U5 M* @" p
3 W* K* ^5 T2 _; U' y z打造最好的电脑自学交流论坛 if((x=y+5)>0) z=x;
2 H# k" F" \1 h& n6 v% A5 H. U打造最好的电脑自学交流论坛
; r6 y9 [, w. k- w我爱电脑技术社区--打造最好的电脑技术自学交流平台 语句的功能是,若表达式x=y+5大于0则z=x。
2 f X$ |1 z& b6 _: `打造最好的电脑自学交流论坛
9 ~( V, A% @! i7 V我爱电脑技术社区--打造最好的电脑技术自学交流平台 下述语句是非法的:
9 R: K9 p1 h) o# b4 y1 R打造最好的电脑自学交流论坛电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站/ L: o* e1 ~; k: x/ Q+ x) H+ }
if((x=y+5;)>0) z=x; 电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站& D G4 @+ w! C) u, a" G
打造最好的电脑自学交流论坛' R; c3 Z# ?& F3 n
因为=y+5;是语句,不能出现在表达式中。我爱电脑技术社区--打造最好的电脑技术自学交流平台# ]" ]5 A$ I* f8 X i, v
C语言初学者入门讲座 第四讲 运算符和表达式- z1 I1 h7 r" ^, g
运算符的种类、优先级和结合性
) r& }) u% R: b0 \我爱电脑技术论坛 C语言中运算符和表达式数量之多, 在高级语言中是少见的。正是丰富的运算符和表达式使C语言功能十分完善。 这也是C语言的主要特点之一。我爱电脑技术论坛4 J: }' F) w4 B4 K- O) T- V3 s
C语言的运算符不仅具有不同的优先级, 而且还有一个特点,就是它的结合性。在表达式中, 各运算量参与运算的先后顺序不仅要遵守运算符优先级别的规定,还要受运算符结合性的制约, 以便确定是自左向右进行运算还是自右向左进行运算。 这种结合性是其它高级语言的运算符所没有的,因此也增加了C语言的复杂性。$ j% N' l( T. J+ L* O
运算符的种类C语言的运算符可分为以下几类:
1 J+ S# \$ Y7 R( p* `$ k打造最好的电脑自学交流论坛 1.算术运算符
7 Y0 V" Y0 I7 @7 T k C& g电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站 用于各类数值运算。包括加(+)、减(-)、乘(*)、除(/)、求余(或称模运算,%)、自增(++)、自减(--)共七种。打造最好的电脑自学交流论坛, ~' U0 @- v2 D+ g, W
2.关系运算符
. f# H" G; m& \( p8 t3 X打造最好的电脑自学交流论坛 用于比较运算。包括大于(>)、小于(=)、小于等于(>)六种。
* Y: x9 I- T. u- e! p4 ]3 Y7 j我爱电脑技术社区--打造最好的电脑技术自学交流平台 5.赋值运算符
* U$ d' l( R$ o# `www.520diannao.com 用于赋值运算,分为简单赋值(=)、复合算术赋值(+=,-=,*=,/=,%=)和复合位运算赋值(&=,|=,^=,>>=,p,i+1-->i,i+1-->i,i+1-->i
' d' m9 u6 `" @www.520diannao.comj+1->j,j+1->j,j+1->j,j+j+j->q int i=5,j=5,p,q;www.520diannao.com; F7 a3 g% T( x; U
p=(i++)+(i++)+(i++);
" n* g0 N* ]6 xq=(++j)+(++j)+(++j); 打造最好的电脑自学交流论坛0 I/ U7 z T7 l0 j O- P6 Q
这个程序中,对P=(i++)+(i++)+(i++)应理解为三个i相加,故P值为15。然后i再自增1三次相当于加3故i的最后值为8。而对于q 的值则不然,q=(++j)+(++j)+(++j)应理解为q先自增1,再参与运算,由于q自增1三次后值为8,三个8相加的和为24,j的最后值仍为8。算术表达式表达式是由常量、变量、函数和运算符组合起来的式子。 一个表达式有一个值及其类型, 它们等于计算表达式所得结果的值和类型。表达式求值按运算符的优先级和结合性规定的顺序进行。 单个的常量、变量、函数可以看作是表达式的特例。
6 l( G: |, K: K$ _打造最好的电脑自学交流论坛 算术表达式我爱电脑技术论坛/ A8 F. g2 A1 y8 k% l; q
是由算术运算符和括号连接起来的式子, 以下是算术表达式的例子:
+ B2 m9 V7 I6 C( o i/ ]( Ma+b (a*2)/c (x+r)*8-(a+b)/7 ++i sin(x)+sin(y) (++i)-(j++)+(k--)
9 d; w) h4 I0 k我爱电脑技术社区--打造最好的电脑技术自学交流平台 赋值运算符和赋值表达式
2 I5 i# U( k* E5 M- o打造最好的电脑自学交流论坛 简单赋值运算符和表达式,简单赋值运算符记为“=”。由“= ”连接的式子称为赋值表达式。其一般形式为: 变量=表达式 例如:电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站9 o2 G- [. b" \) E$ A8 \7 }* J, w
x=a+b
5 T8 H! v+ n. [& ~/ Y% ew=sin(a)+sin(b)电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站+ E! n+ D, T5 Z6 l e
y=i+++--j 赋值表达式的功能是计算表达式的值再赋予左边的变量。赋值运算符具有右结合性。因此打造最好的电脑自学交流论坛# A+ V) P$ C5 H+ y4 L
a=b=c=5
, x2 C. W- V) `1 i& U2 K电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站 可理解为www.520diannao.com5 u R3 s/ ~. X9 \! U' w
a=(b=(c=5))
4 b8 Q4 a# I7 l+ k. X电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站 在其它高级语言中,赋值构成了一个语句,称为赋值语句。 而在C中,把“=”定义为运算符,从而组成赋值表达式。 凡是表达式可以出现的地方均可出现赋值表达式。例如,式子x=(a=5)+(b=8)是合法的。它的意义是把5赋予a,8赋予b,再把a,b相加,和赋予x ,故x应等于13。
) v" s8 ]- ]/ ^我爱电脑技术社区--打造最好的电脑技术自学交流平台 在C语言中也可以组成赋值语句,按照C语言规定, 任何表达式在其未尾加上分号就构成为语句。因此如x=8;a=b=c=5;都是赋值语句,在前面各例中我们已大量使用过了。
" \7 g. C/ ?$ f+ r电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站 如果赋值运算符两边的数据类型不相同, 系统将自动进行类型转换,即把赋值号右边的类型换成左边的类型。具体规定如下:
9 X1 b1 d; R7 n我爱电脑技术论坛 1.实型赋予整型,舍去小数部分。前面的例2.9已经说明了这种情况。我爱电脑技术社区--打造最好的电脑技术自学交流平台5 r3 @" w" E7 J; x3 L: c5 |
2.整型赋予实型,数值不变,但将以浮点形式存放, 即增加小数部分(小数部分的值为0)。
v9 k8 L M4 `( W6 R6 M我爱电脑技术社区--打造最好的电脑技术自学交流平台 3.字符型赋予整型,由于字符型为一个字节, 而整型为二个字节,故将字符的ASCII码值放到整型量的低八位中,高八位为0。- R9 [5 L' a7 f* p) |3 V" C! H8 p- S
4.整型赋予字符型,只把低八位赋予字符量。
& G9 d% i ?7 b& n" L我爱电脑技术社区--打造最好的电脑技术自学交流平台void main(){我爱电脑技术社区--打造最好的电脑技术自学交流平台, f5 d* g2 [, u+ `# d
int a,b=322;打造最好的电脑自学交流论坛) z9 P0 _) b# f8 W
float x,y=8.88;
+ f( ^- M4 }8 _* W: L! V" P* W我爱电脑技术论坛 char c1='k',c2;
: ~8 d v8 @ s& k4 C2 J我爱电脑技术论坛 a=y;我爱电脑技术社区--打造最好的电脑技术自学交流平台6 l, k1 `+ o2 D6 C
x=b;打造最好的电脑自学交流论坛) t6 E. Z: C0 M6 N, J3 z
a=c1;
^7 i7 `5 e$ |: D! Z1 ~, {! l c2=b;
0 j1 Z% @; a! [电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站 printf("%d,%f,%d,%c",a,x,a,c2);
+ ^9 d/ A9 n/ l! R& R# ~我爱电脑技术社区--打造最好的电脑技术自学交流平台}我爱电脑技术社区--打造最好的电脑技术自学交流平台" b* k$ }0 }& ?; y& K" x
int a,b=322;
, x% ~0 p. H% O& ~+ Dwww.520diannao.comfloat x,y=8.88;) \# n; Z4 T( B
char c1='k',c2;我爱电脑技术论坛. K; C6 f: E: J- H& J
printf("%d,%f,%d,%c",a=y,x=b,a=c1,c2=b);
; G- E8 Z I2 d7 G3 g( f! L) d打造最好的电脑自学交流论坛 本例表明了上述赋值运算中类型转换的规则。a为整型,赋予实型量y值888后只取整数8。x为实型,赋予整型量b值322, 后增加了小数部分。字符型量c1赋予a变为整型,整型量b赋予c2 后取其低八位成为字符型(b的低八位为01000010,即十进制66,按ASCII码对应于字符B)。
- z: P' J- m1 D: m& ^. C我爱电脑技术社区--打造最好的电脑技术自学交流平台 复合赋值符及表达式
. o' f: q! M! i# z打造最好的电脑自学交流论坛 在赋值符“=”之前加上其它二目运算符可构成复合赋值符。如
I4 N. F& E- @) t0 R电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站+=,-=,*=,/=,%=,>=,&=,^=,|=。 构成复合赋值表达式的一般形式为: 变量 双目运算符=表达式 它等效于 变量=变量 运算符 表达式 例如: a+=5 等价于a=a+5 x*=y+7 等价于x=x*(y+7) r%=p 等价于r=r%p 复合赋值符这种写法,对初学者可能不习惯, 但十分有利于编译处理,能提高编译效率并产生质量较高的目标代码。逗号运算符和逗号表达式在打造最好的电脑自学交流论坛& g+ r e- z9 M. B% q/ o
逗号运算符
) `7 P# W7 L: B& `我爱电脑技术社区--打造最好的电脑技术自学交流平台 C语言中逗号“,”也是一种运算符,称为逗号运算符。 其功能是把两个表达式连接起来组成一个表达式, 称为逗号表达式。0 B& ]. e' l+ a% K. T
其一般形式为: 表达式1,表达式2 其求值过程是分别求两个表达式的值,并以表达式2的值作为整个逗号表达式的值。打造最好的电脑自学交流论坛% W& l' M. j3 C* K+ e* Q* R8 a
void main(){2 o# | i) z$ `. N
int a=2,b=4,c=6,x,y;
8 v8 \( ]1 [( s1 y p$ B/ ~( owww.520diannao.com y=(x=a+b),(b+c);
- f9 j+ m# _3 H$ e8 m" w+ i printf("y=%d,x=%d",y,x);
+ }2 n! M, s* E* u' f7 r$ o( g8 L4 i我爱电脑技术论坛}我爱电脑技术论坛# K! u6 W1 g; y7 ~7 a" l
a<--2,b<--4,c<--6,x<--0,y<--0
, e0 G6 Q C; Z" Y' I ^打造最好的电脑自学交流论坛x<--a+b,y<---b+c . ]: C9 p# A2 }+ w2 l+ g
本例中,y等于整个逗号表达式的值,也就是表达式2的值,x是第一个表达式的值。对于逗号表达式还要说明两点:www.520diannao.com8 c+ | U% G& q9 }: e0 H5 {
1.逗号表达式一般形式中的表达式1和表达式2 也可以又是逗号表达式。例如: 表达式1,(表达式2,表达式3) 形成了嵌套情形。因此可以把逗号表达式扩展为以下形式: 表达式1,表达式2,…表达式n 整个逗号表达式的值等于表达式n的值。
7 j3 T, g0 u# Y 2.程序中使用逗号表达式,通常是要分别求逗号表达式内各表达式的值,并不一定要求整个逗号表达式的值。
# g' f: Y. r6 I7 j打造最好的电脑自学交流论坛 3.并不是在所有出现逗号的地方都组成逗号表达式,如在变量说明中,函数参数表中逗号只是用作各变量之间的间隔符。
9 X" l3 l+ h" V& g& r& D电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站C语言初学者入门讲座 第五讲 输入输出(1)
) E- z+ h0 j5 y& |打造最好的电脑自学交流论坛www.520diannao.com4 h! w9 t5 `! Z1 G! C6 s
数据输出语句
- A, b. p7 k/ ?, `8 h% g( U$ C3 U电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站www.520diannao.com7 I% A# m8 L, J9 K: D
本小节介绍的是向标准输出设备显示器输出数据的语句。在C语言中,所有的数据输入/输出都是由库函数完成的。 因此都是函数语句。本小节先介绍printf函数和putchar函数。printf函数printf函数称为格式输出函数,其关键字最末一个字母f即为“格式”(format)之意。其功能是按用户指定的格式, 把指定的数据显示到显示器屏幕上。在前面的例题中我们已多次使用过这个函数。
0 } w& G# k4 F+ P我爱电脑技术社区--打造最好的电脑技术自学交流平台+ g/ h7 p/ Q4 s5 u
一、printf函数调用的一般形式
6 }" ^; R# z# O; g' Q, H我爱电脑技术社区--打造最好的电脑技术自学交流平台
5 A* A7 U7 g8 ?) E% c6 ~www.520diannao.com printf函数是一个标准库函数,它的函数原型在头文件“stdio.h”中。但作为一个特例,不要求在使用 printf 函数之前必须包含stdio.h文件。printf函数调用的一般形式为: printf(“格式控制字符串”,输出表列)其中格式控制字符串用于指定输出格式。 格式控制串可由格式字符串和非格式字符串两种组成。格式字符串是以%开头的字符串,在%后面跟有各种格式字符,以说明输出数据的类型、形式、长度、小数位数等。如“%d”表示按十进制整型输出,“%ld”表示按十进制长整型输出,“%c”表示按字符型输出等。后面将专门给予讨论。
' c0 V7 w0 A$ m3 P: K打造最好的电脑自学交流论坛/ g: _' ~0 w1 m+ q' m: p
非格式字符串在输出时原样照印,在显示中起提示作用。 输出表列中给出了各个输出项, 要求格式字符串和各输出项在数量和类型上应该一一对应。电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站4 t# H' S8 O- [2 n6 Z/ H/ A
" P! I8 `; H- K打造最好的电脑自学交流论坛void main()
N" X/ a' K; \/ x- c+ ewww.520diannao.com{
5 c! h0 ~. E. U) I" ~6 g3 \打造最好的电脑自学交流论坛int a=88,b=89;电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站! c4 i# @8 ^% r7 h4 K
printf("%d %d\n",a,b);
+ ]) U5 B0 F. w4 ]$ ~打造最好的电脑自学交流论坛printf("%d,%d\n",a,b);打造最好的电脑自学交流论坛8 ?" u0 M$ }+ V' o1 |
printf("%c,%c\n",a,b);电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站& V3 Q- R. G% F% f. b F
printf("a=%d,b=%d",a,b);
4 k$ g8 K, t& V# _& {}电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站$ L2 W. J" E9 P' B- g
a<--8,b<--89
0 M4 [$ J% e2 }+ L( H6 p' Dwww.520diannao.com
K$ i9 C! ~+ D8 ~1 t" d. dprintf("%d %d\n",a,b);www.520diannao.com# `. x( S& O$ }/ B
printf("%d,%d\n",a,b);打造最好的电脑自学交流论坛6 ^2 N3 I! h1 u! V5 F
printf("%c,%c\n",a,b);www.520diannao.com [2 U$ X4 r/ e# }$ |
printf("a=%d,b=%d",a,b); 我爱电脑技术论坛- F* x1 i2 ^0 q% U6 \! e
# `* ~" T' C: U; ^5 f B8 ]9 N打造最好的电脑自学交流论坛 本例中四次输出了a,b的值,但由于格式控制串不同,输出的结果也不相同。第四行的输出语句格式控制串中,两格式串%d 之间加了一个空格(非格式字符),所以输出的a,b值之间有一个空格。第五行的printf语句格式控制串中加入的是非格式字符逗号, 因此输出的a,b值之间加了一个逗号。第六行的格式串要求按字符型输出 a,b值。第七行中为了提示输出结果又增加了非格式字符串。
% L( f1 w- B; h) h% w" u7 x- zwww.520diannao.com
. K1 c9 l- F$ swww.520diannao.com ^4 \" D3 i! O* A5 l% c2 X' d. B
二、格式字符串
' E( ^- n, L5 M1 C' P/ h电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站
/ @; x3 ~! E* W8 S1 e& D) awww.520diannao.com 在Turbo C中格式字符串的一般形式为: [标志][输出最小宽度][.精度][长度]类型 其中方括号[]中的项为可选项。各项的意义介绍如下:打造最好的电脑自学交流论坛4 @6 k. w( G w: V7 g: h2 q2 l
: y" t6 Y; a$ w4 l4 v8 F J l) _. u电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站 1.类型类型字符用以表示输出数据的类型,其格式符和意义下表所示:
1 w% c9 M z6 h- W我爱电脑技术论坛$ H, T" T' E5 L: G4 ?
表示输出类型的格式字符 格式字符意义
1 K! g5 `- p6 j3 J' J打造最好的电脑自学交流论坛d 以十进制形式输出带符号整数(正数不输出符号) 我爱电脑技术论坛2 P0 g3 i) O0 h# R
o 以八进制形式输出无符号整数(不输出前缀O) 我爱电脑技术论坛- y) Y; M! L+ W6 H9 e
x 以十六进制形式输出无符号整数(不输出前缀OX)
, D, U8 _6 l! |$ d我爱电脑技术社区--打造最好的电脑技术自学交流平台u 以十进制形式输出无符号整数
9 M0 u n2 o) h$ R电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站f 以小数形式输出单、双精度实数 4 k& a+ ~4 C; @. ?0 n. c
e 以指数形式输出单、双精度实数 www.520diannao.com% ^2 V5 Z2 a* I4 A5 t: S) D6 J3 H
g 以%f%e中较短的输出宽度输出单、双精度实数 电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站# L, H4 r" v& f) S$ Z
c 输出单个字符 , u/ D! D: M+ l, v* _) J
s 输出字符串
- \+ c: x: ]: D+ O7 @7 J! q我爱电脑技术论坛 www.520diannao.com3 y9 l0 S) G1 \
2.标志
3 G! G0 ] p9 r" A' L6 H* ?打造最好的电脑自学交流论坛电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站$ v3 f5 @) x, J# R
标志字符为-、+、#、空格四种,其意义下表所示: 我爱电脑技术社区--打造最好的电脑技术自学交流平台* f$ \3 a) w- ]8 j
, G: \ I6 A, z/ h9 V8 c. w# W我爱电脑技术社区--打造最好的电脑技术自学交流平台标志格式字符 标 志 意 义
, c. ^# n) O5 X9 {打造最好的电脑自学交流论坛- 结果左对齐,右边填空格 打造最好的电脑自学交流论坛* ]3 K$ ^! P! k* t6 L8 u
+ 输出符号(正号或负号)空格输出值为正时冠以空格,为负时冠以负号
2 T; N% K& y6 X9 g4 d9 r( `电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站# 对c,s,d,u类无影响;对o类, 在输出时加前缀。对x类,在输出时加前缀0x;对e,g,f 类当结果有小数时才给出小数点
0 g3 M7 A; i9 j/ @我爱电脑技术论坛 ! F+ z2 v2 |* s8 o) t8 g3 C3 S
3.输出最小宽度我爱电脑技术社区--打造最好的电脑技术自学交流平台. ~; ]! b* ^; b. i, f1 H& q. A
打造最好的电脑自学交流论坛5 q( L7 ]& [- D# }
用十进制整数来表示输出的最少位数。 若实际位数多于定义的宽度,则按实际位数输出, 若实际位数少于定义的宽度则补以空格或0。
& I( U& E Y/ twww.520diannao.com
8 M9 R) P" G: m# W9 Z0 t我爱电脑技术论坛 4.精度www.520diannao.com1 q Q9 ]6 g+ N/ x; u8 q2 B8 \! f
! D' B6 T" `* _( A. n+ p5 ^我爱电脑技术社区--打造最好的电脑技术自学交流平台 精度格式符以“.”开头,后跟十进制整数。本项的意义是:如果输出数字,则表示小数的位数;如果输出的是字符, 则表示输出字符的个数;若实际位数大于所定义的精度数,则截去超过的部分。
$ v2 e; ]% c4 O2 Ewww.520diannao.com
$ X y+ }9 U- N6 @7 ?' V5 U- Y: _9 x我爱电脑技术社区--打造最好的电脑技术自学交流平台 5.长度# u% U5 b& _) R7 H
z& J( n* \; m+ a2 E6 @9 | 长度格式符为h,l两种,h表示按短整型量输出,l表示按长整型量输出。
. ?7 D( A- O8 k- u我爱电脑技术论坛打造最好的电脑自学交流论坛7 V) g0 a/ L* Y4 H; H4 F: u4 Y
void main(){电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站1 E ^: R! a' [
int a=15;
8 [5 l# Y4 q6 `4 cwww.520diannao.comfloat b=138.3576278;我爱电脑技术社区--打造最好的电脑技术自学交流平台0 q2 H0 [4 {+ D. U7 P( A* S: I
double c=35648256.3645687;
9 ?9 o0 q6 D- t: ^ U我爱电脑技术论坛char d='p';7 }; u0 p% m' x. |2 H" C3 j! R
printf("a=%d,%5d,%o,%x\n",a,a,a,a);
) U0 k) ^: _ a( a电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站printf("b=%f,%lf,%5.4lf,%e\n",b,b,b,b);
, n- [+ z& W- r( Z2 _6 l$ h我爱电脑技术社区--打造最好的电脑技术自学交流平台printf("c=%lf,%f,%8.4lf\n",c,c,c);
% T6 g& ~! {. z2 x打造最好的电脑自学交流论坛printf("d=%c,%8c\n",d,d);
5 d, `, l( K6 P9 T9 K* q* f; Y电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站} a<--15
* z0 _% Y+ A. B) c2 E. }b<--138.3576278
) A% I5 [& R# L2 T0 V+ r电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站c<--35648256.3645687
8 i3 q, p7 z) Z) X e/ U+ W* k1 o- ]* O我爱电脑技术论坛d<--'p' main()
1 E7 G8 n# o5 G A1 f Y我爱电脑技术社区--打造最好的电脑技术自学交流平台{我爱电脑技术社区--打造最好的电脑技术自学交流平台+ k( d$ Z- Q! ?. J) ]
int a=29;
; f `0 M$ O7 G; N! R. n. Mfloat b=1243.2341;
3 J6 I g* W' c6 [$ c0 @% m% A我爱电脑技术社区--打造最好的电脑技术自学交流平台double c=24212345.24232;我爱电脑技术论坛/ M7 {2 S4 b: i5 M) o: U2 H
char c='h'
# S. A+ p* l% Z1 [7 wprintf("a=%d,%5d,%o,%x\n",a,a,a,a);www.520diannao.com$ W, c) ~6 ~$ F, N9 E
printf("b=%f,%lf,%5.4lf,%e\n",b,b,b,b);
& N$ w# i' `' T" s8 U打造最好的电脑自学交流论坛printf("c=%lf,%f,%8.4lf\n",c,c,c);打造最好的电脑自学交流论坛6 v& P* B T, U4 b
printf("d=%c,%8c\n",d,d);我爱电脑技术社区--打造最好的电脑技术自学交流平台% U' p0 S# p H# c
} 打造最好的电脑自学交流论坛+ O8 u7 K- U* s
电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站* r& Q. L ` X
本例第七行中以四种格式输出整型变量a的值,其中“%5d ”要求输出宽度为5,而a值为15只有两位故补三个空格。 第八行中以四种格式输出实型量b的值。其中“%f”和“%lf ”格式的输出相同,说明“l”符对“f”类型无影响。“%5.4lf”指定输出宽度为5,精度为4,由于实际长度超过5故应该按实际位数输出,小数位数超过4位部分被截去。第九行输出双精度实数,“%8.4lf ”由于指定精度为4位故截去了超过4位的部分。第十行输出字符量d,其中“%bc ”指定输出宽度为8故在输出字符p之前补加7个空格。电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站- _; Q$ U: Y0 m; \
9 f1 E; m* `. S( s
使用printf函数时还要注意一个问题, 那就是输出表列中的求值顺序。不同的编译系统不一定相同,可以从左到右, 也可从右到左。Turbo C是按从右到左进行的。如把例2.13改写如下述形式:* X6 H1 C5 v: B/ r. j
打造最好的电脑自学交流论坛% i- [, W" P6 ^$ V
void main(){电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站 w+ h: O5 E- s1 ^0 `2 j: a- P
int i=8;
$ B9 o V4 ?9 N+ K6 ~www.520diannao.com printf("%d\n%d\n%d\n%d\n%d\n%d\n",++i,--i,i--,i++,-i--);
3 w! i- i' r; |' nwww.520diannao.com}
6 K6 x. G/ X1 @1 l我爱电脑技术论坛i<--8 我爱电脑技术论坛- G6 a0 g# @6 o+ E7 R1 ]
电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站: q9 |1 H& L) N0 ]
这个程序与例2.13相比只是把多个printf语句改一个printf 语句输出。但从结果可以看出是不同的。为什么结果会不同呢?就是因为printf函数对输出表中各量求值的顺序是自右至左进行 的。在式中,先对最后一项“-i--”求值,结果为-8,然后i自减1后为7。 再对“-i++”项求值得-7,然后i自增1后为8。再对“i--”项求值得8,然后i再自减1后为7。再求“i++”项得7,然后I再自增1后为8。 再求“--i”项,i先自减1后输出,输出值为7。 最后才求输出表列中的第一项“++i”,此时i自增1后输出8。但是必须注意, 求值顺序虽是自右至左,但是输出顺序还是从左至右, 因此得到的结果是上述输出结果。
4 h I6 |9 h9 J& Q3 Q6 e电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站www.520diannao.com/ d8 ~: _# e% x. o
字符输出函数
$ p: L+ c" [6 x打造最好的电脑自学交流论坛www.520diannao.com4 G* A" o) p# V
putchar 函数
- [; j" \% H$ h3 @9 s打造最好的电脑自学交流论坛
# N2 r. J9 u! f! `; H4 I9 Wwww.520diannao.com putchar 函数是字符输出函数, 其功能是在显示器上输出单个字符。其一般形式为: putchar(字符变量) 例如:我爱电脑技术论坛# J( @4 R7 E& C8 [
www.520diannao.com+ z) Q5 F) {9 @( m
putchar('A'); 输出大写字母A我爱电脑技术社区--打造最好的电脑技术自学交流平台$ t. n$ S7 `0 W" n) [, J
putchar(x); 输出字符变量x的值打造最好的电脑自学交流论坛" @0 H/ A6 D& M, Q6 E
putchar('\n'); 换行 对控制字符则执行控制功能,不在屏幕上显示。 使用本函数前必须要用文件包含命令:打造最好的电脑自学交流论坛/ l; E3 D5 b# E8 Y" O* F- P
- T' A" w \( S$ g5 k6 w' {#include<stdio.h>
9 X. E K* Z x6 O4 D# m( d0 K1 D电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站#include <stdio.h>我爱电脑技术社区--打造最好的电脑技术自学交流平台6 n$ _. `* w6 o* Z2 _3 w
void main(){
- E" T' J" n' u2 j$ d0 g, \; Z我爱电脑技术社区--打造最好的电脑技术自学交流平台 char a='B',b='o',c='k';www.520diannao.com) M: X. v0 Q6 u
putchar(a);putchar(b);putchar(b);putchar(c);putchar('\t');
: i. L; _" y1 J; `我爱电脑技术社区--打造最好的电脑技术自学交流平台 putchar(a);putchar(b);
, g, F) i3 I" s7 K0 P& `* I- p6 V打造最好的电脑自学交流论坛 putchar('\n');我爱电脑技术社区--打造最好的电脑技术自学交流平台 K! B7 d, C1 V! c/ x
putchar(b);putchar(c);
2 b" H% n# d8 x$ U5 d}