黑马程序员————C语言流程控制

来源:互联网 发布:php在线讲解 编辑:程序博客网 时间:2024/05/01 03:24
------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ------- -------

1,C语言的基本流程简介

    从程序流程的角度来看,程序可以分为三种基本结构,即顺序结构、分支结构、循环结构。这三种基本结构可以组成所有的各种复杂程序。C语言提供了多种语句来实现这些程序结构。用于控制程序的流程,以实现程序的各种结构方式的语句,叫做控制语句。它们由特定的语句定义符组成。

C语言有九种控制语句。可分成以下三类:

1) 条件判断语句:if 语句、switch 语句;

2) 循环执行语句:while语句、for 语句、do while 语句;
3) 转向语句:break 语句、continue语句。

2,if语句

第一种形式:if。如果表达式的值为真,则执行其后的语句,否则不执行该语句。如下例,如果max小于b为真,那么将把b的值赋值给max,否则max保持为a的值。

#include <stdio.h>int main(){int a,b,max;printf("请输入两个数\n");scanf("%d,%d",&a,&b);max = a;if(max < b)max = b;return 0;}


第二种形式:if-else。如果表达式的值为真,则执行语句if后跟着的语句,否则执行else后的语句 。如下例,if中的表达式为真,即a大于b时,执行if跟着的语句,输出a的值,如果为假,则执行else后的语句,输出b的值。

#include <stdio.h>int main(){int a,b,max;printf("\n input two numbers: ");scanf("%d%d",&a,&b);if(a>b)printf("max=%d\n",a);elseprintf("max=%d\n",b);return 0;}


第三种形式:if-else-if。前二种形式的if 语句一般都用于两个分支的情况。当有多个分支选择时,可采用if-else-if 语句。执行过程:依次判断表达式的值,执行其对应的语句。当然,可以在if语句中再加上if语句(或者if-else语句),形成嵌套。

#include <stdio.h>int main(){char c;printf("输入一个字符");c = getchar();if(c >= '0' && c <= '9')printf("这是一个数字\n");else if(c >= 'A' && c <= 'Z')printf("这是一个大写字母\n");else if(c >= 'a' && c <= 'z')printf("这是一个小写字母\n");elseprintf("这是一个其他的字符\n");}

3,switch语句

    switch语句是c语言中用于多分支选择的另一种语句。其一般形式为如下,计算表达式的值。并逐个与其后的常量表达式值相比较,当表达式的值与某个常量表达式的值相等时, 即执行其后的语句,然后不再进行判断,继续执行后面所有case 后的语句。如表达式的值与所有case 后的常量表达式均不相同时,则执行default 后的语句。

switch(表达式){case常量表达式1: 语句1;case常量表达式2: 语句2;…case常量表达式n: 语句n;default: 语句n+1;}

在使用switch 语句时还应注意以下几点:

1) 在 case 后的各常量表达式的值不能相同,否则会出现错误。
2) 在 case 后,允许有多个语句,可以不用{}括起来。
3) 各 case 和default 子句的先后顺序可以变动,而不会影响程序执行结果。
4) default 子句可以省略不用。

举例:

#include <stdio.h>int main(){int a;printf("input integer number: ");scanf("%d",&a);switch (a){case 1:printf("Monday\n");break;case 2:printf("Tuesday\n");break;case 3:printf("Wednesday\n");break;case 4:printf("Thursday\n");break;case 5:printf("Friday\n");break;case 6:printf("Saturday\n");break;case 7:printf("Sunday\n");break;default:printf("error\n");break;}}


4,while语句

    while语句的一般形式为:while(表达式)语句;其中表达式是循环条件,语句为循环体。while语句的语义是:计算表达式的值,当值为真(非0)时, 执行循环体语句。while 语句中的表达式一般是关系表达或逻辑表达式,只要表达式的值为真(非0)即可继续循环。循环体如包括有一个以上的语句,则必须用{}括起来,组成复合语句。如下例所示:

#include <stdio.h>int main(){int a = 0 , n = 5 ;printf("input n: \n");scanf("%d",&n);while (n>0){printf("%d ",a++*2);n--;}return 0;}


5,for语句

    for 语句最简单的应用形式也是最容易理解的形式如下:for(循环变量赋初值;循环条件;循环变量增量) 语句;循环变量赋初值总是一个赋值语句,它用来给循环控制变量赋初值;循环条件是一个关系表达式,它决定什么时候退出循环;循环变量增量,定义循环控制变量每循环一次后按什么方式变化。这三个部分之间用“;”分开。在 C 语言中,for 语句使用最为灵活,它完全可以取代 while 语句。

它的一般形式为:

for(表达式1;表达式2;表达式3) 语句

它的执行过程如下:

1)先求解表达式1。

2)求解表达式2,若其值为真(非0),则执行for 语句中指定的内嵌语句,然后执行下面第3)步;若其值为假(0),则结束循环,转到第5)步。
3) 求解表达式3。
4)转回上面第2)步继续执行。
5)循环结束,执行for语句下面的一个语句。

注意:

1)for 循环中的“表达式1(循环变量赋初值)”、“表达式2(循环条件)”和“表达式3(循环变量增量)”都是选择项, 即可以缺省,但“;”不能缺省。
2)省略了“表达式1(循环变量赋初值)”, 表示不对循环控制变量赋初值。
3)省略了“表达式2(循环条件)”, 则不做其它处理时便成为死循环。
4)省略了“表达式3(循环变量增量)”, 则不对循环控制变量进行操作,这时可在语句体中加入修改循环控制变量的语句。
5)表达式1 可以是设置循环变量的初值的赋值表达式,也可以是其他表达式。
6)表达式1 和表达式3可以是一个简单表达式也可以是逗号表达式。例如:for(i=0,j=100;i<=100;i++,j--)。
7)表达式2 一般是关系表达式或逻辑表达式,但也可是数值表达式或字符表达式,只要其值非零,就执行循环体。
举例:

#include <stdio.h>int main(){int i = sum = 0 , n;printf("input n: \n");scanf("%d",&n);for( ;i <= n; i++)sum++;return 0;}


6,do-while语句

do-while 语句的一般形式为:

do
语句
while(表达式);
这个循环与while 循环和for循环的不同在于:它先执行循环中的语句,然后再判断表达式是否为真,如果为真则继续循环;如果为假,则终止循环。因此,do-while循环至少要执行一次循环语句。
同样当有许多语句参加循环时, 要用"{"和"}"把它们括起来。

举例:

#include <stdio.h>int main(){int i,sum=0;i=1;do{sum=sum+i;i++;}while(i<=100)printf("%d\n",sum);}


7,break和continue语句

    break语句通常用在循环语句和开关语句中。当break用于开关语句switch中时,可使程序跳出switch而执行switch以后的语句;如果没有break语句,则将成为一个死循环而无法退出。break 语句用于do-while、for、while 循环语句中时,可使程序终止循环而执行循环后面的语句, 通常break 语句总是与if 语句联在一起。即满足条件时便跳出循环。
    continue 语句的作用是跳过循环体中剩余的语句而强行执行下一次循环。continue 语句只用在for、while、do-while 等循环体中,常与if条件语句一起使用,用来加速循环。
注意:
1)break 语句对if-else 的条件语句不起作用。
2)在多层循环中, 一个break 语句只向外跳一层。
3)break语句用于跳出循环,执行循环后的语句;coutinue语句用于跳过本次循环中剩余的语句,而执行下一次循环。


0 0