第三章 顺序结构
3.1 赋值语句由 赋值表达式 加 分号 构成,也称表达式语句。
其一般形式为:
变量 =表达式 ;
在赋值语句的使用中需要注意以下几点:
1.由于在赋值符,=”右边的表达式也可以又是一个赋值表达式,因此,下述形式变量 =(变量 =表达式 );
是成立的,从而形成嵌套
3.1 赋值语句
2.注意在 变量说明 中给变量赋初值和 赋值语句 的区别。
给 变量赋初值 是变量说明的一部分,赋初值后的变 量与其后的其它同类变量之间仍必须用 逗号 间隔,而赋值语句则必须用 分号 结尾。
3.在变量说明中,不允许连续给多个变量赋初值。 如下述说明是错误的:
int a=b=c=5
必须写为
int a=5,b=5,c=5;
而赋值语句允许连续赋值。 a=b=c=5;
3.2 数据输出在C语言中,所有的数据输入/输出都是由库函数完成的。 因此都是函数语句。
3.2.1 printf函数的一般调用形式
printf函数称为格式输出函数,其功能是按用户指定的格式,把指定的数据显示到显示器屏幕上。
printf函数调用的一般形式为:
printf(“格式控制字符串”,输出项表 )
其中格式控制字符串用于指定输出格式。 格式控制串可由格式字符串和非格式字符串两种组成。
格式字符串是以 %开头的字符串,以说明输出数据的类型、形式、长度、小数位数等。如,%d”表示按十进制整型输出。
3.2.1 printf函数的一般调用形式
main()
{ int a=88,b=89;
printf("%d %d\n",a,b); printf("%d,%d\n",a,b);
printf("%c,%c\n",a,b); printf("a=%d,b=%d",a,b);
}
本例中四次输出了 a,b的值,但由于格式控制串不同,输出的结果也不相同。
第一个输出语句格式控制串中,两格式串 %d 之间加了一个空格 (非格式字符 ),所以输出的 a,b值之间有一个空格。第二个 printf语句格式控制串中加入的是非格式字符逗号,因此输出的 a,b值之间加了一个逗号。
第三个格式串要求按字符型输出 a,b值。第四个为了提示输出结果又增加了非格式字符串。
3.2.2 printf函数中常用的格式说明表示输出类型的格式字符格式字符 意 义
d 以十进制形式输出带符号整数 (正数不输出符号 )
o 以八进制形式输出无符号整数 (不输出前缀 0)
x 以十六进制形式输出无符号整数 (不输出前缀 0X)
u 以十进制形式输出无符号整数
f 以小数形式输出单、双精度实数
e 以指数形式输出单、双精度实数
g 以 %f,%e中较短的输出宽度输出单双精度实数
c 输出单个字符
s 输出字符串
3.2.2 printf函数中常用的格式说明
1,d格式符 ––十进制整数输出。
(1) %d,按数据的实际长度输出。
(2) %md,m表示输出字段宽度。若实际位数 <m,左边补空格。
(3) %ld,输出长整数例,long a=1234567;
printf(" %ld",a);
如直接用 %d,则将出错。
如要指定宽度,则用 %mld即可。
3.2.2 printf函数中常用的格式说明
2.o格式符 ––– 按八进制形式输出,
如以长整型输出,在 %后加 l,也可指定宽度 m,%mo
3,x格式符 –––以十六进制形式输出整数,
4,u格式符 –––无符号格式输出整数,
5,c格式符 –––输出一个字符,
若有一整型变量,其值在 0~255之间,则可以字符形式输出,
一个字符型变量亦可以一个整型数据输出
3.2.2 printf函数中常用的格式说明例,main ( )
{ char c='a’;
int i=97;
printf ("%c,%d\n",c,c);
printf ("%c,%d\n",i,i);
}
运行结果为,
a,97
a,97
可以指定输出字符宽度,比如,printf (“%3c”,c);
则输出,,a”,即 c变量输出占 3列,前 2列补空格。
3.2.2 printf函数中常用的格式说明
6,s格式符 –––用来输出一个字符串例,printf("%s","CHINA");
结果,CHINA
S格式还包括 %ms,%–ms,%m.ns,%–m.ns四种形式,每一形式的意义如下,
(1)%ms,输出的字符串占 m列,如字符串本身长度大于
m,则突破 m的限制,将字符串全部输出。若串长小于
m,则左补空格。
(2)%–ms,如果串长小于 m,则在 m列范围内,字符串向左靠,右补空格。
(3) %m.ns,输出占 m列,但只取字符串中左端 n个字符。
这 n个字符输出在 m列的右侧,左补空格。
3.2.2 printf函数中常用的格式说明
(4) %–m.ns,其中 m,n含义同上,n个字符输出在 m列范围的左侧,右补空格。如果 n>m,则 m自动取 n值,
即保证 n个字符正常输出。
7,f格式符 –––以小数形式输出单、双精度实数有以下几种形式,%f,%m.nf和 %–m.nf
(1) %f,不指定字段宽度,由系统自动指定,使整数部分全部如数输出,并输出 6位小数。
(2) %m.nf,指定输出的数据共占 m列,其中有 n位小数。
如果值长度小于 m,则左端补空格。
(3) %–m.nf,与 %m.nf基本相同,只是使输出的数值向左端靠,右端补空格。
3.2.2 printf函数中常用的格式说明
8,e格式符 –––以指数形式输出单,双精度实数基本形式,%e
例,printf (,%e,,123.456);
结果,1.23456e+02
还可有 %m.ne和 %–m.ne的形式
9,g格式符 ––根据实数大小自动选择 f格式,或 e格式输出单双精度实数。
3.2.2 printf函数中常用的格式说明附加格式字符串字符 说明用于长整型整数,可加在格式符 d、
o,x,u前面。
数据最小宽度对实数,表示输出 n位小数; 对字符串,表示截取的字符个数。对 g,表示输出的有效数字,对整数,数位不足左边补 0
输出的数字或字符在域内向左靠。
m(代表一个正整数 )
.n(代表一个正整数 )

字母 1
3.3 数据输入
C语言的数据输入也是由函数语句完成的。
3.3.1 scanf函数的一般调用形式
scanf函数称为格式输入函数,即按用户指定的格式从键盘上把数据输入到指定的变量之中。 scanf函数的一般形式为:
scanf(“格式控制字符串”,输入项表 );
其中,格式控制字符串的作用与 printf函数相同,但不能显示非格式字符串,也就是不能显示提示字符串。
输入项表中给出各变量的地址。 地址是由地址运算符
,&”后跟变量名组成的。
3.3.1 scanf函数的一般调用形式
&a,&b分别表示变量 a和变量 b 的地址。这个地址就是编译系统在内存中给 a,b变量分配的地址。在C语言中,使用了地址这个概念,这是与其它语言不同的。
例,main( )
{ int a,b,c;
scanf(,%d,%d,%d ",&a,&b,&c);
printf(" %d,%d,%d\n," a,b,c);
}
机器等待你输入,3,4,5↙
结果,3,4,5
3.3.1 scanf函数的一般调用形式例,main( )
{ int a,b,c;
printf("input a,b,c\n");
scanf(,%d%d%d ",&a,&b,&c);
printf(" %d,%d,%d\n," a,b,c); }
由于 scanf函数本身不能显示提示串,故先用 printf语句在屏幕上输出提示,请用户输入 a,b,c的值。执行 scanf语句,则退出 TC屏幕进入用户屏幕等待用户输入。用户输入 7,8,9后按下回车键,此时,系统又将返回 TC屏幕。在 scanf语句的格式串中由于没有非格式字符在,%d%d%d”之间作输入时的间隔,因此在输入时要用一个以上的空格或回车键作为每两个输入数之间的间隔。
3.3.2 scanf函数中常用的格式说明格式 字符意义
d 输入十进制整数
o 输入八进制整数
x 输入十六进制整数
i 输入整型数,可以是带前导 0的八进制数或带
0x的十六进制数
u 无符号十进制整数
f或 e 输入实型数 (用小数形式或指数形式 )
c 输入单个字符
s 输入字符串
3.3.3 通过 scanf函数从键盘输入数据
1.,*”符用以表示该输入项读入后不赋予相应的变量,即跳过该输入值。
如 scanf("%d %*d %d",&a,&b);
当输入为,1 2 3 时,把 1赋予 a,2被跳过,3赋予 b。
2.宽度用十进制整数指定输入的宽度 (即字符数 )。例如:
scanf("%5d",&a);
输入:
12345678
只把 12345赋予变量 a,其余部分被截去。又如:
scanf("%4d%4d",&a,&b);
输入:
12345678
将把 1234赋予 a,而把 5678赋予 b。
3.3.3 通过 scanf函数从键盘输入数据
3.长度长度格式符为 l 和 h,l表示输入长整型数据 (如 %ld) 和双精度浮点数 (如 %lf)。
注意:
scanf函数中没有精度控制,如:
scanf("%5.2f",&a);
是非法的。不能企图用此语句输入小数为 2位的实数。
scanf中要求给出变量地址,如给出变量名则会出错。如
scanf("%d",a);是非法的,应改为 scnaf("%d",&a);才是合法的。
在输入多个数值数据时,若格式控制串中有其它字符,则在输入时就输入 与这些字符相同的字符;
如 scanf(,%d,%d”,&a,&b) 应输入 3,5
如没有非格式字符作输入数据之间的间隔则可用空格,
TAB或 回车作间隔。
3.3.3 通过 scanf函数从键盘输入数据
在输入字符数据时,若格式控制串中无非格式字符,则认为所有 输入的字符均为有效字符。
例如:
scanf("%c%c%c",&a,&b,&c);
输入为:
d e f
则把‘ d?赋予 a,空格 '赋予 b,'e'赋予 c。只有当输入为:
def
时,才能把‘ d?赋于 a,?e?赋予 b,?f?赋予 c。
如果在格式控制中加入空格作为间隔,如
scanf ("%c %c %c",&a,&b,&c);
则输入时各数据之间可加空格。
3.4.1 复合语句
3.4 复合语句和空语句把多个语句用括号 { }括起来组成的一个语句称为 复合语句 。 在程序中应把复合语句看成是单条语句,而不是多条语句,例如
{
x=y+z;
a=b+c;
printf(“%d%d”,x,a);
}
是一条复合语句。复合语句内的各条语句都必须以分号,;”结尾,在括号,}”外不能加分号。
3.4.2 空语句只有分号“;”组成的语句称为 空语句 。 空语句是什么也不执行的语句。在程序中空语句可用来作空 循环体。例如
while(getchar()!='\n');
本语句的功能是,只要从键盘输入的字符不是回车则重新输入。这里的循环体为空语句。
3.5 程序举例