资源预览内容
第1页 / 共36页
第2页 / 共36页
第3页 / 共36页
第4页 / 共36页
第5页 / 共36页
第6页 / 共36页
第7页 / 共36页
第8页 / 共36页
第9页 / 共36页
第10页 / 共36页
亲,该文档总共36页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
第五章 循环结构程序设计,5.1 学习要求 5.2 内容要点 5.3 典型例题及解答,5.1 学 习 要 求 一、基本内容 (1) for循环结构。 (2) while和do-while循环结构。 (3) continue语句和break语句。 (4) 循环的嵌套。 二、学习要求 重点掌握循环结构的概念及不同实现方法。掌握while语句、do-while语句、for语句。掌握循环语句的嵌套、break语句、continue语句。,5.2 内 容 要 点 一、while语句 用while语句实现“当型”循环,其一般形式如下: while (表达式) 语句 当表达式值为非0时,while执行语句中的内嵌语句。 特点:先判断表达式,后执行语句。,二、do-while语句 do-while循环用来实现“直到型”循环结构,其一般形式为: do 语句 while(表达式); 特点:先执行语句,后判断表达式。 三、for语句 for语句的一般形式为: for(表达式1;表达式2;表达式3)语句 在C语言中,for循环是最灵活的循环语句,完全可以取代while语句。,for循环的执行过程为: 第1步:先求解表达式1。 第2步:求解表达式2。若其值为真(非0),则执行for语句中指定的内嵌语句,然后执行第3步;若其值为假,则结束循环,转到第5步。 第3步:求解表达式3。 第4步:转回上面第2步继续执行。 第5步:执行for语句下面的一个语句。,四、break语句和continue语句 (1) break语句用于循环结构和switch结构,用来实现提前终止循环或从switch结构中跳出。 (2) continue语句的作用为提前结束本次循环,进行下一次循环条件的判断。 (3) break语句和continue语句的区别。,5.3 典型例题及解答 一、选择题 (1) 以下程序的输出结果是_。 main( ) int num= 0; while(num=2) num+; printf(“%dn”,num); ,(2) 有以下程序 main( ) int s=0,a=1,n; scanf(“%d”, 若要使程序的输出值为2,则应该从键盘给n输入的值是_。 A) -1 B) -3 C) -5 D) 0 解答:B) 若要使s的值为2,则循环体应执行2次。,(3) 有以下程序段 int n=0,p; do scanf(“%d”, 此处do-while循环的结束条件是_。 A) p的值不等于12345并且n的值小于3 B) p的值等于12345并且n的值大于等于3 C) p的值不等于12345或者n的值小于3 D) p的值等于12345或者n的值大于等于3 解答:D),(4) 有以下程序段 int k=0; while(k=1) k+; while循环执行的次数是_。 A) 无限次 B) 有语法错,不能执行 C) 1次也不执行 D) 执行1次 解答:A) 注意,k=1是一个赋值表达式。,(5) 以下程序中,while循环的循环次数是_。 main( ) int i=0; while(i10) if(i1) continue; if(i=5) break; i+; A) 1 B) 10 C) 6 D) 死循环,不能确定次数 解答:D) 注意:在第一次执行循环体时,循环体中的第一个if 语句的条件表达式的值就为真。,(6) 有以下程序段 int x=3; do printf(“%d”,x -=2); while (!(-x); 其输出结果是_。 A) 1 B) 30 C) 1-2 D) 死循环 解答:C) 循环体共执行2次,在第一次循环结束时,x的值为0。,(7) 有以下程序 main( ) int i=0,s=0; do if(i%2) i+;continue; i+;s+=i; while(i7); printf(“%dn”,s); 执行后,输出结果是_。 A) 16 B) 12 C) 28 D) 21 解答:A) s中是17间的奇数之和。,A) 21 B) 32 C) 33 D) 11 解答:B) while循环共循环2次,第1次循环后i的值为11,第2次循环后i的值为21,所以a的值为32。,(9) 以下程序执行后,sum的值是_。 main( ) int i,sum; for(i=1;i6;i+) sum+=i; printf(“%dn”,sum); A) 15 B) 14 C) 不确定 D) 0 解答:C) 没有对sum赋初始值。,(10) 若有如下程序段,其中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; 解答:B),(11) 以下程序的输出结果是_。 main( ) int a, b; for(a=1,b=1;a=10) break; if (b%3=1) b+=3;continue; printf(“%dn”,a); A) 101 B) 6 C) 5 D) 4 解答:D) for循环共循环3次,第1次循环后b的值为4,a的值为2;第2次循环后i的值为7,a的值为3;第3次循环后b的值为11,a的值为4。,(12) 要求以下程序的功能是计算函数:s= 1+1/2+1/3+1/10 main( ) int n; float s; s=1.0; for(n=10;n1;n-) s=s+1/n; printf(“%6.4fn”,s); 程序运行后,输出结果错误,导致错误结果的程序行是_。 A) s=1.0; B) for(n=10;n1;n-) C) s=s+1/n; D) printf(“%6.4fn”,s); 解答:C) 注意:因n为整型变量,则表达式1/n的值为0。,(13) 以下程序的功能是:按顺序读入10名学生4门课程的成绩,计算出每位学生的平均分并输出。程序如下:,上述程序运行后的结果不正确,调试中发现有一条语句在程序中的位置不正确。这条语句是_。 A) sum=0.0; B) sum+=score; C) ave=sum/4.0; D) printf(“NO%d:%fn”,n,ave); 解答:A) 应放在第1层循环内。,A) 31 B) 13 C) 10 D) 20 解答:A) a=(3+5)+(3+5)+(2+3+5)+5=31,二、填空题 (1) 有以下程序: #include main( ) char c; while(c=getchar( )!=?) putchar(-c); 程序运行时,如果从键盘输入:Y?N?,则输出结果为_。 解答:X,(2) 设有以下程序: main( ) int n1,n2; scanf(“%d”, 程序运行后,如果从键盘上输入1298,则输出结果为_。 解答:8921 while循环实现了对输入数据的由个位到十位,直到最高位的逐位输出。,(4) 以下程序的输出结果是_。 main( ) int s,i; for(s=0,i=1;i3;i+,s+=i); printf(“%dn”,s); 解答:5 第1次循环后i的值为2,s的值为2;第2次循环后i的值为3,s的值为5。,(6) 若变量n中的值为24,则prnt函数共输出 【1】 行,最后一行有 【2】 个数。,解答:【1】5 【2】4 每输出5个数字则换行。,解答:13715,(8) 下面程序的功能是:计算110之间奇数之和及偶数之和。请填空。,解答:b=i+1 for循环的循环控制变量i每循环一次加2,其值代表了110之间的偶数;变量b用来存放奇数。 (9) 下面程序的功能是:输出100以内能被3整除且个位数为6的所有整数。请填空。,解答:【1】i10 【2】i%3!=0 注意:【1】变量i代表整数的十位数的取值;【2】如果不能被3整除,则继续寻找。 (10) 下面程序的功能是:将字符数组a中下标值为偶数的元素从小到大排列,其他元素不变。请填空。,解答:【1】j+=2 【2】aiaj 注意:【1】需排序的数组元素的下标值为偶数;【2】如果当前数组元素ai大于被比较的数组元素aj,则交换其值。,
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号