内容正文:
7.循环使用(讲义)-《C语言程序设计》专题复习讲练测
[考纲要求]
(1)掌握continue语句和break语句的使用和区别。
(2)掌握循环的嵌套。
[课时安排]
2课时
[知识梳理]
(1)循环嵌套的概念:一个循环的循环体中又包含另一个循环,成为循环嵌套。这个嵌套重复下去,就是多重循环,也称为嵌套循环。
(2)break语句:break语句可以用在switch语句中跳出结构,同时也可以用于循环结构中,使程序提前跳出循环,结束循环,转移到循环后面的语句。
(3)continue语句:程序跳过循环体中该语句后面的所有语句,提前结束本轮循环,直接进入下一轮循环。
(4)break和continue的区别:continue是结束本轮循环而不是结束整个循环;break是结束整个循环。
[真题练讲]
一、概念理解
1.(2016 年重庆市普通高校招生高职对口类统一考试)在 C语言中,cuntinue 语不能用于()
A.if语句
B.for 语句
C.while 语句
D.do - while 语句
答案:
A
解析:
continue语句的作用是使程序跳过循环体中该语句后面的所有语句,提前结束本轮循环,直接进入下一轮循环。if语句没有涉及循环,因此continue不能用于if语句。
二、程序分析
1.(2022年江苏省职教高考)阅读下列序,请将运行结果填写在答题卡上相应位置。
#include <stdio.h>
int main()
{
int i,j,s;
char c='A';
printf("This is:
");
for (i=1;i<=4;i++)
{
for (s=1;s<=8-i;s++)
printf(" "); // 空格
for (j=1;j<=i;j++)
{
printf("%c",c);
c=c+1;
}
printf("
");
}
printf("c=%-8d
",c-'A');
return 0;
}
答案:
This is:
A
BC
DEF
GHIJ
c=10
解析:
本题重点考查两层for循环的嵌套。
外层for循环,从i=1开始,在i>4时停止,且在本层打印回车,那么此for循环打印内容一共四行。
内层两个for循环,第一个for循环功能为打印8-i个空格,第二个for循环功能为打印i个char c ,同时使c=c+1 (如 ‘A’+1 = ‘B’,ASCII码相关内容)。
本题中的for循环连在一起用,可实现右对齐在第N行打印N个连续的大写字母的功能。
printf("c=%-8d
",c-'A'); 考查输出格式控制符,%-8d 为位宽为8位左对齐十进制整数输出。
2.(2017 年江苏跨地区职业学校单招二轮联考)阅读下列程序,将运行结果填写在答题处。
#include <stdio.h>
void main()
{
int i,j,k,s1,s2,s3;
s1=s2=0;
s3=1;
for(j=1;j<=4;j++,s1+=j+2)
{
s1++;
k=1;
do{s2+=2;k++;}
while (k++<=j);
for(i=2;i<=k;i++)
s3= s3 +i;
}
printf("s1=%d,s2=%d,s3=%d",s1,s2,s3);
}
答案:
s1=26,s2=16,s3=61
解析:
首先看到题目问题,要求运行结果,定位到打印语句: printf("s1=%d,s2=%d,s3=%d",s1,s2,s3); ,此处可知需要求取s1,s2,s3的值。
计算s1:
在语句for(j=1;j<=4;j++,s1+=j+2)中可知,外层for循环共循环4次,每次执行s1++ 和s1+=j+2,那么四次循环结果分别为(需要注意的是执行顺序为:s1++ 、j++、s1+=j+2):
第一次:s1=s1+1=0+1=1 s1+=j+2=1+2+2=5
第二次:s1=s1+1=5+1=6 s1+=j+2=6+3+2=11
第三次:s1=s1+1=11+1=12 s1+=j+2=12+4+2=18
第四次:s1=s1+1=18+1=19 s1+=j+2=19+5+2=26
计算s2:
语句可简化为
s2=0
for(j=1;j<=4;j++)
{
k=1; //每次循环k 每次重置为1
do{
s2+=2;k++; //s2 自加 2 k++
}while (k++<=j); //当k++>j时停止循环
}
所以s2+=2 语句共循环1+2+2