慈继阁小说网 > 文学电子书 > C语言程序设计 >

第7章

C语言程序设计-第7章

小说: C语言程序设计 字数: 每页4000字

按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!
————未阅读完?加入书签已便下次继续阅读!



3。  控制语句:控制语句用于控制程序的流程, 以实现程序的各种结构方式。它们由特定的语句定义符组成。C语言有九种控制语句。 可分成以下三类:
1)  条件判断语句:if语句、switch语句;
2)  循环执行语句:do while语句、while语句、for语句;
3)  转向语句:break语句、goto语句、continue语句、return语句。
4。  复合语句:把多个语句用括号{}括起来组成的一个语句称复合语句。
在程序中应把复合语句看成是单条语句,而不是多条语句。
例如:
{ xy+z;
  ab+c;
  printf(“%d%d”,x,a);
 }
是一条复合语句。
复合语句内的各条语句都必须以分号“;”结尾,在括号“}”外不能加分号。
5。  空语句:只有分号“;”组成的语句称为空语句。空语句是什么也不执行的语句。在程序中空语句可用来作空循环体。
例如
while(getchar()'n')
;
本语句的功能是,只要从键盘输入的字符不是回车则重新输入。
这里的循环体为空语句。
4。2  赋值语句
赋值语句是由赋值表达式再加上分号构成的表达式语句。
其一般形式为:
变量表达式;
赋值语句的功能和特点都与赋值表达式相同。 它是程序中使用最多的语句之一。
在赋值语句的使用中需要注意以下几点:
1。  由于在赋值符“”右边的表达式也可以又是一个赋值表达式,
因此,下述形式
   变量(变量表达式);
是成立的,从而形成嵌套的情形。
其展开之后的一般形式为:
  变量变量…表达式;
例如:
  abcde5;
按照赋值运算符的右接合性,因此实际上等效于:
e5;
de;
cd;
bc;
ab;
2。  注意在变量说明中给变量赋初值和赋值语句的区别。
给变量赋初值是变量说明的一部分,赋初值后的变量与其后的其它同类变量之间仍必须用逗号间隔,而赋值语句则必须用分号结尾。
例如:
int a5;b;c;
3。  在变量说明中,不允许连续给多个变量赋初值。 
如下述说明是错误的:
 intabc5
必须写为
 inta5;b5;c5;
而赋值语句允许连续赋值。
4。  注意赋值表达式和赋值语句的区别。
赋值表达式是一种表达式,它可以出现在任何允许表达式出现的地方,而赋值语句则不能。
下述语句是合法的:
  if((xy+5)》0) zx;
语句的功能是,若表达式xy+5大于0则zx。
下述语句是非法的:
  if((xy+5;)》0) zx;
因为xy+5;是语句,不能出现在表达式中。
4。3  数据输入输出的概念及在C语言中的实现
1)  所谓输入输出是以计算机为主体而言的。
2)  本章介绍的是向标准输出设备显示器输出数据的语句。
3)  在C语言中,所有的数据输入/输出都是由库函数完成的。 因此都是函数语句。
4)  在使用C语言库函数时,要用预编译命令
#include
将有关“头文件”包括到源文件中。
使用标准输入输出库函数时要用到 “stdio。h”文件,因此源文件开头应有以下预编译命令:
#include《 stdio。h 》
或
#include ”stdio。h”
stdio是standard input &outupt的意思。
5)  考虑到printf和scanf函数使用频繁,系统允许在使用这两个函数时可不加
#include《 stdio。h 》
或
#include ”stdio。h”
4。4  字符数据的输入输出
4。4。1  putchar 函数(字符输出函数)
putchar 函数是字符输出函数, 其功能是在显示器上输出单个字符。
其一般形式为:
putchar(字符变量)
例如:
putchar('A');(输出大写字母A)
putchar(x);  (输出字符变量x的值)
putchar(‘101’); (也是输出字符A)
putchar('n');   (换行)
对控制字符则执行控制功能,不在屏幕上显示。
使用本函数前必须要用文件包含命令:
#include
或
#include “stdio。h”
【例4。1】输出单个字符。
#include
main(){《 BR》  chara'B';b'o';c'k';
  putchar(a);putchar(b);putchar(b);putchar(c);putchar('t');
  putchar(a);putchar(b);
  putchar('n');
  putchar(b);putchar(c);
}
4。4。2  getchar函数(键盘输入函数)
getchar函数的功能是从键盘上输入一个字符。
其一般形式为:
getchar();
通常把输入的字符赋予一个字符变量,构成赋值语句,如:
char c;
  cgetchar();
【例4。2】输入单个字符。
#include
void main(){
  char c;
  printf(〃input a charactern〃);
  cgetchar();
  putchar(c);
}
使用getchar函数还应注意几个问题:
1)  getchar函数只能接受单个字符,输入数字也按字符处理。输入多于一个字符时,只接收第一个字符。
2)  使用本函数前必须包含文件“stdio。h”。
3)  在TC屏幕下运行含本函数程序时,将退出TC 屏幕进入用户屏幕等待用户输入。输入完毕再返回TC屏幕。
4)  程序最后两行可用下面两行的任意一行代替:
putchar(getchar());
printf(“%c”;getchar());
4。5  格式输入与输出
4。5。1  printf函数(格式输出函数)
printf函数称为格式输出函数,其关键字最末一个字母f即为“格式”(format)之意。其功能是按用户指定的格式,把指定的数据显示到显示器屏幕上。在前面的例题中我们已多次使用过这个函数。
1。  printf函数调用的一般形式
printf函数是一个标准库函数,它的函数原型在头文件“stdio。h”中。但作为一个特例,不要求在使用 printf 函数之前必须包含stdio。h文件。
printf函数调用的一般形式为:
printf(“格式控制字符串”,输出表列)
其中格式控制字符串用于指定输出格式。格式控制串可由格式字符串和非格式字符串两种组成。格式字符串是以%开头的字符串,在%后面跟有各种格式字符,以说明输出数据的类型、形式、长度、小数位数等。如:
“%d”表示按十进制整型输出;
“%ld”表示按十进制长整型输出;
“%c”表示按字符型输出等。
非格式字符串在输出时原样照印,在显示中起提示作用。
输出表列中给出了各个输出项,要求格式字符串和各输出项在数量和类型上应该一一对应。
【例4。3】
main()
{
  inta88;b89;
  printf(〃%d %dn〃;a;b);
  printf(〃%d;%dn〃;a;b);
  printf(〃%c;%cn〃;a;b);
  printf(〃a%d;b%d〃;a;b);
}
本例中四次输出了a;b的值,但由于格式控制串不同,输出的结果也不相同。第四行的输出语句格式控制串中,两格式串%d 之间加了一个空格(非格式字符),所以输出的a;b值之间有一个空格。第五行的printf语句格式控制串中加入的是非格式字符逗号, 因此输出
的a;b值之间加了一个逗号。第六行的格式串要求按字符型输出 a;b值。第七行中为了提示输出结果又增加了非格式字符串。
2。  格式字符串
在Turbo C中格式字符串的一般形式为:
  '标志''输出最小宽度''。精度''长度'类型
  其中方括号''中的项为可选项。
各项的意义介绍如下:
1)  类型:类型字符用以表示输出数据的类型,其格式符和意义如下表所示:
格式字符  意  义
d  以十进制形式输出带符号整数(正数不输出符号)
o  以八进制形式输出无符号整数(不输出前缀0)
x;X  以十六进制形式输出无符号整数(不输出前缀Ox)
u  以十进制形式输出无符号整数
f  以小数形式输出单、双精度实数
e;E  以指数形式输出单、双精度实数
g;G  以%f或%e中较短的输出宽度输出单、双精度实数
c  输出单个字符
s  输出字符串
2)  标志:标志字符为、+、#、空格四种,其意义下表所示:
标 志  意   义
  结果左对齐,右边填空格
+  输出符号(正号或负号)
空格  输出值为正时冠以空格,为负时冠以负号
#  对c;s;d;u类无影响;对o类;在输出时加前缀o;对x类;在输出时加前缀0x;对e;g;f 类当结果有小数时才给出小数点
3)  输出最小宽度:用十进制整数来表示输出的最少位数。若实际位数多于定义的宽度,则按实际位数输出,若实际位数少于定义的宽度则补以空格或0。
4)  精度:精度格式符以“。”开头,后跟十进制整数。本项的意义是:如果输出数字,则表示小数的位数;如果输出的是字符,则表示输出字符的个数;若实际位数大于所定义的精度数,则截去超过的部分。
5。长度:长度格式符为h;l两种,h表示按短整型量输出,l表示按长整型量输出。
【例4。4】
main()
{
  int a15;
  float b123。1234567;
  double c12345678。1234567;
  char d'p';
  printf(〃a%d;%5d;%o;%xn〃;a;a;a;a);
  printf(〃b%f;%lf;%5。4lf;%en〃;b;b;b;b);
  printf(〃c%lf;%f;%8。4lfn〃;c;c;c);
  printf(〃d%c;%8cn〃;d;d);
} 
本例第七行中以四种格式输出整型变量a的值,其中“%5d ”要求输出宽度为5,而a值为15只有两位故补三个空格。 第八行中以四种格式输出实型量b的值。其中“%f”和“%lf ”格式的输出相同,说明“l”符对“f”类型无影响。“%5。4lf”指定输出宽度为5,精度为4,由于实际长度超过5故应该按实际位数输出,小数位数超过4位部分被截去。第九行输出双精度实数,“%8。4lf ”由于指定精度为4位故截去了超过4位的部分。第十行输出字符量d,其中“%8c ”指定输出宽度为8故在输出字符p之前补加7个空格。
使用printf函数时还要注意一个问题,那就是输出表列中的求值顺序。不同的编译系统不一定相同,可以从左到右,也可从右到左。Turbo C是按从右到左进行的。请看下面两个例子:
【例4。5】
main(){
  int i8;
  printf(〃%dn%dn%dn%dn%dn%dn〃;++i;i;i++;i;i++;i);
}
【例4。6】
main(){
  int i8;
  printf(〃%dn〃;++i);
  printf(〃%dn〃;i);
  printf(〃%dn〃;i++);
  printf(〃%dn〃;i);
printf(〃%dn〃;i++);
  printf(〃%dn〃;i);
}
这两个程序的区别是用一个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。5。2  scanf函数(格式输入函数)
scanf函数称为格式输入函数,即按用户指定的格式从键盘上把数据输入到指定的变量之中。
1。  scanf函数的一般形式
scanf函数是一个标准库函数,它的函数原型在头文件“stdio。h”中,与printf函数相同,C语言也允许在使用scanf函数之前不必包含stdio。h文件。
scanf函数的一般形式为:
scanf(“格式控制字符串”,地址表列);
其中,格式控制字符串的作用与printf函数相同,但不能显示非格式字符串,也就是不能显示提示字符串。地址表列中给出各变量的地址。地址是由地址运算符“&”后跟变量名组成的。
例如:
&a; &b
分别表示变量a和变量b 的地址。
这个地址就是编译系统在内存中给a;b变量分配的地址。在C语言中,使用了地址这个概念,这是与其它语言不同的。 应该把变量的值和变量的地址这两个不同的概念区别开来。变量的地址是C编译系统分配的,用户不必关心具体的地址是多少。
变量的地址和变量值的关系如下:
在赋值表达式中给变量赋值,如:
a567
则,a为变量名,567是变量的值,&a是变量a的地址。
但在赋值号左边是变量名,不能写地址,而scanf函数在本质上也是给变量赋值,但要求写变量的地址,如&a。 这两者在形式上是不同的。&是一个取地址运算符,&a是一个表达式,其功能是求变量的地址。
【例4。7】
main(){
  int a;b;c;
  printf(〃input a;b;cn〃);
  scanf(〃%d%d%d〃;&a;&b;&c);
  printf(〃a%d;b%d;c%d〃;a;b;c);
}
在本例中,由于scanf函数本身不能显示提示串,故先用printf语句在屏幕上输出提示,请用户输入a、b、c的值。执行scanf�

返回目录 上一页 下一页 回到顶部 赞(0) 踩(0)

你可能喜欢的