从程序流程的角度来看,程序可以分为三种基础结构,即顺序结构、分支结构、循环结构。这三种基本结构可以组成各种复杂程序。C语言提供了多种语句来实现这些程序结构。本章介绍这些基本语句及其在顺序结构中的应用。使读者对C程序有个初步的认识,为后面各章的学习打下基础。
4.1 C语句概述(了解)
C程序的结构:
C程序的执行部分是由语句组成的。程序的功能也是由执行语句实现的。
C语句可分为以下五类:
1)表达式语句
2)函数调用语句
3)控制语句
4)复合语句
5)空语句
1 表达式语句:表达式语句由表达式加上分号“;”组成。
其一般形式为:表达式;
执行表达式语句就是计算表达式的值。
例如:
x=y+z;赋值语句;
y+z;加法运算语句,但计算结果不能保留,无意义。
i++;自增1语句,i值增1。
2 函数调用语句:由函数名、实际参数加上分号“;”组成。
其一般形式为:
函数名(实际参数表);
执行函数语句就是调用函数体并把实际参数赋予函数定义中的形式参数,然后执行被调函数体中的语句,求取函数值(在后面函数中再详细介绍)。
例如:
printf("C Program");调用库函数,输出字符串。
3控制语句:控制语句用于控制程序的流程,以实现程序的各种结构方式。它们由特定的语句定义符组成。C语言有九种控制语句。可分成以下三类:
1)条件判断语句:if语句、switch语句;
2)循环执行语句:do while语句、while语句、for语句;
3)转向语句:break语句、goto语句、continue语句、return语句。
4.复合语句:把多个语句用括号{}括起来组成的一个语句称复合语句。
在程序中应把复合语句看成是单条语句,而不是多条语句。
例如:
{x=y+z;
a=b+c;
printf("%d%d",x,a);
}
是一条复合语句。
复合语句内的若干语句都必须加上;结尾,在括号“}”外不能加分号。
5.空语句:只有分号“;”组成的语句称为空语句。空语句是什么也不执行的语句。在程序中空语句可用来作空循环体。
例如
while(getchar()!='\n')
;
本语句的功能是,只要从键盘输入的字符不是回车则重新输入。
这里的循环体为空语句。
4.2 赋值语句(理解)
赋值语句是由赋值表达式再加上分号构成的表达式语句。
其一般形式为:变量=表达式;
赋值语句的功能和特点都与赋值表达式相同。它是程序中使用最多的语句之一。
在赋值语句的使用中要注意以下几点:
1. 由于在赋值符“=”右边的表达式也可以又是一个赋值表达式,
因此,下述形式
变量=(变量=表达式);是成立的,从而形成嵌套的情形。
其展示之后的一般形式为:
变量=变量=...=表达式;
例如:a=b=c=d=e=5;
按照赋值运算符的右结合性,因此实际上等效于:
e=5;
d=e;
c=d;
b=c;
a=b;
学习提示:
(1)在第三章3.6节中我们说定义中不允许连续赋值,a=b=c=5是错误的,那么这里又说a=b=c=d=e=5;正确,那么到底是正确还是错误呢?
(2)我们看到3.6节的描述中有个前提,即定义中不允许连续赋值,即int a=b=c=5;是错误的。那么提前定义好之后,再赋值就是合法的,如int a,b,c;a=b=c=5。仔细体会下两者的区别。
2.注意在变量说明中给变量赋初值和赋值语句的区别。
给变量赋初值是变量说明的一部分,赋初值后的变量与其后的其它同类变量之间仍必须用逗号间隔,而赋值语句则必须用分号结尾。
例如:
int a=5,b,c;
3.在变量说明中,不允许连续给多个变量赋初值。
如下述说明是错误的:
int a=b=c=5
必须写为
int a=5,b=5,c=5;
而赋值语句允许连续赋值。
4.注意赋值表达式和赋值语句的区别。
赋值表达式是一种表达式,它可以出现在任何允许表达式出现的地方,而赋值语句则不能。
下述语句是合法的:
if((x=y+5)>0)z=x;
语句的功能是,若表达式x=y+5大于0则z=x。
下述语句是非法的:
if((x=y+5;)>0)z=x;
因为x=y+5;是语句,不能出现在表达式中。
4.3 数据输入输出的概念及在c语言中的实现(了解)
1)所谓输入输出是以计算机为主体而言的。
2)本章介绍的是向标准输出设备显示器输出数据的语句。
3)在c语言中,所有的数据输入/输出都是由库函数完成的。因此都是函数语句。
4)在使用c语言库函数时,要用预编译命令#include将有关“头文件”包含到源文件中。
使用标准输入输出库函数时要用到“stdio.h”文件,因此源文件开头应有以下预编译命令:
#include<stdio.h>或#include“stdio.h”
stdio是standard input&output的意思。
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<stdio.h>或#include“stdio.h”
例4.1 输出单个字符
#include<stdio.h>
main(){
char a='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;
c=getchar();
例4.2 输入单个字符。
#include<stdio.h>
main(){
char c;
printf("input a character\n");
c=getchar();
putchar(c);
}
使用getchar函数还应该注意几个问题:
1)getchar函数只能接受单个字符,输入数字也按字符处理。输入多于一个字符时,只接收第一个字符。
2)使用本函数前必须包含文件“stdio.h”。
3)在TC屏幕下运行含本函数程序时,将退出TC屏幕进入用户屏幕等待用户输入。输入完毕再返回TC屏幕。
4)程序最后两行可用下面两行的任意一行代替:
putchar(getchar());
printf("%c",getchar());
4.5 格式输入与输出(重点考点)
宝典提示:
(1)格式输入输出是C语言的重难点之一,也是必须掌握的考点。
(2)学习这部分内容,必须熟记%d,%c,%s,%f,%lf区别和使用场景。
(3)scanf格式输入函数必须在屏幕严格按照格式才能准确输入,如scanf("%dsss%d",&x,&y);那么如果赋值x=5,y=8,则屏幕上必须是5sss8才能将5和8分别赋值给x,y。又如scanf("%d,%d",&x,&y);则屏幕上必须是5,8才能赋值;如果是5空格8或者5回车8都是不能正确赋值;
(4)printf格式输出常考小数点后几位输出,如printf("%.2lf",a);则表示输出a小数点后2位。其他还有很多格式输出形式,请务必掌握。
以下待更新;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;