声明语句用来对变量和函数进行说明。使用形式为:
类型说明符变量表;
类型说明符函数名(形式参数表);
例如:
int a,b;
int main(int x,int y);
表达式语句是由一个表达式加“;”构成的语句。使用形式为:
表达式;
例如:
n = 5;
i++;
a += b + c;
函数调用语句由一个函数调用加分号“;”组成,使用形式为:
函数名(实参表);
例如:
printf("Hello,word!\n");
c = max(a,b);
分析:
printf是一个标准库中的输出函数,max是一个由用户自定义函数。
空语句是指仅由一个分号“;”组成的语句,即:
;
空语句不产生任何操作。
空语句的使用一般有两种情况:
例如:
while(getchar()!='\n')
;
分析:
该循环语句的功能是用键盘输入一个字符,只要输入的字符不是换行符(‘\n’)则继续输入,直到输入的字符为回车换行符时循环终止。
用一对大括号{}把多条语句和声明括起来,就构成了一个复合语句。
例如:
{
a = 4;
b = 5;
c = a + b;
printf("%d",c);
}
注意:
C语言有9种流程控制语句,可分为以下三类:
条件语句:if()…和if()…else…
多分支选择语句:switch(){…}
while语句:while()…
do while语句:do…while();
for 语句:for()…
无条件转向语句:goto
结束本次循环语句:continue
终止执行switch或循环语句:break
函数返回语句:return
该语句的一般形式:
if(表达式) 语句
该语句的形式为:
if(表达式)
语句1;
else
语句2;
一般形式为:
if(表达式1)
if(表达式2)
语句1
else
语句2
else
if(表达式3)
语句3
else
语句4
应当注意,else和if之间的配对关系。为了避免二义性,C语言规定else总是与它上面的最近的未配对的if配对。
例:
编写程序判别键盘输入字符的类别
/*
根据ASCII码判别字符类型:
小于32的为控制字符
在48和57之间为数字0到9
在65和90之间为大写字母A到Z
在97和122之间为小写字母a到z
其余为其他字符。
*/
#include
int main() {char c;printf("请输入一个字符:");c = getchar();if (c < 32)printf("控制字符");else if (c >= 48 && c <= 57)printf("数字");else if (c >= 65 && c <= 90)printf("大写字母");else if (c >= 97 && c <= 122)printf("小写字母");elseprintf("其他字符");return 0;}
结果:
特点:可以根据一个表达式的多种值选择多个分支。又称分情况语句或开关语句。
switch语句的一般形式:
switch(表达式){
case 常量表达式1: 语句1
case 常量表达式2: 语句2
.....
case 常量表达式n: 语句n
default: 语句n+1
}
说明:
break语句也称间断语句,可以在各语句块之后加上break语句。每当执行break语句时,立即跳出switch语句体。
switch语句通常总是和break语句联合使用,使得switch语句真正起到分支的作用。
例:
用数字1到7表示星期
#include
int main() {int a;printf("请输入一个数字:");scanf_s("%d", &a);switch (a){case 1: printf("星期一\n"); case 2: printf("星期二\n");case 3: printf("星期三\n"); case 4: printf("星期四\n"); case 5: printf("星期五\n"); case 6: printf("星期六\n"); case 7: printf("星期日\n");default: printf("error");}return 0;
}
结果:
添加break后:
#include
int main() {int a;printf("请输入一个数字:");scanf_s("%d", &a);switch (a){case 1: printf("星期一\n"); break;case 2: printf("星期二\n"); break;case 3: printf("星期三\n"); break;case 4: printf("星期四\n"); break;case 5: printf("星期五\n"); break;case 6: printf("星期六\n"); break;case 7: printf("星期日\n"); break;default: printf("error");}return 0;
}
结果:
一般形式:
while(表达式) 语句;
其中表达式是循环条件、语句时循环体
一般地,表达式中要对某个变量进行判断,通常称这个变量为循环控制变量,简称循环变量。
一般形式:
do
语句;
while(表达式);
先执行一次循环体语句,再判别表达式的值,若为真(非0)则继续循环;否则,终止循环,亦即直到其值为假(或0),终止循环。
do…while是先执行后判断,因此do…while至少要执行一次循环体;
while是先判断后执行,如果条件不满足,则循环体一次也不执行。
另外,两者一般可以相互替换。
例:
任意一个正整数,将该数各位颠倒输出。
#include
int main() {int n, d;printf("请输入一个数:");scanf_s("%d", &n);while(n != 0) {d = n % 10;printf("%d", d);n = n / 10;}return 0;}
结果:
#include
int main() {int n, d;printf("请输入一个数:");scanf_s("%d", &n);do {d = n % 10;printf("%d", d);n = n / 10;} while (n != 0);return 0;}
结果:
差别:当输入n = 0时:
while结果:
do…while结果:
可以看到while无输出结果,而do…while有输出结果0。
一般形式:
for(表达式1;表达式2;表达式3)
语句;
说明:
表达式1通常用于在进入循环之前给某些变量赋初值,一般是赋值表达式。
表达式2通常是用来控制循环是否执行的循环条件,一般为关系表达式或逻辑表达式。
表达式3通常用来修改循环重复时循环控制变量的值,一般是赋值表达式。
for后面的语句时循环体,如果由多条语句组成,一定要用花括号{}括起来。
例:
0到100求和
#include
int main() {int i;int sum = 0;for (i = 1; i <= 100; i++) {sum = sum + i;}printf("%d", sum);return 0;
}
结果:
注意:
for语句中的各表达式都可以省略,但分号间隔符不能省
如:for(;i<=100;i++)
省略了表达式1.
一般形式为:
goto 语句标号;
…
标号:语句
…
说明:
其中语句标号是按标识符规定书写的符号,放在某一语句的前面,标号后加冒号。
语句标号起标识语句的作用,与goto语句配合使用。
例:
求0到100的和
#include
int main() {int i = 1;int sum = 0;
a:sum = sum + i;i++;if (i <= 100)goto a;printf("%d", sum);return 0;
}
结果:
一般形式为:
break;
break只能在循环语句和switch语句中使用。
作用:跳出循环,提前结束循环
#include
int main() {int i;for (i = 0; i <= 5; i++) {if(i==2)break;printf("%d\n", i);}return 0;
}
结果:
一般形式:
continue;
作用:结束本次循环,转入下一次循环的判断与执行
#include
int main() {int i;for (i = 0; i <= 5; i++) {if (i == 2)continue;printf("%d\n", i);}return 0;
}
结果:
比较这两个输出的结果,我们就可以明确了解break和continue的区别。