第4章_循环结构
- 格式:ppt
- 大小:545.00 KB
- 文档页数:56


第4章循环结构【练习 4-1】在例 4-1 程序中,如果对 item 赋初值 0,运行结果是什么?为什么?如果将精度改为 10-3,运行结果有变化吗?为什么?解答:如果对 item 赋初值 0,则程序运行结果是 pi=0,因为 item 为 0 时不满足 while 循环的执行条件,即不执行循环,故 pi 值为 0。
如果将精度改为10-3,运行结果会有变化,因为精度改变意味着 while 循环的条件改变,精度变大使得 while 循环次数减少,必然影响到π的值。
【练习 4-2】运行例 4-2 程序时,如果将最后一个输入数据改为-2,运行结果有变化吗?如果第一个输入数据是 -1,运行结果是什么?为什么?解答:如果将最后一个输入数据改为-2,运行结果没有变化,因为最后一个负数是一结束标志,不进行统计,故任意一个负数都可以。
如果第一个输入数据是-1,运行结果是:Grade averageis 0,因为第一个输入就是-1,则 while 循环条件不成立,不执行循环体。
【练习 4-3】序列求和(1-1/4+1/7-1/10+1/13-1/16+…):输入一个正实数 eps,计算序列1-1/4+1/7-1/10+1/13-1/16+…的值,精确到最后一项的绝对值小于eps(保留6位小数)。
试编写相应程序。
解答:#include <stdio.h>#include <math.h>int main(void){int denominator, flag;double item, s,eps;printf(“Input eps:”);scanf(“%lf”,&eps);flag = 1;denominator = 1 ;item = 1.0;s = 0;while(fabs (item) >= eps) {item = flag * 1.0 / denominator;s = s + item;flag = -flag;denominator = denominator +3;}printf ( “s = %f\n”, s);return 0;}【练习 4-4】如果将例 4-3 程序中的 do-while 语句改为下列 while 语句,会影响程序的功能吗?为什么?再增加一条什么语句,就可以实现同样的功能?while(number != 0){number = number / 10;count ++;}解答:会有影响,因为当输入数据 number 为 0 时,上述 while 循环将不执行,count 值仍为 0,故输出为 0,不符合题目要求。
第4章循环结构(一)、是非题1. C语言中,do-while语句构成的循环只能用break语句退出。
A.对B.错2.在循环外的语句不受循环的控制,在循环内的语句也不受循环的控制。
A.对B.错3.从语法角度看,for(表达式1;表达式2;表达式3)语句中的3个表达式均可省略。
A.对B.错4.for、while和do while循环结构的循环体均为紧接其后的第一个语句(含复合语句)。
A.对B.错5.由i=-1;while(i<10) i+=2;i++;可知,此while循环的循环体执行次数为6次。
A.对B.错6.循环for( ; ; )的循环条件始终为真。
A.对B.错7.do…while语句的循环体至少执行1次,while和for循环的循环体可能一次也不执行。
A.对B.错8.break;语句执行时退出本层循环,continue;语句结束本次循环。
A.对B.错9.for循环、while循环和do while循环结构之间可以相互转化。
A.对B.错10.break;语句执行时退出到包含该break;语句的所有循环外。
A.对B.错11.二重循环for(i=0;i<5;i+=2) for(j=0;j<5;j++)的循环体的执行次数为15。
A.对B.错12.执行i=-1; while(i<10) i+=2;i++; 后,i的值为11。
A.对B.错13.int i=1;while(1) i++; 则在任何条件下,该循环语句都会执行无穷多次A.对B.错14.while和do…while的功能完全相同。
A.对B.错15.while后的表达式只能是逻辑或关系表达式。
A.对B.错16.语句while(E);中的表达式E等价于E!=0。
A.对B.错17.只能在循环体内和switch语句体内使用break语句。
A.对B.错18.程序段 int k=10; while(k=0)k=k-1; 中,while循环执行10次。