搜档网
当前位置:搜档网 › C语言程序设计第五章 分支结构和循环结构

C语言程序设计第五章 分支结构和循环结构

C语言程序设计第五章 分支结构和循环结构
C语言程序设计第五章 分支结构和循环结构

第五章分支结构和循环结构

【学习目标】

本章将详细介绍在C语言中如何进行流程控制。主要包括分支语句、循环语句、流程跳转语句等。本章的学习要点包括如下几点:

(1)if分支语句。

(2)switch多分支语句。

(3)while循环语句。

(4)do-while循环语句。

(5)for循环语句。

(6)流程跳转语句。

【学习导航】

本章的在整个课程中的位置如图5-1所示。

图5-1 本章学习导航

任何编程语言中最常见的程序结构就是顺序结构。顺序结构就是程序从上到下一行一行地执行,中间没有任何判断和跳转。如图5-2所示。 如果main 方法多行代码之间没有任何流程控制,则程序总是从上向下依次执行,排在前面的代码先执行,排在后面的代码后执行。这意味着:如果没有流程控制,方法里的语句是一个顺序执行流,从上向下依次执行每条语句。但是,当我们需要根据不同的情况来有选择的做一些操作时,顺序结构就不能满足要求了,这时候就需要分支结构出马了! 5.1 分支结构

迄今为止,我们编写的程序都是按顺序从main 方法的第一行执行到最后一行。但现实世界中有些情况是在必须满足一定条件下才发生的,比如一个学生能拿奖学金必须满足每门课程在75分以上。选择语句的基本功能是使程序在不同的情况下,执行不同的代码。这样程序就不单只是顺序执行了,可以按照预先定好的逻辑执行不同的流程(比如满足条件A 就执行流程A ,满足条件B 就执行流程B )。C 语言中有两种选择语句:if 语句和switch 语句。

5.1.1 if 语句

1. 简略形式

基本的if 语句的语法为:

if

语句的作用是:当圆括号里的表达式返回值为真,则程序会执行花括号里面的程序

代码块。如果表达式值为假,则不会执行花括号里的程序代码块。其执行流程可以参考图5-3。

现在我们用这种写法来完成【课堂案例5-1】。

图 5-2 顺序结构语句的执行流程

图 5-3 基本if 条件语句的执行流程

【课堂案例5-1】在学生成绩管理系统中,需要对学生的成绩进行管理,请编写程序来根据学生的成绩给出相应信息:60分以上为“及格”,否则不显示。

【案例目标】会使用简略if语句

【案例知识要点】简略if语句的写法、表达式的运用。

【案例程序代码】simpleIf.c

【案例代码说明】

●第4行定义了一个变量score,初始化为65,用来保存学生成绩。

●第6行,系统会计算关系表达式“score>=60”的值,返回为true,所以会执行花括号里

图5-4 Simple.c程序输出结果

试一试(一):

如果修改一下程序的第4行,将score的值改为50,再运行。程序的执行结果是怎样的呢?

说明:因为这时系统在计算第6行的表达式的值为false,所以不会执行花括号里的代码。最终main方法执行完后没有任何输出信息。

试一试(二):

将程序代码的第7行和第9行的花括号删除,再运行。程序的执行结果是怎样的呢?说明:如果程序代码块只有一条语句,则可以省略{}(但不推荐这种写法,参见下面的【规则5-1】)。但if语句或else语句的程序代码块中包含多条语句,则必须放在花括号{}内。编程规范:

【规则5-1】if、for、do、while语句自占一行,且if、for、do、while等语句的执行语句部分无论多少都要加括号{}。

试一试(三):

下面的代码片段会输出什么结果?

上面的程序并没有任何语法错误,所以是可以编译成功并执行的。可能有读者会以为输出结果是0,因为程序第5行的表达式返回值显然为false。所以后面的代码是不会执行的。但是不执行的代码只有第6行,第7行是会执行的。因为在if后面没写{}的情况下,if的作用范围只有if后面的第一条语句。从这个例子可以看出,这种写法存在一定的误导,所以良好的编程规范是:即使if后面只有一条语句,也要用{}括起来。

【课堂练习】

1.编写程序判断输入的数是不是偶数?

2.编写程序判断输入的年份是不是闰年?

2. 完整形式

接下来我们修改一下需求,假设对某个学生成绩进行判断,如果大于等于60则打印“及格”,如果小于60分则打印“不及格”。要完成这个功能就需要用到if的完整形式。基本语法如下:

执行流程如图5-5所示。

图 5-5 完整形式if条件语句的执行流程

【课堂案例5-2】在学生成绩管理系统中,需要对学生的成绩进行管理,请编写程序来根据学生的成绩给出相应信息:如果大于等于60则打印“及格”,如果小于60分则打印“不及格”。

【案例目标】会使用完整形式的if语句

【案例知识要点】if完整形式的用法、else的理解

【案例程序代码】fullIf.c

【案例代码说明】

●第4行定义了一个变量score,初始化为65,用来保存学生成绩。

●第6行,系统会计算关系表达式“score>=60”的值,返回为true,所以会执行花括号里的输出语句,程序的输出结果为图5-6左:

●修改第4行score的值为55,则第6行的表达式返回false,系统会跳到第10行,执行

图5-6 FullIf.c程序输出结果

【课堂练习】

1.编写程序testIf1.c,定义一个整型变量score,赋值0~100之间。判断score的大小,如果大于等于80,则输出“优秀”,否则输出“还要努力”。

2.编写程序upperCaseLetter.c,完成如下功能:判断输入的是否大写字母,是则输出“您输入的是大写字母”,否则输出“不是大写字母”。

3. if语句的嵌套

继续完善【课堂案例5-2】的功能。要求程序对60分以上的给出更细化的等级,增加“优”的等级,即:60~79分为“及格”,80分以上为“优秀”。

单单使用前面介绍的if-else是无法完成这个功能的。因为if-else表示事务的两个对

立面,或者说只能描述两种情况。那么如何描述“优”等呢?显然“优”等是被包含在60分以上的范围中,所以要对60分以上的范围进行细化,表现在程序中就是在if( score>=60 )的{}中再嵌套if语句。嵌套的if语句格式如下:

if (表达式1)

{

...;

if(表达式2)

{//if语句的嵌套

... ;

}

else

{

...;

}

...;

}

else

{

...;

if(表达式2)

{ //if语句的嵌套

... ;

}

else

{

...;

}

...;

}

嵌套的if语句的使用请看【课堂案例5-3】。

【课堂案例5-3】在学生成绩管理系统中,需要对学生的成绩进行管理,请编写程序来根据学生的成绩给出相应信息:成绩小于60分则输出“不及格”,60~79分输出“及格”,80分以上输出“优秀”。

【案例目标】会使用嵌套的if语句

【案例知识要点】嵌套if语句的使用、外层if对内层if的影响

【案例程序代码】nestedIf.c

【程序说明】

●第8行到第15行的if-else是嵌套在外层的if(score>=60)之中的。

●第12行的else对应的分数范围是:60~79。这是嵌套的if语句的累计作用效果。在这个else前面有两个if。第一个为第6行的if(score>=60),当执行到这个if后面的{}中的程序代码块时,说明分数是>=60的;然后系统计算第8行的if(score>=80),如果返回值为假(即执行第12行的else部分),则说明当前的分数是在>=60的基础上<80,所以其范围就是60~79。

【课堂练习】

编写程序nestedIf2.java,定义一个描述学生成绩的整型变量score,赋值0~100之间。根据成绩给出相应等级:60分以下为“不及格”,60~69分为“及格”,70~79分为“良”,80分以上为“优秀”。(你可以修改score的值来观察各种不同的输出)

4. 缩排的if-else形式

如果需要测试的条件很多,那么会需要嵌套很多层,这样就导致代码的可读性差。可以使用缩排的if-else写法解决这个问题。其格式如下:

很显然,对于缩排的if-else,前面的if对后面的作用效果是累加的。

使用缩排的if-else格式完成上面的【课堂练习】代码如下:

【程序说明】

●第11行代码执行的前提是:第5行的表达式返回值为false,那么这时0<=score<=100;并且第9行的表达式返回值为true,这时分数为0<=score<60(其中score>=0是前一个if 累加作用的效果);这与输出“不及格”是相符的。

●第15行代码执行的前提可以照前面思路来分析。首先是第5行的表达式值为false,那么0<=score<=100;然后是第9行的表达式值也为false,表示score>=60。二者累加的效果为60<=score<=100;接下来第13行的表达式为true,那么60<=score<70,所以输出“及格”。

试一试(四):

请分析什么情况下会执行第19行代码?什么情况下会执行23行代码。

【课堂练习】

1.根据某人的应纳税所得额编程,计算个人所得税。税率表如下:

计算公式是:应纳个人所得税税额=应纳税所得额×适用税率-速算扣除数例:王某当月应纳税所得额6400元。则应纳个人所得税税额=6400×20%-375=905元。

2.编写程序实现如下功能:接收键盘输入的两个数及一个运算符,计算结果并输出。例如:

输入: 10 + 20 输出: 30

输入: 20 - 10 输出: 10

5.1.2 switch多分支语句

上一节介绍了if语句,其可以通过嵌套来实现多分支。但是如果需要处理问题的分支比较多,用嵌套的if会使得程序变得冗长,可读性差。这时可以使用C语言中实现多分支的另外一种选择语句:switch语句。其格式如下:

执行流程如图5-7所示。

图 5-7 switch条件语句的执行流程

【课堂案例5-3】编写程序实现计算器的功能:能根据指定的运算符对两个操作数进行“+”、“-”、“*”、“/”四种操作。

【案例目标】学会使用swicth语句

【案例知识要点】swicth语句的结构、表达式的使用、break关键字

【案例程序代码】calSwicth.c

【程序说明】

●第9行()里的ope是switch语句的判断表达式,它不是任意类型都可以。合法的判断

表达式主要有两类:

①基本类型表达式:

如果是基本类型表达式,则其返回值必须和int类型兼容。也就是说,表达式的类型只能是byte、short、char、以及int。

②枚举类型表达式

●第11、14、17、20行是四个case表达式,case表达式也是有要求的。有以下两点:

①在类型方面和判断表达式相同。

把这段代码放入完整的程序后会编译出错,原因是第2行和第5行定义了两个相同的

case。

●第23行是default部分。这一部分执行的前提是:前面所有列出的case都和第9行的

判断表达式不匹配。

●最后详细说明calSwitch类的执行流程。首先计算第9行判断表达式(假定用户输入的

操作符是‘+’),返回值为字符‘+',然后执行第11行,把case关键字后面的表达式

的值('+')与判断表达式的值进行比较,两者相互匹配,那么就执行当前这个case

后面的代码块。先是第12行:printf("和是%d\n",i+j);

输出16,然后再执行第13行:

break;

break关键字的意思是跳出整个switch语句,继续往下执行。在本程序中,switch语

句包含的行数是从第9行到第25行。所谓跳出switch语句是指程序跳转到第26行,

执行:

printf("swicth语句执行完毕...\n");

试一试(四):

执行calSwicth.exe,观察程序输出什么?

这是因为第11、14、17、20行四个case表达式的值(分别为'+'、'-'、'*'、'/')

都不能匹配第9行的判断表达式的值('#'),这时程序会执行default分支。

试一试(五):

对程序calSwitch.c稍作修改,将第13行注释,并且输入1+2,那么程序的输出是什

么呢?

第3行输出是两个数的和,是第12行的打印信息。

第4行输出是两个数的差,是第15行的打印信息。

这个例子揭示了switch语句执行流程的另一个特点,

图 5-8 修改后的calSwitch.exe执行结果就是当switch的判断表达式和某个case表达式匹配,就从

这个case子句开始执行,如果没有break语句,就会继续往下执行其他case子句,并且

不再判断case表达式的值是否匹配判断表达式。

swicth语句的编程规则:

【规则5-1】每个case 语句的结尾不要忘了加break语句,否则将导致多个分支重叠(除

非有意使多个分支重叠)。

【规则5-2】不要忘记最后的default 分支。即使程序真的不需要default 处理,也应该

保留语句default:break;

在一般情况下,应该在每个case子句的末尾加上break语句,以便及时退出整个switch

语句。但在某些情况下,可能有多个case表达式都匹配switch的判断表达式,这时就可以在这些case子句后不加break语句。具体用法请看【课堂案例5-4】。

【课堂案例5-4】编写程序如下功能:输入月份,输出2014年该月有多少天。

【案例目标】学会使用swicth语句

【案例知识要点】swicth语句的结构、多case匹配的写法

【程序说明】

● 因为1、3、5、7、8、10、12都是大月,所以代码的12-18行分别列出了这几种情况,

匹配其中任意一种得到的天数都是31天。 ● 代码20-23行列出了小月的情况。

5.2 循环语句

考虑学生管理系统中的这样一个功能需求:在控制台打印出某班所有学生的C 语言课程的成绩。假如这个班有40名同学,那么“打印某个学生的C 语言成绩”这件事情就要重复做40次。如何用高效的方式来完成这个需求呢?C 语言提供了循环语句。循环语句有三种,分别为while 语句、do-while 语句和for 循环语句。

5.2.1 while 循环语句

while 循环是最基本的循环语句。格式如下: while(循环条件){ 循环体; 迭代语句; }

当循环条件的值为true 时,就执行循环体和迭代语句,这个过程是重复的;否则终止循环。具体的流程参见图5-9。

下面用【课堂案例5-5】来说明while 的用法。

【课堂案例5-5】在学生管理系统中,要求提供这样的功能:查看全班所有学生某门课程的成绩;

【案例学习目标】学会使用while 语句

【案例知识要点】while 语句的写法、表达式的使用、计数器的使用

为了简化问题,在这个程序中,假定这个班只有20个人。并且学生的成绩恰好是70~89这20个整型数。

图 5-9 while 循环语句的执行流程

【程序输出】

【程序说明】

●第5行定义了变量sNum,用来统计学生的人数,在程序中应小于等于20。

●第6行定义了变量score,用来保存学生的成绩,初始化值为70,表示第一个学生的成

绩为70。

●第8行( )里是while语句的循环条件表达式,当sNum<=20时,返回值为true。第一次执行while语句时,显然返回true(1<=20)。所以往下执行while语句{}里面的程序代码块,包括循环体和迭代语句(也可以把迭代语句看作是循环体的一部分,后文中为了简便,把循环体和迭代语句统称为循环体)。在本程序中是第10、11、12行。

●第10行:打印出“第1个学生成绩为:70”。

●第11行:score加1后表示第二个学生的成绩(71分)。

●第12行:统计学生人数的计数器sNum(也可以叫迭代器)加1。sNum的值为2。

●第13行:是while语句的”}”,表示while语句的循环体已经执行完一次,注意这时程序并不会继续往下执行第12行,而是又回到while关键字所在的第8行(这就是循环结构的意义:循环结构包含的语句可以被重复执行多次),继续判断循环条件的真假,当前sNum 的值为2,显然sno<=20,所以可以再次执行循环体:

第10行打印“第2个学生成绩为:71”。

第11行迭代器sNum++,其值变为3。

第12行score加1后表示第三个学生的成绩(72分)。

然后又到第11行的while语句的”}”,这样while语句就被重复执行了2次。再转到第7行,重复上面的过程。依次会打印出第四个、第五个...第二十个学生的成绩。当循环结构执行到第21次时,sNum的值为21,这时在判断是否满足第7行的循环条件时,返回值为false,这样就会跳出循环语句,不再执行循环体。

【说明】

while语句后的{}是可选部分,如果没有{},则只对紧跟while语句的一条语句起作用。这个规则和if语句是相同的。

【课堂练习】

使用while循环编写程序完成如下功能:

找出10~100之间能被3或5整除的数,每行输出5个数。

5.2.2 do-while循环语句

do-while语句首先执行循环体和迭代语句,然后再判断循环条件。如果代表循环条件的表达式的值为真则继续执行循环,为假则终止循环。格式如下:

do{

循环体;

迭代语句;

}while(循环条件);

执行流程参见图5-10:

图 5-10 do-while循环语句的执行流程

下面使用do-while语句来完成课堂案例【5-6】的功能需求。同样假设这个班有20人,成绩分布在70~89。

【课堂案例5-6】在学生管理系统中,要求提供这样的功能:求出全班学生某门课程的总分并输出。

【案例学习目标】学会使用do-while语句

【案例知识要点】do-while语句的写法、do-while语句的执行流程、计数器的使用

【程序输出】

【程序说明】

●第7行定义了变量sum,用来保存总分。

●第9行~15行是do-while语句。

●第11行将当前学生的成绩累加到总分sum中。

●第13行修改计数器的数量。

●第15行( )里是循环条件,如果为真,则会到第10行重复执行循环体。注意“) ”后

面的“;”必不可少。

【课堂练习】

1.使用do-while循环编写程序完成如下功能:计算2-32之间(不包括32)的偶数之和。

2.编程输出n!的值,n由键盘输入。

5.2.3 while和do-while的区别

while语句和do...while语句实现的功能相同,唯一的区别就是do…while语句先执行后判断,无论表达式的值是否为true,都将执行一次循环;而while语句则是首先判断表达式的值是否为true,如果为true则执行循环语句;否则将不执行循环语句。请看下面的代码:

【程序输出】如图5-11所示。 【程序说明】

● 第5行将分别将i 和j 初始化为1。

● 第7行计算while 语句的循环条件i<=0,其返回值为false ,所以不会执行while 语句的

循环体。程序跳转到第13行。

● 因为do-while 语句是先执行一次循环体再计算循环条件的值,所以会往下执行第14~

17行。

● 第15行会输出"执行do-while 循环体"。 ● 第16行j 自增1。

● 第18行j 的值为2 所以循环条件 j<=0 返回值为false ,循环终止。

5.2.4 for 循环语句

for 循环和while 一样,也是先判断循环条件,再执行循环体,一般格式如下:

for(初始化语句;循环条件;迭代语句) {

循环体; }

执行for 语句时,先要执行初始化语句,这部分只执行一次。 然后计算作为循环条件的表达式的值,若为true 则执行循环体,再更新迭代器,然后再计算循环条件的表达式的值,如此循环反复。执行

流程可以参考图5-12。下面通过重写【课堂案例5-5】来说明for

循环的用法。 【程序代码】

图 5-11 While_DoWhile 的执行结果

图 5-12 for 循环语句的执行流程

【程序说明】

本程序完成的功能和whileTest.c是相同的。只不过从代码上稍显简洁。

第8行是for循环的入口,分为三部分(图5-13中的①②③),每部分用“;”隔开。

①是初始化的语句,只执行一次(sNum=1);②是循环条件,每次在执行循环体(图5-13中的④)之前都要计算其值是否为真(sNum<=20),为真则执行循环体,否则跳出循环;③是迭代语句,在每次循环体执行完后都要执行。

图5-13 for执行流程详解

【课堂练习】

1.使用for循环编写程序完成如下功能:输出1-10的平方和。

2.使用for循环和switch语句完成如下功能:输入某年某月某日,判断这一天是这一年的第几天?

3.有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13…求出这个数列的前20项之和。

5.2.5三种语句的选用

从上面的学习可以看出,同一个问题往往既可以用while语句解决,也可以用do...while 或者for语句来解决,但在实际应用中,应根据具体情况来选用不同的循环语句,选用的一般原则是:

1)如果循环次数在执行循环体之前就已确定,一般用for语句(【课堂案例5-5】用for循环比较合适);如果循环次数是由循环体的执行情况确定的,一般用while语句或者do...while 语句。

2)当循环体至少执行一次时,用do...while语句,反之,如果循环体可能一次也不执行,选用while语句。

5.2.6 多重循环

循环体中包含循环语句的结构称为多重循环结构。前面介绍的三种循环语句可以自身嵌套,也可以相互嵌套。

【课堂案例5-7】使用循环语句打印出图5-14所示图形:

图5-14 多重循环输出“*”

【案例学习目标】学会使用多重循环

【案例知识要点】循环的嵌套。

【案例完成步骤】

(1)分析要控制的元素,如何使用循环来控制这些元素。

要打印此图形,需要控制两个元素。一个是要打印“*”的行数,在本案例中为5行;二是每一行要打印“*”的数量,因为每行“*”的数量是不相同的。

问题是每行“*”的数量是不一样的:第1行是1个,第2行是3个,第3行是5个...,

那么如何整合这两个循环语句呢?这就需要使用多重循环。

(2)使用多重循环打印出图形。

循环结构程序设计课后习题及答案

循环结构程序设计习题及答案 1、循环语句的三要素分别是、、。 2、for语句括号内的3个表达式的作用分别 是、、。 3、在2层循环嵌套中,外层循环语句的每个执行周期中,内层循环语句都要完整 地,只有当时,才结束整个循环。 4、在循环结构中,break语句的作用是;continue语句的作用是。 5、当循环条件一开始就为假时,对于while语句、do…while语句、for语句,分别执行循环体次、次、次。 6、下面程序段的执行次数: int a=0; while(a=0) { printf("good\n"); a--; } 7、下面程序段的执行次数: int a=0; while(a==0) { printf("good\n"); a--; } 8、下面程序段的执行次数: int a=1; while(a=1) { printf("good\n"); a++; } 9、下面程序段的执行次数: int a=1; while(a==1) { printf("good\n"); a++; } 10、下列程序段的运行结果是。 for(i=5;i>=0;i--) printf(“%d “,i); 11、下列程序段的运行结果是。 for(n=1;n<20;n=n+3) printf(“%d “,n); 12、下列程序段的运行结果是。 for( ch='a' ;ch<='e' ;ch++) printf(“%d“,ch-97);

13、下列程序段的运行结果是。 for(i=1,j=5 ; i100) break; } C、int a=0; D、int x=21; do while(x) { ++a; --x; }while(a>=0); 三、阅读程序,写出程序运行结果。 1、#include"stdio.h" main() { int i=0,sum=1; do { sum+=i; i++; }while(i<5); printf("%d\n",sum); } 程序运行结果: 2、 #include"stdio.h" main() { int a,b;

c语言三种循环结构

任务1:控制LED 小灯亮灭 1.流程图如下: 2.程序如下: #include #define uint unsigned int #define uchar unsigned char void main() //主函数 { while(1) //while死循环 { if((P3&0x10)==0) //判断P3口上的八位与00010000相与后是否等于0,若是, 则P3.4口为低电平,也就是接在P3.4口上的开关按上了。 P1=0xfe; //当P3.4口上的开关按上了,那么就由用户使接在P1.0口 上的灯亮。 else if((P3&0x20)==0) //和上面的一样,判断P3.5口上的开关是否按上了。 P1=0Xfd; //当P3.5口上的开关按上了,点亮接在P1.1口上的灯。 else if((P3&0x40)==0) //判断P3.6口的开关是否按上了。

P1=0xfb; //当P3.6口上的开关按上了,点亮接在P1.2口上的灯。 else if((P3&0x80)==0) //判断P3.7口的开关是否按上了。 P1=0xf7; //当P3.7口上的开关按上了,点亮接在P1.3口上的灯。 else P1=0xff; //当没有按键按下时,P1口上的全部灯都不亮。 } } 3.仿真结果如下: 4.仿真结果分析: 从仿真图以及程序可以看出,当P3.4口上的开关按下时,不管其它三个开关有没有按下,只有受P3.4口开关控制的那个灯(p1.0口上的灯)才亮,以此类推,当只有P3.7口上的开关按下时,P1.3口上的灯才亮,而其它灯不亮,因为控制其它灯的按键没有按下,接在其它灯的IO口处于高电平状态。

循环结构程序设计练习题 内含答案

第三单元循环结构练习题 选择题: 1、有以下程序执行后的输出结果是( D )。 main( ) { int i,s=0; for(i=1;i<10;i+=2) s+=i+1; printf("%d\n",s);} A.自然数1~9的累加和 B.自然数1~10的累加和 C.自然数1~9中的奇数之和 D.自然数1~10中的偶数之和 2、以下关于for语句的说法不正确的是( A )。 A. for循环只能用于循环次数已经确定的情况 B. for循环是先判断表达式,后执行循环体语句 C. for循环中,可以用break跳出循环体 D. for循环体语句中,可以保含多条语句,但要用花括号括起来 3、若i和k都是int类型变量,有以下for语句 for(i=0,k=-1;k=1;k++) printf("*****\n"); 下面关于语句执行情况的叙述中正确的是( d )。 A.循环体执行两次 B.循环体执行一次 C.循环体一次也不执行 D.构成无限循环 4、以下程序程序的执行后的输出结果是( c )。 main() {int i,t[][3]={9,8,7,6,5,4,3,2,1}; for(i=0;i<3;i++) printf(“%d”,t[2-i][i]);} A.7 5 3 B. 3 5 7 C.3 6 9 D.7 5 1 5、以下程序运行后的输出结果是( A )。 void fun(char*s) { while(*s) { if(*s%2==0) printf(“%c”,*s); s++;} } main() { char a[]={“good”};fun(a);printf(“\n”);} 注意:字母a的ASCⅡ码值为97 A.d B.go C.god D.good 6、已知 int t=0; while(t=1){...} 则以下叙述正确的是( B )。 A)循环控制表达式的值为0 B)循环控制表达式的值为1 C)循环控制表达式不合法 D)以上说法都不对 7、设有以下程序段 B int x=0,s=0; while(!x!=0)s+=++x; printf("%d",s); 则 A)运行程序段后输出0

循环结构程序设计代码

实验五代码: 基础能力落实: 1)编写一个程序,将用分钟表示的时间转化成以小时和分钟表示的时间。使用#define 或者const来创建一个代表60的字符常量。使用while循环来允许用户重复键入值,并且当键入一个小于等于0的时间时终止循环。要求用while语句 #include int main(void) { const int minperhour = 60; int minutes, hours, mins; printf("Enter the number of minutes to convert: "); scanf("%d", &minutes); while (minutes > 0 ) { hours = minutes / minperhour; mins = minutes % minperhour; printf("%d minutes = %d hours, %d minutes\n", minutes, hours, mins); printf("Enter next minutes value (0 to quit): "); scanf("%d", &minutes); } printf("Bye\n"); return 0; } 2)编写一个程序打印一个表,表的每一行都给出一个整数,它的平方以及它的立方,要求用户输入表的上限和下限。使用一个for循环。 #include int main( void ) { int lower, upper, index; int square, cube; printf("Enter starting integer: "); scanf("%d", &lower);

循环结构程序设计典型例题

循环结构程序设计典型例题 例1有数列2/3、4/5、6/9、10/15……求此数列前30项的和。 算法分析: 对于数列的题,首先要找出通项公式,或前后项的计算关系公式,根据公式求所需。由于数列的题一般执行次数能确定,用for语句来编写比较方便。 此题,前后项的关系是:后一项的分子是前一项的分母加1,后一项的分母是前一 项的分子加分母。解题思路是用循环语句求各项,并把值累加,因为是求前30项的和,循环执行30次。 1.初值i=2,j=3,s=0; 2.用n从1到30循环 3.s=s+ i/j; 4.c=i; i=j+1; j=c+j; 5输出s; 程序: #in clude mai n() { int i=2,j=3, n,c; float s=0; for(n=1; n<=30 ;n++) { s=s+(float)i/j; c=i; i=j+1; j=c+j; } printf( "n%f” ,s); } 此题中的n与循环体中的执行语句没有数值上的联系,仅仅用做决定循环执行的次数。 例2:下面这个程序,想想它实现的是什么功能? #in clude mai n() { int i,s=0; for(i=1;i<=100;i++) {if(i%5==0) continue; s=s+i; } printf( n“d' ,s); } 在左边的程序中,i从1到100循环,当i是5的倍数时,直接进入下一个i,当i不是5的倍数时,把i累加到s,最后输出s。所以,这个程序实现的是求1~100中间所有非5的倍数的数之和。 例3:输出n~m中(0<*m)能被3整除,且至少有一个数字是5的所有数。 算法分析:

循环结构程序设计典型例题

循环结构程序设计典型例题 例1:有数列2/3、4/5、6/9、10/15……求此数列前30项的和。 算法分析: 对于数列的题,首先要找出通项公式,或前后项的计算关系公式,根据公式求所需。由于数列的题一般执行次数能确定,用for语句来编写比较方便。 此题,前后项的关系是:后一项的分子是前一项的分母加1,后一项的分母是前一项的分子加分母。解题思路是用循环语句求各项,并把值累加,因为是求前30项的和,循环执行30次。 1. 初值i=2,j=3,s=0; 2. 用n从1到30循环 3. s=s+ i/j; 4. c=i; i=j+1; j=c+j; 5.输出s; 程序: #include<> main( ) { int i=2,j=3,n,c; float s=0; for(n=1;n<=30;n++) { s=s+(float)i/j; c=i; i=j+1; j=c+j; } printf(“\n%f”,s); } 此题中的n与循环体中的执行语句没有数值上的联系,仅仅用做决定循环执行的次数。 例2:下面这个程序,想想它实现的是什么功能? #include<> main( ) { int i,s=0; for(i=1;i<=100;i++) {if(i%5==0) continue; s=s+i; } printf(“\n%d”,s); } 在左边的程序中,i从1到100循环,当i是5的倍数时,直接进入下一个i,当i不是5的倍数时,把i累加到s,最后输出s。所以,这个程序实现的是求1~100中间所有非5的倍数的数之和。 例3:输出n~m中(0

循环程序设计习题及答案

模块三循环程序设计习题及答案 一、填空题 1、当在数据处理中要重复执行相同的操作时,宜采用程序结构来实现。 2、循环的3要素是、、。 3、在循环语句体中包含另一个循环语句的用法称为。 4、执行循环语句体中的break语句后将使用包含它的循环语句。 5、要结束当前正在执行循环体语句而直接进入下一循环周期,需要执行语句。 6、在for语句中表达式允许省略,但不能少,语句for( ; ;) ;构成的是循环。 7、在for语句中,省略表达式2时,则循环为循环。 8、执行语句for(i=1;i++<4; );后变量i的值是。 9、要使用循环程序提前结束本次循环周期并开始下一个循环周期,应在循环体内有条件使用语句。 10、在每次循环周期均要执行一次的语句,称为。 11、for语句括号内的3个表达式的作用分别是、和循环控制变量的更新。 二、选择题 1、若k为整形变量,则while循环共循环()。 k=5; while(k>=0) k-1; A、无限循环 B、6次 C、5次 D、4次 2、与while( ! n) ; 中表达式!dn等价的是()。 A、dn>=0 B 、dn!=0 C、dn == 0 D、dn != 1 3、以下程序段,while循环执行的次数是() int k=0;

while( k == 1) k++; A、无限次 B、有语法错,不能执行 C、一次也不执行 D、执行1次 4、在C语言中,当do while语句中的条件为()时,结束该循环。 A、0 B、1 C、TRUE D、非0 5、下面程序段的输出结果是() do { b-=a; a++; }while(b--<0); A、10,-1 B、2,8 C、9,0 D、4,-3 6、以下描述正确的是() A、由于do while循环中循环体语句只能是一条可执行语句,所以循环体内不能使用复合语句。 B、do while循环由do开始,用while结束,在while(表达式)后面不能写分号 C、在do while循环体中,一定要有能使while后面匠值变为零的操作 D、do while循环中,根据情况可以省略while 7、若有如下程序段,其中s、a、b、c均已定义为整型变量,且a、c均已赋值(c大于0)。 s=c; for(b=1;b<=c;b++) s=s+1; 则与上述程序段功能等价的赋值语句是() A、s=a+b; B、s=a+c; C、s=s+c; D、s=b+c; 8、假定a,b,c,d均已定义为整型变量,且a、c均已赋值,a大于0,c大于0,则与程序段for(d=a,b=1;b<=c;b++) d--;功能等价的语句是() A、d=a+b; B、d=a+c; C、d=a-b; D、d=a-c 9、下列关于for循环的说法正确的是() A、for循环只能用于循环次数已经确定的情况

循环结构程序设计:三种循环语句

一、循环结构(Iteration Structure)的概述 1.目的 为了解决含有重复处理内容的问题,必须采用循环语句(Loop Statement)来编程实现。 2.类型 (1)当型循环结构 (2)直到型循环结构 二、循环语句 1.while语句 ①功能:实现当型循环结构。 ②形式 while(表达式){ 循环体 } ③特点:先判断后执行。 ④举例:(累加和问题)编程计算整数1~100的和。 int i ; //循环变量 int sum = 0 ; //累加和清0 i = 1 ; //循环变量i赋初值 while( i <= 100){ sum = sum + i ; //循环变量累加到sum中 i = i + 1; //改变循环变量i的值 } 2.do-while语句 ①功能:实现直到型循环结构。 ②形式 do{ 循环体

}while(表达式); //注意最后的分号 ③特点:先执行后判断。 ④举例:修改上例。 /*利用do-while语句编程实现整数1~100的和。*/ int i ; //循环变量 int sum = 0 ; //累加和清0 i = 1 ; //循环变量i赋初值 do{ sum = sum + i ; //循环变量累加到sum中 i = i + 1; //改变循环变量i的值 }while(i<=100);//注意最后的分号 3.for语句 ①功能:实现当型循环结构。 ②形式 for(表达式1;表达式2;表达式3){ 循环体 } ③特点:先判断后执行;使用频率最高。 ④举例:修改上例。 /*使用for语句编程计算整数1~100的和。*/ int i ; //循环变量 int sum = 0 ; //累加和清0 for( i = 1 ; i <=100 ; i++ ){//第一个表达式完成循环变量i赋初值;第三个表达式实现改变循环变量i的值 sum = sum + i ; //循环变量累加到sum中 } 4.几种循环语句的比较 ①由于while语句和for语句均实现当型循环结构,两者是完全等价的。 for(表达式1;表达式2;表达式3){

C语言循环结构教学设计方案

《C语言循环结构》教学设计方案 一、教学内容分析 循环结构是面向过程编程中三种结构中最重要的一种结构,学好它是学好这门课程的关键。循环结构的实质是重复执行一系列语句,这种重复性是在循环条件的有效控制之下完成的。程序的关键在于如何控制循环的条件,在恰当的时机执行循环或退出循环。 二、学习者分析 循环结构是一种比较复杂的结构,在C语言中,循环结构主要包括for、while和do-while 三种语句,其中for语句的应用更为普遍一些。循环语句的用法对于有程序设计经验的学生来说轻而易举,但是对于那些没有经验的初学者来说,难度却不小。在一堂课的设计过程中,引例的作用至关重要。一个好的引例能把抽象问题简单化、具体化,有利于学生理解掌握。在学习循环结构时可先利用现实生活中的一些具体实例来说明什么是循环以及为什么要研究循环让一名初学者尽快摆脱日常的思维定式,更加透彻地理解和掌握程序设计中的基本思想,领会程序设计的精髓,总结出程序设计中每一种程序设计结构的本质及适合解决的问题,是高级语言程序设计这门课程在讲授过程中,应该时刻注意的问题。 三、教学目标 1.知识与能力 掌握循环构造的基本特点;区分多种不同类型循环结构的运行过程;掌握循环结构的格式及应用方法。 2.过程与方法 首先学会区分多种不同类型的循环结构,而后学会定义及应用方法,利用上机熟练应用技巧。 3.情感态度与价值观 我们必须抱有自己想学习的心态,多去问老师一些问题,那么你的漏洞将会越来越少,程序量和代码量才会越来越多。

四、重点难点及处理 1.循环语句的的分类和定义 For循环、while循环和do-while循环 特点:在一个程序中可以通过变换语句来使用不同的循环语句,而不改变程序 的功能。 2.循环语句的引用 例如:要从1累加到100 使用For循环:for(sum,=0,i=1;i<=100;i++) sum=sum+i 使用while循环:while(i<=100) sum=sum+i 使用do-while循环:do {sum=sum+i;} while(i<=100) 五、教学准备 1. PPT教学课件 2. 实验操作:Visual C++6.0软件平台,PC电脑,教学机房,网络课堂。 六、教学思路(教学策略等) 在一堂课的设计过程中,引例的作用至关重要。一个好的引例能把抽象问题简单化、具体化,有利于学生理解掌握。在学习循环结构时可先利用现实生活中的一些具体实例来说明什么是循环以及为什么要研究循环。现在我们可以提出一个问题:在计算机程序设计的世界里是否也有类似的这种相同操作重复出现的问题呢?利用最简单累加求和的例子。 例:求1+2+3+4+5+…+100的和。 下面就可以引出本节课的重点,通过分别使用For循环、while循环和do-while循环来完成本程序,我们在整个过程中都做着重复的、相同的事情,也就是前面所说的循环,在试着写出比较简单的程序时,可以试着选择素数或者奇数累加来增加难度,还可以使得让学生接受和探究双重循环。 七、教学过程 教学引入 掌握掌握循环结构的基本特点:for语句、while语句和do-while语句 如何计算1+2+3+4+…+100

循环结构程序设计课后习题及答案

循环结构程序设计习题及答案1、循环语句的三要素分别 是、、。 2、for语句括号内的3个表达式的作用分别 是、、。 3、在2层循环嵌套中,外层循环语句的每个执行周期中,内层循环语句都要完整地,只有当时,才结束整个循环。 4、在循环结构中,break语句的作用是;continue语句的作用是。 5、当循环条件一开始就为假时,对于while语句、do…while语句、for 语句,分别执行循环体次、次、 次。 6、下面程序段的执行次数: int a=0; while(a=0) { printf("good\n"); a--; } 7、下面程序段的执行次数: int a=0; while(a==0)

{ printf("good\n"); a--; } 8、下面程序段的执行次数: int a=1; while(a=1) { printf("good\n"); a++; } 9、下面程序段的执行次数: int a=1; while(a==1) { printf("good\n"); a++; } 10、下列程序段的运行结果是。 for(i=5;i>=0;i--) printf(“%d “,i); 11、下列程序段的运行结果是。 for(n=1;n<20;n=n+3) printf(“%d “,n); 12、下列程序段的运行结果是。

for( ch='a' ;ch<='e' ;ch++) printf(“%d“,ch-97); 13、下列程序段的运行结果是。 for(i=1,j=5 ; i

C语言 循环结构程序设计模拟题

第五章循环结构程序设计 一、选择题 1.while循环语句中,while后一对圆括号中表达式的值决定了循环体是否进行,因此,进入while循环后,一定有能使此表达式的值变为的操作,否则,循环将会无限制地进行下去。(0级) A)0 B)1 C)成立D)2 2.在do-while循环中,循环由do开始,用while结束;必须注意的是:在while表达式后面的不能丢,它表示do-while语句的结束。(0级) A)0 B)1 C);D), 3.for语句中的表达式可以部分或全部省略,但两个不可省略。但当三个表达式均省略后,因缺少条件判断,循环会无限制地执行下去,形成死循环。(0级)A)0 B)1 C);D), 4.程序段如下 int k=-20; while(k=0) k=k+1; 则以下说法中正确的是。(1级) A)while循环执行20次B)循环是无限循环 C)循环体语句一次也不执行D)循环体语句执行一次5.程序段如下 int k=1; while(!k==0) {k=k+1;printf("%d\n",k);} 说法正确的是。(1级) A)while循环执行2次B)循环是无限循环 C)循环体语句一次也不执行D)循环体语句执行一次6.以下for循环是。(1级) for(a=0,b=0;(b!=123)&&(a<=4);a++) A)无限循环B)循环次数不定C)执行4次D)执行5次7.在下列程序中,while循环的循环次数是。(1级) main( ) { int i=0; while(i<10) {if(i<1) continue; if(i= =5) break; i++; } ...... } A)1 B)10 C)6 D)死循环、不能确定次数8.程序段如下 int k=0; while(k++<=2) printf("%d\n",k);

C语言三种循环语句

三种基本的循环语句: for语句、while语句和do-while语句。 一、循环语句 (一)、for循环它的一般形式为: for(<初始化>;<条件表过式>;<增量>) 语句; 初始化总是一个赋值语句,它用来给循环控制变量赋初值;条件表达式是一个关系表达式,它决定什么时候退出循环;增量定义循环控制变量每循环一次后按什么方式变化。这三个部分之间用;分开。 例如: for(i=1;i<=10;i++) 语句; 上例中先给i赋初值1,判断i是否小于等于10,若是则执行语句,之后值增加1。再重新判断,直到条件为假,即i>10时,结束循环。 注意: (1).for循环中语句可以为语句体,但要用{和}将参加循环的语句括起来。 (2).for循环中的初始化、条件表达式和增量都是选择项,即可以缺省,但;不能缺省。省略了初始化,表示不对循环

控制变量赋初值。省略了条件表达式,则不做其它处理时便成为死循环。省略了增量,则不对循环控制变量进行操作,这时可在语句体中加入修改循环控制变量的语句。 (3).for循环可以有多层嵌套。 例如: for(;;) 语句; for(i=1;;i+=2) 语句; for(j=5;;) 语句; 这些for循环语句都是正确的。 main() { int i,j; printf(i j\n); for(i=0;i<2;i++) for(j=0;j<3;j++) printf(%d %d\n,i,j); } 输出结果为: i j 0 0 0 1 0 2

1 0 1 1 1 2 用for循环求1+2+……+100的和: main() { int sn=0,i; for(i=1;i<=100;i++) sn+=i; /*1+2+……+100*/ printf(%d\n,sn); } 从程序可以看出,使用循环语句可以大大简化代码。(二)、while循环它的一般形式为: while(条件) 语句; while循环表示当条件为真时,便执行语句。直到条件为假才结束循环。并继续执行循环程序外的后续语句。 例如: #include stdio.h main() {

第5章 循环结构程序设计作业参考答案

第5章循环结构程序设计作业参考答案 班级学号姓名 【第140页】 5-1、请画出课本里5.6中给出的3个程序段的传统流程图。 (1)程序1: #include int main() { int i,j,n=0; for (i=1;i<=4;i++) for (j=1;j<=5;j++,n++) { if(n%5==0)printf("\n"); //控制在输出5个数据后换行 printf("%d\t",i*j); } printf("\n"); return 0; } (2)程序2: #include int main() { int i,j,n=0; for (i=1;i<=4;i++) for (j=1;j<=5;j++,n++) { if(n%5==0)printf("\n"); //控制在输出5个数据后换行 if (i==3 && j==1) break; //遇到第3行第1列,终止内循环 printf("%d\t",i*j); } printf("\n"); return 0; } (3)程序3: #include int main() { int i,j,n=0; for (i=1;i<=4;i++)

for (j=1;j<=5;j++,n++) { if(n%5==0)printf("\n"); //控制在输出5个数据后换行 if (i==3 && j==1) continue; //遇到第3行第1列,提前结束执行本次内循环体 printf("%d\t",i*j); } printf("\n"); return 0; } (1)程序1流程图(2)程序2流程图(3)程序3流程图 5-3、输入两个正整数m和n,求其最大公约数和最小公倍数。 #include int main()

实验三 循环结构程序设计(教案)

实验教案 一、实验目的 (1) 掌握while、do~while、for语句的使用。 (2) 掌握循环体内使用break、continue语句的作用。 (3) 掌握循环及嵌套循环结构的程序设计方法。 二、实验准备 1.C语言实现循环的方法 ①goto 和if 构成的循环:由于goto是无条件转向,不符合结构化程序设计思想,所以不建议使用。 ②while循环:实现“当型”循环,首先判断循环条件,当条件为真,执行循环体,再判断循环条件……此种循环有可能一次也不执行循环体。 ③do~while循环:实现“直到型”循环,与while循环的区别是先执行循环体,再判断循环条件,当循环条件为真,再执行循环体……此种循环至少执行一次循环体。 ④for循环:与while循环类似,一般用于知道循环变量初值、终值及步长值的循环。 2.break 和continue 语句 ①break 语句:可用在循环体或switch语句中,作用是跳出其所在的控制结构。若是在循环体中,则是跳出其所在的循环,使得循环不止一个出口。 ②continue语句:只能用在循环体中,其作用是结束本层本次循环,注意不是退出循环。 3.阅读以下程序,并分析其功能,调试运行程序后再分析其运行结果。 ①掌握三种方法求1到100的累加和。 文件名为ex3-1-1.c,内容如下: # include main() { int sum=0,i=1; while(i<=100) sum+=i++; // 等价于:{ sum=sum+i; i++; } printf("sum is %d\n",sum); } 文件名为ex3-1-2.c,内容如下: # include main() { int sum=0,i=1; do sum+=i++; while(i<=100); printf("sum is %d\n",sum); } 文件名为ex3-1-3.c,内容如下: # include main()

(11级)实验三 循环结构程序设计

实验三循环结构程序设计 一、实验目的 (1) 掌握while、do~while、for语句的使用。 (2) 掌握循环体内使用break、continue语句的作用。 (3) 掌握循环及嵌套循环结构的程序设计方法。 二、实验准备 1.C语言实现循环的方法 ①goto 和if 构成的循环:由于goto是无条件转向,不符合结构化程序设计思想,所以不建议使用。 ②while循环:实现“当型”循环,首先判断循环条件,当条件为真,执行循环体,再判断循环条件……此种循环有可能一次也不执行循环体。 ③do~while循环:实现“直到型”循环,与while循环的区别是先执行循环体,再判断循环条件,当循环条件为真,再执行循环体……此种循环至少执行一次循环体。 ④for循环:与while循环类似,一般用于知道循环变量初值、终值及步长值的循环。 2.break 和continue 语句 ①break 语句:可用在循环体或switch语句中,作用是跳出其所在的控制结构。若是在循环体中,则是跳出其所在的循环,使得循环不止一个出口。 ②continue语句:只能用在循环体中,其作用是结束本层本次循环,注意不是退出循环。 3.阅读以下程序,并分析其功能,调试运行程序后再分析其运行结果。 ①掌握三种方法求1到100的累加和。 文件名为ex3-1-1.c,内容如下: # include main() { int sum=0,i=1; while(i<=100) sum+=i++; // 等价于:{ sum=sum+i; i++; } printf("sum is %d\n",sum); } 文件名为ex3-1-2.c,内容如下: # include main() { int sum=0,i=1; do sum+=i++; while(i<=100); printf("sum is %d\n",sum); } 文件名为ex3-1-3.c,内容如下: # include main() { int sum=0,i; for(i=1;i<=100;i++) sum+=i; printf("sum is %d\n",sum); } ②程序二,程序文件名为ex3-2.c。(掌握递推算法(求 值))

第五章循环结构的程序设计补充习题(1)

第五章循环结构的程序设计补充习题(1) 一、单选题 1. 以下叙述正确的是 A) do-while语句构成的循环不能用其它语句构成的循环来代替。 B) do-while语句构成的循环只能用break语句退出。 C) 用do-while语句构成的循环,在while后的表达式为非零时结束循环。 D) 用do-while语句构成的循环,在while后的表达式为零时结束循环。 2. 设有程序段 int k=10; while(k=0) k=k-1; 则下面描述中正确的是。 A)while循环执行10次B)循环是无限循环 C)循环体语句一次也不执行D)循环体语句执行一次 3. 有如下程序 main() { int x=23; do { printf("%d",x--);} while(!x); } 该程序的执行结果是 A) 321 B) 23 C) 不输出任何内容D) 陷入死循环 4. 有如下程序 main() { int n=9; while(n>6) {n--;p rintf(“%d”,n);} } 该程序段的输出结果是 A) 987 B) 876 C) 8765 D) 9876 5. 有以下程序 main() { int s=0,a=1,n; scanf("%d",&n); do { s+=1; a=a-2; } while(a!=n); printf("%d\n",s); } 若要使程序的输出值为2,则应该从键盘给n输入的值是 A)-1 B)-3 C)-5 D)0 6.若有如下程序段,其中s、a、b、c均已定义为整型变量,且a、c均已赋值(c大于0) s=a; for(b=1;b<=c;b++) s=s+1; 则与上述程序段功能等价的赋值语句是 A)s=a+b; B)s=a+c; C)s=s+c; D)s=b+c; 7. 标有/**/的语句的执行次数是: int y , i ; for(i=0;i<20;i++) { if( i%2==0) continue ; y+=i ; /**/ } A) 20 B)19 C)10 D) 9 8.要求以下程序的功能是计算:s= 1+1/2+1/3+……+1/10 main()

C语言循环结构小结

[C语言问题求解] 作者:苏丽媛 修订:李昕,高绍姝

1While循环 当要进行的操作相同,数据不同,但是这些数据可以形成某种序列时,考虑采用循环处理。 1.1while循环架构 while(条件) { 语句; } 1.2循环与选择结构的区别 循环是多次的(条件满足,进入循环,循环结束后返回,再次判断条件是否满足,不断循环,直到条件不满足,执行后继语句),选择结构仅仅是一次的(判断条件满足后执行,执行后结束,并开始执行后继语句) 1.3循环三要素 循环控制变量的初始化(初始化相当于设置了一个开始的值) 循环条件(条件相当于设置了一个结尾) 循环控制变量的改变(一定使之从开始到结尾的方向进行) 1.4例: #include #include int sum(int n) { int result=0; int i=1; ///i用来控制循环,称为循环控制变量//循环变量的初始化 while(i<=n) ///循环条件 { result = result + i; i++; ///即i=i+1//循环控制变量的改变 } return result; } int main() { int n; scanf("%d",&n); printf("%d\n",sum(n)); return 0; } 注:当循环结束后,循环控制变量的值是第一个不满足条件的值。 2for循环 2.1for循环结构 for(循环变量的初始化;循环的条件;循环的控制变量的改变) {

循环体; } for循环的小括号中,有且仅有两个分号,分割了循环的三要素。 for()后不能接分号,分号代表空语句,如果接了分号,意味着循环体不再属于循环,整个循环只循环了一条空语句。 循环的条件判断比循环控制变量的改变多一次(多的一次是条件不成立的第一个数)。 建议:知道循环次数采用for循环,反之,采用while循环。 循环中定义的控制变量属于局部变量,出了循环便不可用了,如果出了循环仍想使用该变量,就必须重新定义。 2.2例: #include int sum(int n) { int result=0; for(int i=1;i<=n;i++) { result = result + i; } return result; } int main() { int n; scanf("%d",&n); printf("%d\n",sum(n)); return 0; }

循环结构程序设计习题

1. 单项选择题BADCCA (1)for(i=1;i<9;i+=1);该循环共执行了次。 A. 7 B. 8 C. 9 D. 10 (2)int a=2;while(a=0) a--;该循环共执行了次。 A. 0 B. 1 C. 2 D. 3 (4)以下for语句中,书写错误的是。 A. for(i=1;i<5;i++); B. i=1;for(;i<5;i++); C. for(i=1;i<5;) i++; D. for(i=1,i<5,i++); (5) 语句,在循环条件初次判断为假,还会执行一次循环体。 A. for B. while C. do-while D. 以上都不是 (6)循环结构的特点是。 A. 从上至下,逐个执行 B. 根据判断条件,执行其中一个分支 C. 满足条件时反复执行循环体 D. 以上都对 (10)下列程序段执行后s 的值为。 int i=1, s=0; while(i++) if(!(i%3)) break ; else s+=i ; A. 2 B. 3 C. 6 D. 以上均不是 int i=3, s=0; while(i--) PRINTF; 2. 填空题 (3)循环体执行遇到continue 语句时。 (5)输入N个实数,输出其中的最大值、最小值。 #include

void main( ) { float no1,nmax,nmin; scanf("%d",&n); scanf("%f",&no1); nmax=no1; for(i=2;i<=n;i++) { scanf("%f", &nol ); if(nol>nmax) nmax=nox; } printf("MAX=%f MIN=%f\n",nmax,nmin); } (6)输入若干个字符,分别统计数字字符的个数、英文字母的个数,当输入换行符时输出统计结果,运行结束。 #include void main( ) { char ch; while(( )!='\n') { if(ch>='0'&&ch<='9') s1++; if(ch>='a'&&ch<='z' || ) s2++; } } 3. 阅读下列程序,写出程序运行的输出结果 循环(1)8,5,2 (2)1024 (3)3 1 -1 (4)8 (5)2468 (1) void main( )

循环结构程序设计练习题--内含答案概要

第三单元循环结构练习题 选择题:(有答案) 1、有以下程序执行后的输出结果是()。 main( ) { int i,s=0; for(i=1;i<10;i+=2) s+=i+1; printf("%d\n",s);} A.自然数1~9的累加和 B.自然数1~10的累加和 C.自然数1~9中的奇数之和 D.自然数1~10中的偶数之和 2、以下关于for语句的说法不正确的是()。 A. for循环只能用于循环次数已经确定的情况 B. for循环是先判断表达式,后执行循环体语句 C. for循环中,可以用break跳出循环体 D. for循环体语句中,可以保含多条语句,但要用花括号括起来 3、若i和k都是int类型变量,有以下for语句 for(i=0,k=-1;k=1;k++) printf("*****\n"); 下面关于语句执行情况的叙述中正确的是()。 A.循环体执行两次 B.循环体执行一次 C.循环体一次也不执行 D.构成无限循环 4、若运行以下程序时,输入2473↙,则程序的运行结果是:() main ( ) { int c; while ((c=getchar( )) ! =’\n’) switch (c-‘2’) { case 0 : case 1 : putchar (c+4) ; case 2 : putchar (c+4) ; break ; case 3 : putchar (c+3) ; default : putchar (c+2) ; break ; } printf(“\n”); } A)668977 B)668966 C)66778777 D)6688766 5、以下for循环的执行次数是:()。 for (x=0,y=0; (y=123) && (x<4) ; x++) ; A)无限循环 B)循环次数不定 C)4次 D)3次 6、已知 int t=0; while(t=1){...} 则以下叙述正确的是()。 A)循环控制表达式的值为0 B)循环控制表达式的值为1 C)循环控制表达式不合法 D)以上说法都不对 7、设有以下程序段() int x=0,s=0; while(!x!=0)s+=++x; printf("%d",s); 则 A)运行程序段后输出0 B)运行程序段后输出1 C)程序段中的控制表达式是非法的 D)程序段执行无限次 8、设i,j,k均为int型变量,则执行完下面的for语句后,k的值为()。for(i=0, j=10; i<=j; i++, j- -)k=i+j; A.6 B.9 C.10 D.11 9、C语言中,break; 语句可以用于循环语句和( )语句中。 A.if B.switch C.for D.while 10、for(i=0; i<=15; i++) printf("%d", i ); 循环结束后,i 的值为()。 A.14 B.15 C.16 D.17

相关主题