大工20秋《c&c 语言程序设计》辅导资料六
C/C++语言程序设计辅导资料六一、主题:循环结构二、学习时间:2020年11月2日-11月8日“不忘初心、牢记使命”主题理论学习:
我们党要始终成为时代先锋、民族脊梁,始终成为马克思主义执政党,自身必须始终过硬。全党要更加自觉地坚定党性原则,勇于直面问题,敢于刮骨疗毒,消除一切损害党的先进性和纯洁性的因素,清除一切侵蚀党的健康肌体的病毒,不断增强党的政治领导力、思想引领力、群众组织力、社会号召力,确保我们党永葆旺盛生命力和强大战斗力。
摘选自《决胜全面建成小康社会,夺取新时代中国特色社会主义伟大胜利》三、知识脉络:
第5章 循环结构
5.0 导学
5.1 循环语句
5.2 循环条件
5.3 循环嵌套
5.4 循环中的跳转
5.5 综合案例分析四、学习要求:
理解循环结构及分类
了解常用循环语句
掌握while语句基本语法
掌握do-while语句基本语法
掌握for语句基本语法
了解流程图的画法
掌握计数器控制循环的方法
理解标记控制循环的方法
理解嵌套循环
理解内层循环及外层循环执行顺序
掌握嵌套结构的的设计方法
掌握break语句基本用法
理解continue语句的基本用法
了解goto语句
理解各种循环语句的特点
掌握用循环语句构造穷举算法
掌握用循环语句构造迭代算法五、重点难点:
while语句
do-while语句
for 语句
计数器控制循环
标记控制循环
循环嵌套
循环中的跳转
穷举法
迭代法
六、主要内容:
1.循环的概念
为解决某一问题,或求取某一计算结果,特定的条件下,程序中反复按某一模式进行操作。2.循环语句
循环语句是控制程序执行循环结构的语句,特定的条件下,程序中反复按某一模式进行操作。
while
do-while
for
while语句
语句形式
while( 表达式 )
{
循环体 ;
}
执行流程
在循环结构外设置条件变量
测试循环条件,若其值为假则执行步骤(6);
执行循环体中的语句;
更新条件变量的值;
重复(2)~(4)步骤
结束循环
do-while语句
语句形式
do
{
循环体 ;
} while( 表达式 );
执行流程
在循环结构外设置条件变量
执行循环体中的语句;
更新条件变量的值;
测试循环条件,若其值为假则执行步骤(6);
重复(2)~(4)步骤
结束循环
for语句
语句形式
for ( 表达式1; 表达式2 ; 表达式3)
{ 循环体 ; }
执行流程
求解表达式1;
求解表达式2;
若其值为逻辑真,则执行循环体中的语句;若其值为假则结束循环,转到第(6)步;
求解表达式3;
重复执行步骤(2)和(3)中的操作;
循环结束,执行for语句后的语句。3.循环条件
为合理使用循环结构实现算法,必须正确设计循环条件。以避免死循环发生!
一般循环条件表达式的值由某个变量控制,根据控制变量的性质,循环分为两类:
计数器控制循环 (counter)
标记控制循环(flag)
若能知道循环将执行的确切次数,就使用计数器控制循环。
执行次数不确定的循环可采用标记控制循环。4.循环嵌套
结构化程序由顺序、选择和循环结构组成,三种基本可以按堆栈和嵌套的形式构成任何算法。
循环嵌套:一个循环体中又包含另一个完整的循环结构。内嵌的循环中还可以嵌套循环。
各种循环语句都可以嵌套:while、do-while和for三种循环语句可分别构成嵌套结构。
三种循环语句可相互嵌套:在while循环、do-while循环和for循环体内,包含上述任一循环结构。
设计嵌套的循环要点
合理设计和安排各个循环的嵌套关系,在保证逻辑正确性;
循环嵌套不能交叉,即在一个循环体内必须完整的包含着另一个循环嵌套的循;
内层和外层循环控制变量不应同名!
最好采用右缩进格式书写。5.循环中的跳转
跳转语句可用于控制程序的转移,在选择结构和循环结构中协助改变程序执行的流程。
break语句
continue语句
goto语句
break语句:常用于提前从循环推出或跳出switch结构。无条件地结束switch、while、do while或for循环结构,转向执行该结构的后续语句。
continue语句:continue语句用来跳过循环的一部分,继续执行下一轮循环操作。它并不跳出整个循环结构,而是跳过循环体中剩余的语句,结束本轮循环。
continue语句只用在循环体中,常与 if 条件语句一起使用,用来加速循环。
包含continue的循环结构,代码的可读性不好,可以用其他形式代替该跳转语句。
goto语句:goto语句一般为无条件跳转语句,程序直接跳转到标号所指示的语句。
使用跳转能力强的goto语句可以直接从内层循环中直接跳到外层循环后。
goto不利于结构化编程,应尽量少使用 !七、习题:
1.设有程序段
int k=10;
while(k=0)k=k-1;
这下面描述中正确的是_________.
A.while循环执行10次
B.循环是无限循环
C.循环体语句一此也不执行
D.循环体语句执行一次
答案:C2.对于 for( 表达式1; ;表达式3) 可理解为__________。
A.or( 表达式1;0;表达式3)
B.for( 表达式1;1;表达式3)
C.for( 表达式1;表达式1;表达式3)
D.for( 表达式1;表达式3;表达式3)
答案:B3.C语言中, 下列说法正确的是_________。
A.不能用do-while语句构成循环
B.do-while语句构成循环必须用break语句才能退出
C.do-while语句构成循环,当while语句中的表达式为非零时结束循环
D.do-while语句构成循环,当while语句中的表达式为零时结束循环
答案:D4.执行for(x = 0, y = 0; (y != 123) && (x < 4); x ++); 的结果为________。
A.无限循环
B.循环次数不定
C.执行4次
D.执行3次
答案:C5.以下while循环中,循环体执行的次数是__________。
k=1;
while( - - k) k = 10;
A.执行10次
B.执行无限次
C.一次也不执行
D.执行1次
答案:C6.有以下程序段,其中x 为整形变量
int x = -1;
do
{
;
} while(x++);
printf("x = %d",x);
以下正确的是____________。
A.该循环没有循环体,程序错误
B.输出 x = 1
C.输出 x = 0
D.输出 x = -1
答案:B7.以下程序的输出结果是________。
x = -1;
do
{
x = x * x
} while( !x );
A.死循环
B.循环执行2次
C.循环执行一次
D.有语法错误
答案:C8.下面程序的执行结果是__________。
#include<stdio.h>
void main()
{
int i = 1;
switch(i)
{
case 0: i ++;
case 1:
case 2: i ++;
case 3: i ++; break;
default: i ++;
}
printf(“%d\n”,i);
}
A.2
B.3
C.4
D.5
答案:B9.下面程序的执行结果是__________。
#include<stdio.h>
void main()
{
int j, x;
for( j = 1, x = 1; j <= 50; j ++)
{
if(x >= 10)
{
break;
}
if(x % 2 == 1)
{
x += 2;
continue;
}
}
printf(“%d\n”,j);
}
A.1
B.2
C.5
D.6
答案:D10.下面程序的执行结果是__________。
#include<stdio.h>
void main()
{
int i;
for( i = 0; i < 5; i ++)
{
if( i % 2)
{
printf("*");
}
else
continue;
printf("#");
}
printf("$\n");
}
A.*#*#*#$
B.#*#*#*$
C.*#*#$
D.#*#*$
答案:C11.下面程序的执行结果是__________。
#include<stdio.h>
void main()
{
int y = 10;
do
y - -;
while(y--);
printf(" %d \n" , y--);
}
A.程序错误
B.死循环
C.-1
D.0
答案:B12.下面程序的执行结果是__________。
#include<stdio.h>
void main()
{
int x = 3, y = 6, a = 0;
while(x ++ != ( y -= 1))
{
a += 1;
if( y < x ) break;
}
printf(" x = %d, y = %d, a = %d \n", x, y, a);
}
A.x = 4, y = 4, a = 1
B.x = 5, y = 4, a = 3
C.x = 5; y = 4; a = 3
D.x = 5, y = 4, a = 1
答案:D13.下面程序段的运行结果是__________.
int n=0;
while(n++<=2);
printf("%d",n);
A.2
B.3
C.4
D.有语法错
答案:C14.以下程序段________.
x=-1;
do{
x=x*x;
} while(!x);
A.是死循环
B.循环执行二次
C.循环执行一次
D.有语法错误
答案:C15.下面程序的运行结果是______.
#include<stdio.h>
main()
{
int y=10;
do
{
y--;
} while(--y);
printf("%d\n", y--);
}
A.-1
B.1
C.8
D.0
答案:D16.若i为整型变量,则以下循环执行次数是_____.
for(i=2; i==0;)
printf("%d", i- -);
A.无限次
B.0次
C.1次
D.2次
答案:B17.执行语句for(i=1;i++<4; );后变量i的值是______.
A.3
B.4
C.5
D.不定
答案:C18.以下正确的描述是_______.
A.continue语句的作用是结束整个循环的执行
B.只能在循环体内和switch语句体内使用break语句
C.在循环体内使用break语句或continue语句的作用相同
D.从多层循环嵌套中退出时,只能使用goto语句
答案:B19.下列程序的输出结果是: .
void main()
{ int i;
for(i=1;i<10;i++)
{
if(i%5==0)break;
printf("%d ",i);
}
printf("end\n");
}
A. end
B.1 2 3 4 5 end
C.1 2 3 4 5
D.1 2 3 4 end
答案:D20.下列程序的输出结果是: .
void main()
{
int i;
for(i=1;i<10;i++)
{
if(i%5==0)continue;
printf("%d ",i);
}
printf("end\n");
}
A.1 2 3 4 end
B.5 6 7 8 end
C.1 2 3 4 6 7 8 9 end
D.end
答案:C21.下列程序的输出结果是: 。
void main()
{
int i=5;
do{
switch(I % 2)
{
case 0: i--;break;
case 1: i--;continue;
}
if(i==3)break;
printf("%d ",i);
}while(i>0);
printf("end\n");
}
A.0 end
B.1 end
C.end
D.3end
答案:C22.“百鸡问题”:鸡公一,值钱伍;鸡母一,值钱三;鸡雏三,值钱一。凡百钱买鸡百只,问鸡公、母、雏各几何?思路一:int cocks,hens,chicken;for (cocks=1; cocks<100; ++cocks)for (hens=1; hens<100; ++hens)for (chicken=3; chicken<100; chicken+=3){ if( 5*cocks+3*hens+ chicken/3==100 /*百钱*/ && cocks+hens+ chicken==100 ) /*百鸡*/ printf("cocks=%d,hens=%d,chicken=%d\n",
cocks, hens, chicken); }思路二: int cocks,hens,chicken;for (cocks=1; cocks<20; ++cocks)for (hens=1; hens<33; ++hens) { if (5*iCocks+3*iHens+ iChicken/3-100)continue; if (iCocks+iHens+iChicken-100) continue; printf("cocks=%d,hens=%d,chicken=%d\n", cocks, hens, chicken); }
本内容由易百教育整理发布
网址www.openhelp100.com
QQ 515224986
页:
[1]