1第四章C语言顺序结构4.1C语句概述一般来说,程序设计语言中的流程控制结构分为3种:顺序结构、选择结构和循环结构。C程序语句{表达式语句函数调用语句控制语句复合语句空语句{条件判断语句:if语句,switch语句。循环执行语句:dowhile语句,while语句,for语句转向语句:break语句,goto语句,continue语句,return语句表达式语句由表达式加上分号“;”组成,其一般形式为:表达式;函数调用语句由函数名、实际参数加上分号“;”组成。其一般形式:函数名(实际参数表)控制语句用于控制程序的流程,以实现程序的各种结构方式。C语言中共有9种控制语句,可以将其分为如下3类:复合语句:把多个语句用{}括起来组成的一个语句称为复合语句。在程序中应把复合语句看成是单条语句,而不是多条语句。空语句:只有分号“;”组成的语句。4.2赋值语句赋值语句是表达式语句的一种,是由赋值表达式再加上分号构成的表达式语句,其一般形式为:变量=表达式;注意在变量声明中给变量赋初值和赋值语句的区别。给变量赋初值是变量声明的一部分,赋初值后的变量与其后的其它同类变量之间仍必须用逗号间隔,而赋值语句则必须用分号结尾。例如inta=1,b;是在变量声明中对变量a赋初值,其等效于如下两条语句;inta,b;/*定义整型变量a,b*/a=1;/*为变量a赋值*/在变量声明中,不允许给多个连续变量赋初值。下列说明是错误的:inta=b=c=1;,必须写为inta=1,b=1,c=1;4.3格式输入输出格式输入输出即向标准输出设备显示器输出数据的语句。4.3.1printf函数——格式输出printf函数称为格式输出函数,其关键字最末一个字母“f”即为格式(format)之意。printf函数的功能是按用户指定的格式,把指定的数据显示到显示器屏幕上。printf函数是一个标准库函数,它的函数原型在头文件“stdio.h”中。但作为一个特例,不要求在使用printf函数之前必须包含stdio.h文件。printf函数调用的一般形式为:printf(“格式控制字符串”,输出列表)其中,格式字符串用于指定输出格式,可由格式字符串和非格式字符串两种组成。格式字符串是以%开头的字符串,在%后面跟有各种格式字符,以说明输出数据的类型、形式、长度、小数位等。例如:“%d”表示按十进制整型输出,“%f”表示按十进制浮点型输出,“%c”表示按字符型输出。表4-12类型符类型意义d以十进制形式输出带符号整数(整数不输出符号)f以小数形式输出单、双精度实数c输出单个字符程序:#includestdio.hmain(){inta=10;/*定义整型变量*/floatb=1234.576;/*定义单精度浮点型变量*/doublec=1234567.89987;/*定义双精度浮点型变量*/chard=‘A’;/*定义字符型变量*/printf(“a=%d,%5d,%o,%x\n”,a,a,a,a);/*以不同格式输出变量的值*/printf(“b=%f,%lf,%5.4lf,%e\n”,b,b,b,b);printf(“c=%lf,%f,%8.4lf\n”,c,c,c);printf(“d=%c,%8c\n”,d,d);}4.3.2scanf函数-格式输入与printf函数对应的,scanf函数称为格式输入函数,即按用户指定的格式从键盘上把数据输入到指定的变量之中。C语言也允许在使用scanf函数之前不必包含stdio.h文件。scanf函数的一般形式为:scanf(“格式控制字符串”,地址列表);地址列表中给出各变量的地址,地址是由地址运算符“&”后跟变量名组成的。例如,&a,&b分别表示变量a和变量b的地址,该地址就是编译系统在内存中给a,b变量分配的地址。&是一个取地址运算符,&a是一个表达式,其功能是求变量a的地址。在输入字符数据时,若格式控制串中无非格式字符,则认为所有输入的字符均为有效字符。此外,要防止scanf函数读入错误的数据,尤其是当输入数据位字符型数据类型时。程序:#includestdio.hmain(){chara,b,c;printf(“Pleaseinput3characters:”);scanf(“%c%c%c”,&a,&b,&c);printf(“a=%c\tb=%c\tc=%c\n”,a,b,c);printf(“Pleaseinput3characters:”);scanf(“%c%c%c”,&a,&b,&c);printf(“a=%c\tb=%c\tc=%c\n”,a,b,c);}注意:在scanf函数的格式控制字符中用什么字符将多个类型隔开,在具体的输入的时候就应用什么字符隔开输入的字符。4.4字符数据的输入输出除了以上提到的格式输入输出函数printf和scanf函数可以用于输入输出外,C语言还提供了一些函数用于字符数据的输入输出,在有些教材上也称为非格式输入输出函数。34.4.1putchar—字符输出putchar函数是字符输出函数,其功能是在显示器上输出的那个字符。与printf函数不同的是,putchar函数只能输出单个字符,其一般形式为:putchar(字符数据变量)其中,字符数据类型量可以为字符常量,也可以为字符变量,还可以是控制字符。如果需要输出的是字符常量则需要以一对单引号将其包含起来,如果输出的是控制字符则执行相应的控制控制功能,而不在屏幕上显示。例如:◆语句putchar(‘A’);:输出大写字母A。◆语句putchar(a);:输出字符变量a中的值。◆语句putchar(‘\n’);:换行,不在屏幕上显示。在具体使用putchar的过程中,必须在程序开头加上头文件“stdio.h”,不能省略,这是与printf函数和scanf函数不同的。4.4.2getchar函数-字符输入语句ch=getchar()即将用户从键盘上输入的字符存储到字符变量ch中。程序:#includestdio.hmain(){charch;printf(“pleaseinputacharacter:”);ch=getchar();printf(“ch=”);putchar(ch);}在具体使用过程中,必须在程序开头包含头文件“stdio.h”。此外,用户的键盘输入以Enter键结束,即使用户输入了多个字符,getchar只会返回到最前面的字符到变量中。4.5综合应用顺序结构是结构化程序设计中最为简单的一种结构,其执行流程从上到下,依次执行。程序:#includestdio.hmain(){floata1,b1,a2,b2;printf(“\t\t\tcomplexAddition\n”);printf(“pleaseinputthefirstcomplex:\n”);printf(“\trealpart:”);scanf(“%f”,&a1);printf(“\tvirtualpart:”);scanf(“%f”,&b1);printf(“%5.2f+i%5.2f\n”,a1,b1);printf(“\npleaseinputthesecondcomplex:\n”);printf(“\nrealpart:”);scanf(“%f”,&a2);4printf(“\nvirtualpart:”);scanf(“%f”,&b2);printf(“%5.2f+i%5.2f\n”,a2,b2);printf(“\nTheadditions:”);printf(“programnormalterminated.”);}