文档库 最新最全的文档下载
当前位置:文档库 › 第3章流程控制C语言教程零基础到大神

第3章流程控制C语言教程零基础到大神

第3章流程控制C语言教程零基础到大神
第3章流程控制C语言教程零基础到大神

第3章流程控制

学习目标

◆掌握选择结构语句

◆掌握循环结构语句

前面的章节一直在介绍C语言的基本语法知识,然而仅仅依靠这些语法知识还不能编写出完整的程序。在程序中,通常需要加入业务逻辑,并对程序的流程进行控制。本章将重点讲解C语言中最基本的三种流程控制语句。

3.1 程序的运行流程图

流程图是描述问题处理步骤的一种常用图形工具,它是由一些图框和流程线组成的。流程图描述问题的处理步骤,形象直观,便于阅读。画流程图时必须按照功能选用相应的流程图符号,常用的流程图符号如图3-1所示。

起止框输入/输出框

判断框处理框

流程线连接点

图3-1流程图符号

图3-1所示的流程图符号中,列举了四种图框和两种流程线,具体说明如下:

●起止框用于表示流程的开始或结束;

●输入/输出框用平行四边形表示,在平行四边形内可以写明输入或输出的内容;

●判断框用菱形表示,它的作用是对条件进行判断,根据条件是否成立来决定如何执行后续的操作;

●处理框用矩形表示,它代表程序中的处理功能,如算术运算和赋值等;

●流程线用实心单向箭头或直线表示,可以连接不同位置的图框,流程线的标准流向是从左到右和

从上到下,可用直线表示,非标准流向的流程线应使用箭头指示方向;

●连接点用圆形表示,用于流程图的延续。

通过上面的讲解,初学者对流程图符号有了简单的认识,接下来先来看一个简单的流程图,如图3-2所示。

第3章流程控制

图3-2判断奇偶数

图3-2表示的是一个判断奇偶数的流程图,下面针对该流程图中的执行顺序进行说明,具体如下:第1步:程序开始;

第2步:进入处理框,将变量number赋值为1;

第3步:进入判断框,判断number是否为偶数,如果是偶数,则进入下面的输出框,输出number是偶数;否则进入左面的输出框,输出number是奇数;

第4步:输出完成后,进入结束状态,程序终止。

3.2 顺序结构语句

前面章节讲解的程序都有一个共同的特点,即程序中的所有语句都是从上到下逐条执行,这样的程序结构叫做顺序结构。顺序结构是程序开发中最常见的一种结构,它可以包含多种语句,如变量的定义语句、输入输出语句、赋值语句等。下面来看一个顺序结构的简单例子,通过程序实现按顺序输出“我爱C语言”,如例3-1所示。

例3-1

1#include

2int main()

3{

4printf("我\n");

5printf("爱\n");

6printf("C\n");

7printf("语\n");

8printf("言\n");

9return 0;

10}

运行结果如图3-3所示。

图3-3运行结果

在例3-1的程序中,使用了5个printf()语句,从上往下依次输出“我、爱、C、语、言”。从运行结果可以看出,程序是按照语句的先后顺序执行的。因此,可以说明该程序是一个顺序结构的程序。

3.3 选择结构语句

在实际生活中经常需要作出一些判断,比如开车来到一个十字路口,这时需要对红绿灯进行判断,如果前面是红灯,就停车等候,如果是绿灯,就通行。同样,在C语言中也经常需要对一些条件做出判断,从而决定执行哪一段代码,这时就需要使用选择语句。选择结构语句分为if条件语句和switch条件语句,接下来本小节将对它们进行详细地讲解。

3.3.1if条件语句

if条件语句分为三种语法格式,每一种格式都有其自身的特点,下面分别进行讲解。

1、if语句

if语句是指如果满足某种条件,就进行相应的处理。例如,小明妈妈跟小明说“如果你考试得了100分,星期天就带你去游乐场玩”。这句话可以通过下面的一段伪代码来描述。

如果小明考试得了100分

妈妈星期天带小明去游乐场

在上面的伪代码中,“如果”相当于C语言中的关键字if,“小明考试得了100分”是判断条件,需要用()括起来,“妈妈星期天带小明去游乐场”是执行语句,需要放在{}中。修改后的伪代码如下:if (小明考试得了100分)

{

妈妈星期天带小明去游乐场

}

上面的例子就描述了if语句的用法,在C语言中,if语句的具体语法格式如下:

if (条件语句)

{

代码块

}

上述语法格式中,判断条件是一个布尔值,当判断条件为true时,{}中的执行语句才会被执行。if语句的执行流程如图3-4所示。

第3章流程控制

开始

结束

判断条件

执行语句

true

false

图3-4if语句流程图

接下来通过一个案例来学习if语句的具体用法,如例3-2所示。

例3-2

1#include

2int main()

3{

4//声明变量x

5int x = 5;

6//如果x的值小于10则执行if大括号中的代码

7if (x < 10)

8{

9x++;

10}

11printf("x=%d\n" , x);

12return 0;

13}

运行结果如图3-5所示。

图3-5运行结果

例3-2中,定义了一个变量x,其初始值为5。在if语句的判断条件中判断x的值是否小于10,很明显条件成立,因此{}中的语句会被执行,变量x的值将进行自增。从图3-5的运行结果可以看出,x的值已由原来的5变成了6。

2、if…else语句

if…else语句是指如果满足某种条件,就进行相应的处理,否则就进行另一种处理。例如,要判断一个正整数的奇偶,如果该数字能被2整除则是一个偶数,否则该数字就是一个奇数。if…else语句的具体语法格式如下:

if (判断条件)

{

执行语句1

……

}

else

{

执行语句2

……

}

上述语法格式中,判断条件是一个布尔值。当判断条件为true时,if后面{}中的执行语句1会被执行。当判断条件为false时,else后面{}中的执行语句2会被执行。if…else语句的执行流程如图3-6所示。

开始

结束

判断条件

执行语句 1执行语句 2

true false

图3-6if…else语句流程图

接下来通过一个实现奇偶数判断的案例来演示if..else语句的具体用法,如例3-3所示。

例3-3

1#include

2int main()

3{

4int num = 19;

5if (num % 2 == 0)

6{

7//判断条件成立,num被2整除

8printf("num是一个偶数\n");

9}

10else

11{

12printf("num是一个奇数\n");

13}

14return 0;

15}

运行结果如图3-7所示。

图3-7运行结果

例3-3中,变量num的值为19,模以2的结果为1,不等于0,判断条件不成立。因此会执行else后

第3章流程控制

面{}中的语句,打印“num是一个奇数”。

3、if…else if…else语句

if…else if…else语句用于对多个条件进行判断,从而进行多种不同的处理。例如,对一个学生的考试成绩进行等级的划分,如果分数大于等于80分等级为优,如果分数小于80分大于等于70分等级为良,如果分数小于70分大于等于60分等级为中,否则,等级为差。if…else if…else语句的具体语法格式如下:if (判断条件1)

{

执行语句1

}

else if (判断条件2)

{

执行语句2

}

……

else if (判断条件n)

{

执行语句n

}

else

{

执行语句n+1

}

上述语法格式中,判断条件是一个布尔值。当判断条件1为true时,if后面{}中的执行语句1会执行。当判断条件1为false时,会继续执行判断条件2,如果为true则执行语句2,以此类推,如果所有的判断条件都为false,则意味着所有条件均未满足,else后面{}中的执行语句n+1会被执行。if…else if…else语句的执行流程如图3-8所示。

图3-8if…else if…else语句的流程图

接下来通过一个对学生考试成绩进行等级划分的案例来演示if…else if…else语句的用法,如例3-4所示。

例3-4

1#include

2int main()

3{

4int grade = 75; //定义学生成绩

5if (grade >= 80)

6{

7//满足条件 grade >=80

8printf("该成绩的等级为优\n");

9}

10else if (grade >= 70)

11{

12//不满足条件 grade >= 80 ,但满足条件 grade >= 70

13printf("该成绩的等级为良\n");

14}

15else if (grade >= 60)

16{

17//不满足条件 grade >= 70 ,但满足条件 grade >= 60

18printf("该成绩的等级为中\n");

19}

20else

21{

第3章流程控制

22//不满足条件 grade >= 60

23printf("该成绩的等级为差\n");

24}

25return 0;

26}

运行结果如图3-9所示。

图3-9运行结果

例3-4中,定义了学生成绩grade为75。它不满足第一个判断条件grade>=80,会执行第二个判断条件grade>=70,条件成立,因此会打印“该成绩的等级为良”。

多学一招:三元运算符

在C语言中有一种特殊的运算叫做三元运算,它和if…else语句类似,具体语法格式如下:

判断条件 ? 表达式1 : 表达式2

三元运算通常用于对某个变量进行赋值,当判断条件成立时,运算结果为表达式1的值,否则结果为表达式2的值。

例如求两个数x、y中的较大者,如果用if…else语句来实现,具体代码如下:

int x = 0;

int y = 1;

int max;

if (x > y)

{

max = x;

} else

{

max = y;

}

上面的代码运行之后,变量max的值为1。如果if…else语句用三元运算来替换,具体代码如下:int x = 0;

int y = 1;

int max;

max = x > y ? x : y;

3.3.2switch条件语句

switch 条件语句也是一种很常用的选择语句,和if条件语句不同,它只能针对某个表达式的值作出判断,从而决定程序执行哪一段代码。例如,在程序中使用数字1~7来表示星期一到星期天,如果想根据某个输入的数字来输出对应中文格式的星期值,可以通过下面的一段伪代码来描述:

用于表示星期的数字

如果等于1,则输出星期一

如果等于2,则输出星期二

如果等于3,则输出星期三

如果等于4,则输出星期四

如果等于5,则输出星期五

如果等于6,则输出星期六

如果等于7,则输出星期天

如果不是1~7,则输出此数字为非法数字

对于上面一段伪代码的描述,大家可能会立刻想到用刚学过的if…else if…else语句来实现,但是由于判断条件比较多,实现起来代码过长,不便于阅读。这时就可以使用C语言中的switch语句来实现这种需求。在switch语句中switch关键字后面有一个表达式,case关键字后面有目标值,当表达式的值和某个目标值匹配时,会执行对应case下的语句。接下来通过一段伪代码来描述switch语句的基本语法格式,具体如下:

switch (表达式)

{

case 目标值1:

执行语句1

break;

case 目标值2:

执行语句2

break;

……

case 目标值n:

执行语句n

break;

default:

执行语句n+1

break;

}

在上面的语法格式中,switch语句将表达式的值与每个case中的目标值进行匹配,如果找到了匹配的值,就会执行相应case后的语句,否则执行default后的语句。关于switch语句中的break关键字将在后面的小节中做具体介绍,此处,初学者只需要知道break的作用是跳出switch语句即可。

接下来通过一个案例来实现根据数字输出中文格式的星期的功能,如例3-5所示。

例3-5

1#include

2int main()

3{

4int week = 5;

5switch (week)

6{

7case 1:

8printf("星期一");

9break;

10case 2:

11printf("星期二");

12break;

第3章流程控制

13case 3:

14printf("星期三");

15break;

16case 4:

17printf("星期四");

18break;

19case 5:

20printf("星期五");

21break;

22case 6:

23printf("星期六");

24break;

25case 7:

26printf("星期天");

27break;

28default:

29printf("输入的数字不正确...");

30break;

31}

32return 0;

33}

运行结果如图3-10所示。

图3-10运行结果

例3-5中,由于变量week的值为5,整个switch语句判断的结果满足第19行的条件,因此打印“星期五”。程序中的default语句用于处理和前面的case都不匹配的情况,将第5行代码替换为int week = 8,再次运行程序,输出结果如图3-11所示。

图3-11运行结果

在使用switch语句的过程中,如果多个case条件后面的执行语句是一样的,则该执行语句只需书写一次即可,这是一种简写的方式。例如,使用数字1~7来表示星期一到星期天,当输入的数字为1、2、3、4、5时视为工作日,否则视为休息日,这时如果需要判断一周中的某一天是否为工作日,就可以采用switch 语句的简写方式,具体如例3-6所示。

例3-6

1#include

2int main()

3{

4int week = 2;

5switch (week)

6{

7case 1:

8case 2:

9case 3:

10case 4:

11case 5:

12//当 week 满足值 1、2、3、4、5 中任意一个时,处理方式相同

13printf("今天是工作日\n");

14break;

15case 6:

16case 7:

17//当 week 满足值 6、7 中任意一个时,处理方式相同

18printf("今天是休息日\n");

19break;

20}

21return 0;

22}

运行结果如图3-12所示。

图3-12运行结果

例3-6中,当变量week的值为1、2、3、4、5中任意一个值时,处理方式相同,都会打印“今天是工作日”。同理,当变量week值为6、7中任意一个值时,打印“今天是休息日”。

3.4 循环结构语句

在实际生活中经常会将同一件事情重复做很多次,比如在走路时,会重复使用左右脚,打乒乓球时,会重复挥拍的动作等。同样在C语言中,也经常需要重复执行同一代码块,这时就需要使用循环语句。循环语句分为while循环语句、do…while循环语句和for循环语句三种。接下来,本小节将针对这三种循环语句分别进行详细地讲解。

3.4.1while循环语句

while循环语句和3.3小节讲到的条件判断语句有些相似,都是根据条件判断来决定是否执行大括号内的执行语句。区别在于,while语句会反复地进行条件判断,只要条件成立,{}内的执行语句就会一直执行,直到条件不成立,while循环结束。while循环语句的具体语法格式如下:

while (循环条件)

{

执行语句

………

}

在上面的语法格式中,{}中的执行语句被称作循环体,循环体是否执行取决于循环条件。当循环条件

第3章流程控制

为true时,循环体就会被执行。循环体执行完毕时会继续判断循环条件,如条件仍为true则会继续执行,直到循环条件为false时,整个循环过程才会结束。

while循环的执行流程如图3-13所示。

开始

循环条件

执行语句

结束

true

false

图3-13while循环的流程图

接下来通过while语句来实现1~4之间自然数的打印,如例3-7所示。

例3-7

1#include

2int main()

3{

4int x = 1; //定义变量x,初始值为1

5while (x <= 4) // 循环条件

6{

7printf("x = %d\n", x);// 条件成立,打印x的值

8x++; // x进行自增

9}

10return 0;

11}

运行结果如图3-14所示。

图3-14while循环

例3-7中,x的初始值为1,在满足循环条件x <= 4的情况下,循环体会重复执行,打印x的值并让x 进行自增。因此打印结果中x的值分别为1、2、3、4。值得注意的是,例3-7中的第8行代码用于在每次循环时改变变量x的值,直到循环条件不成立,如果没有这行代码,整个循环会进入无限循环的状态,永远不会结束。

3.4.2do-while循环语句

do…while循环语句和while循环语句功能类似,二者的不同之处在于,while语句需要先判断循环条

件,然后根据判断结果来决定是否执行大括号中的代码,而do…while循环语句先要执行一次大括号内的代码再判断循环条件,其具体语法格式如下:

do

{

执行语句

………

} while(循环条件);

在上面的语法格式中,关键字do后面{}中的执行语句是循环体。do…while循环语句将循环条件放在了循环体的后面。这也就意味着,循环体会无条件执行一次,然后再根据循环条件来决定是否继续执行。

do…while循环的执行流程如图3-15所示。

开始

执行语句

循环条件

结束

true

false

图3-15do…while循环的执行流程

接下来使用do…while循环语句将例3-7进行改写,如例3-8所示。

例3-8

1#include

2int main()

3{

4int x = 1; //定义变量x,初始值为1

5do

6{

7printf("x = %d\n", x);// 条件成立,打印x的值

8x++; // x进行自增

9} while (x <= 4); // 循环条件

10return 0;

11}

运行结果如图3-16所示。

图3-16do while实例

例3-8和例3-7的运行结果一致,这说明do …while循环和while循环能实现同样的功能。然而在程序运行过程中,这两种语句还是有差别的。如果循环条件在循环语句开始时就不成立,那么while循环的循环体一次都不会执行,而do…while循环的循环体还是会执行一次。若将例中的循环条件x<=4改为x < 1,

第3章流程控制

例3-8会打印x=1,而例3-7什么也不会打印。

3.4.3for循环语句

在前面的小节中分别讲解了while循环和do…while循环。在程序开发中,还经常会使用另一种循环语句,即for循环,它通常用于循环次数已知的情况,其具体语法格式如下:

for(初始化表达式; 循环条件; 操作表达式)

{

执行语句

………

}

在上面的语法格式中,for关键字后面()中包括了初始化表达式、循环条件和操作表达式三部分内容,它们之间用“;”分隔,{}中的执行语句为循环体。

接下来分别用“①”表示初始化表达式、“②”表示循环条件、“③”表示操作表达式、“④”表示循环体,通过序号来具体分析for循环的执行流程。具体如下:

for(① ; ② ; ③)

{

}

第一步,执行①

第二步,执行②,如果判断结果为true,执行第三步,如果判断结果为false,执行第五步

第三步,执行④

第四步,执行③,然后继续执行第二步

第五步,退出循环

接下来通过一个案例对自然数1~4进行求和,如例3-9所示。

例3-9

1#include

2int main()

3{

4int sum = 0; //定义变量sum,用于记住累加的和

5for (int i = 1; i <= 4; i++) //i的值会在1~4之间变化

6{

7sum += i; //实现sum与i的累加

8}

9printf("sum = %d \n", sum); //打印累加的和

10return 0;

11}

运行结果如图3-17所示。

图3-17运行结果

例3-9中,变量i的初始值为1,在判断条件i<=4为true的情况下,会执行循环体sum+=i,执行完毕

后,会执行操作表达式i++,i的值变为2,然后继续进行条件判断,开始下一次循环,直到i=5时,条件i<=4为false,结束循环,执行for循环后面的代码,打印“sum=10”。

为了让初学者能熟悉整个for循环的执行过程,现将例3-9运行期间每次循环中变量sum和i的值通过表3-1罗列出来。

表3-1sum和i循环中的值

3.4.4循环嵌套

有时为了解决一个较为复杂的问题,需要在一个循环中再定义一个循环,这样的方式被称作循环嵌套。在C语言中,while、do…while、for循环语句都可以进行嵌套,并且它们之间也可以互相嵌套,这当中最常见的就是在for循环中嵌套for循环,具体语法格式如下:

for(初始化表达式; 循环条件; 操作表达式)

{

………

for(初始化表达式; 循环条件; 操作表达式)

{

执行语句;

………

}

………

}

接下来通过for语句的循环嵌套来实现使用“*”打印直角三角形,如例3-10所示。

例3-10

1#include

2int main()

3{

4int i, j; //定义两个循环变量

5for (i = 1; i <= 9; i++) //外层循环

6{

7for (j = 1; j <= i; j++) //内层循环

8{

9printf("*"); //打印*

10}

11printf("\n"); //换行

12}

13return 0;

14}

运行结果如图3-18所示。

第3章流程控制

图3-18运行结果

在例3-10中定义了两层for循环,分别为外层循环和内层循环,外层循环用于控制打印的行数,内层循环用于打印“*”,每一行的“*”个数逐行增加,最后输出一个直角三角形。由于嵌套循环程序比较复杂,下面分步骤进行详细地讲解,具体如下:

第一步,在第4行代码中定义了两个循环变量i和j,其中i为外层循环变量,j为内层循环变量。

第二步,在第5行代码中将i初始化为1,条件i <= 9为true,程序将首次进入外层循环的循环体。

第三步,在第7行代码中将j初始化为1,由于此时i的值为1,条件j <= i为true,程序将首次进入内层循环的循环体,打印一个“*”。

第四步,执行第7行代码中内层循环的操作表达式j++,将j的值自增为2。

第五步,执行第7行代码中的判断条件j<=i,判断结果为false,内层循环结束。执行后面的代码,打印换行符。

第六步,执行第5行代码中外层循环的操作表达式i++,将i的值自增为2。

第七步,执行第5行代码中的判断条件i<=9,判断结果为true,程序将进入外层循环的循环体,继续执行内层循环。

第八步,由于i的值为2,内层循环会执行两次,即在第2行打印两个“*”。在内层循环结束时会打印换行符。

第九步,以此类推,在第3行会打印3个“*”,逐行递增,直到i的值为10时,外层循环的判断条件

i <= 9结果为false,外层循环结束,整个程序也就结束了。

3.4.5跳转语句(break、goto、continue)

跳转语句用于实现循环执行过程中程序流程的跳转,在C语言中,跳转语句有break语句、goto语句和continue语句。接下来分别进行详细地讲解。

1、break语句

在switch条件语句和循环语句中都可以使用break语句。当它出现在switch条件语句中时,作用是终止某个case并跳出switch结构。当它出现在循环语句中,作用是跳出当前循环语句,执行后面的代码。接下来通过一个具体的案例来演示break语句如何跳出当前循环,如例3-11所示。

例3-11

1#include

2int main()

3{

4int x = 1; //定义变量x,初始值为1

5while (x <= 4) //循环条件

6{

7printf("x = %d\n", x); //条件成立,打印x的值

8if (x == 3)

9{

10break;

11}

12x++; //x进行自增

13}

14return 0;

15}

运行结果如图3-19所示。

图3-19运行结果

例3-11中,通过while循环打印x的值,当x的值为3时使用break语句跳出循环。因此打印结果中并没有出现“x=4”。

2、goto语句

当break语句出现在嵌套循环中的内层循环时,它只能跳出内层循环,如果想要跳出外层循环则需要对外层循环添加标记,然后使用goto语句。接下来通过一个案例来演示如何使用goto语句,如例3-12所示。

例3-12

1#include

2int main()

3{

4

5int i, j; //定义两个循环变量

6for (i = 1; i <= 9; i++) //外层循环

7{

8for (j = 1; j <= i; j++) //内层循环

9{

10if (i > 4) //判断i的值是否大于4

11{

12goto end; //跳至标识为end的语句

13}

14printf("*"); //输出*

15}

16printf("\n"); //换行

17}

18 end: return 0;

19}

运行结果如图3-20所示。

第3章流程控制

图3-20运行结果

例3-12中,在return语句前面增加了标记“end”。当i>4时,使用“goto end;”语句跳出外层循环。因此程序只打印了4行“*”。

3、continue语句

在循环语句中,如果希望立即终止本次循环,并执行下一次循环,此时就需要使用continue语句。接下来通过一个1~100之内的奇数求和的案例来演示continue语句的使用,如例3-13所示。

例3-13

1#include

2int main()

3{

4int sum = 0; //定义变量sum,用于记住和

5for (int i = 1; i <= 100; i++)

6{

7if (i % 2 == 0) //如果i是一个偶数,执行if语句中的代码

8{

9continue; //结束本次循环

10}

11sum += i; //实现sum和i的累加

12}

13printf("sum = %d\n", sum);

14return 0;

15}

运行结果如图3-21所示。

图3-21运行结果

例3-13使用for循环让变量i的值在1~100之间循环,在循环过程中,当i的值为偶数时,将执行continue 语句结束本次循环,进入下一次循环。当i的值为奇数时,sum和i进行累加,最终得到1~100之间所有奇数的和,打印“sum = 2500”。

3.5 本章小结

本章首先介绍了程序的运行流程图,然后讲解了C语言中最基本的三种流程控制语句,包括顺序结构语句、选择结构语句和循环语句。

通过本章的学习,初学者应该能够熟练的运用if判断语句、switch判断语句、while循环语句、do-while 循环语句以及for循环语句。掌握本章的内容就能够编写逻辑比较复杂的C语言程序并且有助于后面章节的学习。

3.6 习题

一、填空题

1、通常情况下使用______语句来跳出当前循环。

2、程序中的语句由上往下依次执行的是______结构语句。

3、for关键字后面()中包括了三部分内容,分别是初始化表达式、______和操作表达式

4、if条件语句分为三种语法格式,分别是______、______和______。

5、假设int x = 2,三元表达式x>0?x+1:5 的运算结果是______。

二、判断题

1、程序的运行流程图中,处理框用平行四边形来表示。

2、break语句只用于循环语句中,它的作用是跳出循环。

3、do…while循环语句中的循环体至少会执行一次。

4、while循环中不能再定义另一个循环。

5、switch条件语句中,default语句可用于处理和前面的case都不匹配的值。

三、选择题

1、以下选项中,哪个不属于switch语句的关键字?

A、break

B、case

C、for

D、default

2、下列语句哪些属于循环语句?(多选)

A、for语句

B、if语句

C、while语句

D、switch语句

3、以下选项中哪些描述是正确的?(多选)

A、循环语句必须要有中止条件否则不能编译

B、break关键字用于跳出当前循环

C、continue关键字用于终止本次循环,执行下一次循环

D、switch条件语句中可以使用break

4、以下程序片段运行结束后,输出结果是?

for (int i = 1; i<7; i++)

{

if (i % 3 == 0)

{

break;

}

printf("%d", i);

}

A、123456

B、1245

C、123

D、12

5、请先阅读下面的代码

int x = 1;

int y = 2;

if (x % 2 == 0)

{

y++;

}

else

{

第3章流程控制

y--;

}

printf("y=%d",y);

上面一段程序运行结束时,变量y的值为下列哪一项?

A、1

B、2

C、3

D、4

四、程序分析题

阅读下面的程序,分析代码是否能够编译通过,如果能编译通过,请列出运行的结果。否则请说明编译失败的原因。

代码一:

#include

int main()

{

int x = 4, j = 0;

switch (x)

{

case 1:

j++;

case 2:

j++;

case 3:

j++;

case 4:

j++;

case 5:

j++;

default:

j++;

}

printf(“%d”,j\n);

return 0;

}

代码二:

#include

int main()

{

int n = 9;

while (n > 6)

{

printf("%d\n", n);

n--;

}

return 0;

}

五、简答题

相关文档