第四章C语言顺序结构
4.1 C语句概述
一般来说,程序设计语言中的流程控制结构分为3种:顺序结构、选择结构和循环结构。
表达式语句由表达式加上分号“;”组成,其一般形式为:表达式;
函数调用语句由函数名、实际参数加上分号“;”组成。
其一般形式:
函数名(实际参数表)
控制语句用于控制程序的流程,以实现程序的各种结构方式。
C语言中共有9种控制语句,可以将其分为如下3类:
复合语句:把多个语句用{}括起来组成的一个语句称为复合语句。
在程序中应把复合语句看成是单条语句,而不是多条语句。
空语句:只有分号“;”组成的语句。
4.2 赋值语句
赋值语句是表达式语句的一种,是由赋值表达式再加上分号构成的表达式语句,其一般形式为:变量=表达式;
注意在变量声明中给变量赋初值和赋值语句的区别。
给变量赋初值是变量声明的一部分,赋初值后的变量与其后的其它同类变量之间仍必须用逗号间隔,而赋值语句则必须用分号结尾。
例如int a=1,b;是在变量声明中对变量a赋初值,其等效于如下两条语句;
int a,b; /*定义整型变量a,b*/
a=1; /*为变量a赋值*/
在变量声明中,不允许给多个连续变量赋初值。
下列说明是错误的:int a=b=c=1;,必须写为int a=1,b=1,c=1;
4.3 格式输入输出
格式输入输出即向标准输出设备显示器输出数据的语句。
4.3.1 printf函数——格式输出
printf函数称为格式输出函数,其关键字最末一个字母“f”即为格式(format)之意。
printf函数的功能是按用户指定的格式,把指定的数据显示到显示器屏幕上。
printf函数是一个标准库函数,它的函数原型在头文件“stdio.h”中。
但作为一个特例,不要求在使用printf函数之前必须包含stdio.h文件。
printf函数调用的一般形式为:
printf(“格式控制字符串”,输出列表)
其中,格式字符串用于指定输出格式,可由格式字符串和非格式字符串两种组成。
格式字符串是以%开头的字符串,在%后面跟有各种格式字符,以说明输出数据的类型、形式、长度、小数位等。
例如:“%d”表示按十进制整型输出,“%f”表示按十进制浮点型输出,“%c”表示按字符型输出。
类型符类型意义
d 以十进制形式输出带符号整数(整数不输出符号)
程序:
#include<stdio.h>
main()
{
int a=10; /*定义整型变量*/
float b=1234.576; /*定义单精度浮点型变量*/
double c=1234567.89987; /*定义双精度浮点型变量*/
char d=‘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.2 scanf函数-格式输入
与printf函数对应的,scanf函数称为格式输入函数,即按用户指定的格式从键盘上把数据输入到指定的变量之中。
C语言也允许在使用scanf函数之前不必包含stdio.h文件。
scanf函数的一般形式为:scanf(“格式控制字符串”,地址列表);
地址列表中给出各变量的地址,地址是由地址运算符“&”后跟变量名组成的。
例如,&a,&b分别表示变量a和变量b的地址,该地址就是编译系统在内存中给a,b变量分配的地址。
&是一个取地址运算符,&a是一个表达式,其功能是求变量a的地址。
在输入字符数据时,若格式控制串中无非格式字符,则认为所有输入的字符均为有效字符。
此外,要防止scanf函数读入错误的数据,尤其是当输入数据位字符型数据类型时。
程序:
#include<stdio.h>
main()
{
char a,b,c;
printf(“Please input 3 characters:”);
scanf(“%c%c%c”,&a,&b,&c);
printf(“a=%c\tb=%c\tc=%c\n”,a,b,c);
printf(“Please input 3 characters:”);
scanf(“%c %c %c”,&a,&b,&c);
printf(“a=%c\tb=%c\tc=%c\n”,a,b,c);
}
注意:在scanf函数的格式控制字符中用什么字符将多个类型隔开,在具体的输入的时候就应用什么字符隔开输入的字符。
4.4 字符数据的输入输出
除了以上提到的格式输入输出函数printf和scanf函数可以用于输入输出外,C语言还提供了一些函数用于字符数据的输入输出,在有些教材上也称为非格式输入输出函数。
4.4.1 putchar—字符输出
putchar函数是字符输出函数,其功能是在显示器上输出的那个字符。
与printf函数不同的是,putchar
函数只能输出单个字符,其一般形式为:
putchar(字符数据变量)
其中,字符数据类型量可以为字符常量,也可以为字符变量,还可以是控制字符。
如果需要输出的是字符常量则需要以一对单引号将其包含起来,如果输出的是控制字符则执行相应的控制控制功能,而不在屏幕上显示。
例如:
◆语句putchar(‘A’);:输出大写字母A。
◆语句putchar(a);:输出字符变量a中的值。
◆语句putchar(‘\n’);:换行,不在屏幕上显示。
在具体使用putchar的过程中,必须在程序开头加上头文件“stdio.h”,不能省略,这是与printf函数和scanf函数不同的。
4.4.2 getchar函数-字符输入
语句ch=getchar()即将用户从键盘上输入的字符存储到字符变量ch中。
程序:
#include<stdio.h>
main()
{
char ch;
printf(“please input a character:”);
ch=getchar();
printf(“ch=”);
putchar(ch);
}
在具体使用过程中,必须在程序开头包含头文件“stdio.h”。
此外,用户的键盘输入以Enter键结束,即使用户输入了多个字符,getchar只会返回到最前面的字符到变量中。
4.5 综合应用
顺序结构是结构化程序设计中最为简单的一种结构,其执行流程从上到下,依次执行。
程序:
#include<stdio.h>
main()
{
float a1,b1,a2,b2;
printf(“\t\t\t complex Addition\n”);
printf(“please input the first complex:\n”);
printf(“\treal part:”);
scanf(“%f”,&a1);
printf(“\tvirtual part:”);
scanf(“%f”,&b1);
printf(“%5.2f+i%5.2f\n”,a1,b1);
printf(“\nplease input the second complex:\n”);
printf(“\nreal part:”);
scanf(“%f”,&a2);
printf(“\nvirtual part:”);
scanf(“%f”,&b2);
printf(“%5.2f+i%5.2f\n”,a2,b2);
printf(“\nThe additions:”);
printf(“program normal terminated.”); }。