第4章 循环结构(答案)
![第4章 循环结构(答案)](https://img.360docs.net/imgce/067f6hg5bpzy34rg86as-e1.webp)
![第4章 循环结构(答案)](https://img.360docs.net/imgce/067f6hg5bpzy34rg86as-d2.webp)
第4章循环结构
一、选择题
1、有以下程序段
int k=0;
while(k=1)k++;
while 循环执行的次数是( A)
A) 无限次B) 有语法错,不能执行
C) 一次也不执行D) 执行1次
2、t为int类型,进入下面的循环之前,t的值为0
while( t=1)
{ …… }
则以下叙述中正确的是( B)
A) 循环控制表达式的值为0
B) 循环控制表达式的值为1
C) 循环控制表达式不合法
D) 以上说法都不对
3、在C程序中,与while(m)中表达式m完全等价的是(B )
A) m==0 B) m!=0 C) m==1 D) m!=1
4、有以下程序,程序运行后的输出结果是(C )。
main()
{int i=1,sum=0;
while(i<=4)
{
sum=sum+i;
i=i+1;
}
printf(“%d\n”,sum);}
A)4 B)5 C)10 D)死循环
5、有以下程序,程序运行后的输出结果是(D )。
main()
{ int i=1,sum=0;
while(i<=4)
sum=sum+i;
i=i+1;
printf(“%d\n”,sum);
}
A)4 B)5 C)10 D)死循环
6、有如下程序
main(){
int n=9;
while(n>6){n--;printf(“%d”,n);}
}
该程序段的输出结果是(B)
A) 987 B) 876 C) 8765 D) 9876
7、以下程序的输出结果是( B )
main()
{ int num= 0;
while(num<=2)
{ num++; printf(“%d\n”,num);}
}
A) 1 B) 1 C)1 D) l
2 2 2
3 3
4
8、有以下程序,若运行时输入3.6 2.4<回车>,则输出的结果是( B)。main()
{float x,y,z;
scanf(“%f%f”,&x,&y);
z=x/y;
while(1){
if(fabs(z)>1.0)
{
x=y;
y=z;
z=x/y;}
else
break;}
printf(“%f\n”,y);}
A)1.500000 B)1.600000 C)2.000000 D)2.400000
9、执行以下程序段时
x=-1;
do
{ x=x*x; }
while(! x);
则下面描述正确的是(A )
A) 循环体将执行一次B) 循环体将执行两次
C) 循环体将执行无限次D) 系统将提示有语法错误
10、有以下程序段其输出结果是(C )
int x=3;
do
{ printf("%d",x-=2); }
while (!(--x));
A) 1 B) 3 0 C) 1 -2D) 死循环
11、有如下程序
main(){
int x=23;
do
{
printf(“%d”,x);
x--;
}while(!x);
}
该程序的执行结果是(B )
A) 321 B) 23 C) 不输出任何内容D) 陷入死循环
12、有以下程序段
int n=0,p;
do{scanf(“%d”,&p);n++;}while(p!=12345 &&n<3);
此处do—while循环的结束条件是( D)
A) P的值不等于12345并且n的值小于3
B) P的值等于12345并且n的值大于等于3
C) P的值不等于12345或者n的值小于3
D) P的值等于12345或者n的值大于等于3
13、以下不构成无限循环的语句或语句组是(A)
A) n=0;
do {++n;}while(n<0);
B) n=0;
while(1){n++;}
C) n=10;
while(n);{n--;}
D) for(n=0,i=1; ;i++)n+=i;
14、若i为整型变量,则以下循环执行的次数是(B)
for(i=2;i= =0;) printf(“%d”,i--);
A)无限次B)0次C)1次D)2次
15、执行语句for(i=1;i++<4;)后,变量i的值是(C)
A) 3 B) 4 C) 5 D) 不定
16、有以下程序
main()
{
int y=9 ;
for( ; y>0 ; y--)
if(y%3==0 ) printf("%d" , --y) ;
}
程序的运行结果是(C)
A) 741 B)963 C)852 D)875421
17、以下程序执行后sum的值是( C)
A)15 B)14 C) 不确定D)0
main()
{ int i , sum;
for(i=1;i<6;i++) sum+=i;
printf(“%d\n”,sum);
}
18、有如下程序
{ int i,sum=0;
for(i=1;i<=3;sum++) sum+=i;
printf(“%d\n”,sum);
}
该程序的执行结果是(C)
A) 6 B) 3 C) 死循环D) 0
19、执行语句for(i=3;i>0;i--);i--;后,变量i的值是(C )
A)0 B)10 C)-1 D)1
20、执行下面程序片段的结果是(A )。
int x;
for(x=3;x<6;x++)
printf((x%2)?(“**%d”):(”##%d\n”),x);
A)**3##4 B)##3
**5 **4##5
C)##3**4 D)**3##4
**5 ##5
21、有以下程序,执行后输出的结果是(A )。
main()
{ int i;
for(i=0;i<3;i++)
switch(i)
{ case 1: printf("%d",i);
case 2: printf("%d",i);
default: printf("%d",i);
}
}
A) 011122 B) 012 C) 012020 D) 120
22、有以下程序,程序运行后的输出结果是(B )。
main()
{ int k=4,n=0;
for( ; n { n++; if(n%3!=0) continue; k--; } printf("%d,%d\n",k,n); } A)1,1 B)2,2 C)3,3 D)4,4 23、设变量已正确定义,则以下能正确计算f = n!的程序段是(A) A) f=0 ; for(i=1;i<=n;i++) f*=i; B) f=1; for(i=1;i for(i=n;i>1;i++) f*=i; D) f=1; for(i=n;i>=2;i--) f*=i; 24、执行下面程序片段的结果是(B)。main() {int a,b; for(a=1,b=1;a<=100;a++) { if(b>=20) break; if(b%3= =1) { b+=3;continue; } b-=5; } printf(“%d\n”,a); } A)7 B)8 C)9 D)10 25、以下程序的输出结果是( B)。main() { int i=0,a=0; while(i<20) { for(;;) { if((i%10)==0) break; else i--; } i+=11; a+=i; } printf("%d\n",a); } A) 21 B) 32 C) 33 D) 11 26、以下程序的输出结果是(A ) main() { int i,j,x=0; for(i=1;i<2;i++) { x++; for(j=0;j<=3;j++ ) { if(j%2) continue; x++;} x++;} printf(“x=%d\n”,x);} A)x=4 B) x=8 C) x=6 D)x=12 27、有以下程序 main() { int i,j; for(i=3;i>=1;i--) { for(j=1;j<=2;j++) printf("%d",i+j); printf("\n ") ; } } 程序的运行结果是(D) A) 2 3 4 B)4 3 2 C)2 3 D)4 5 3 4 5 5 4 3 3 4 3 4 4 5 2 3 28、有以下程序 main() { int i=5; do { if(i%3==1) if(i%5==2) { printf("*%d",i); break; } i++; } while(i!=0); printf("\n"); } 程序的运行结果是(A) A) *7 B)*3*5 C)*5 D)*2*6 29、以下程序的结果是(A) main() { int n; for(n=1; ; ) {if(++n%2==0) continue; if(++n%3==0) break; } printf("n=%d",n); } A)n=6 B)n=5 C)n=4 D)死循环 30、以下叙述中正确的是(C) A)break语句只能用于switch语句题中 B)continue语句的作用是:使程序的执行流程跳出包含它的所有循环 C)break 语句只能用在循环体内和switch语句体内 D)在循环体内使用break语句和continue语句的作用相同 二、程序阅读题(共10题) 1、以下程序运行后的输出结果是52 。 main() { int i=10, j=0; do { j=j+i; i--; }while(i>2); printf(“%d\n”,j); } 2、设有以下程序: main() { int n1,n2; scanf(“%d”,&n2); while(n2!=0) { n1=n2%10; n2=n2/10; printf(“%d”,n1); } } 程序运行后,如果从键盘上输入1298;则输出结果为8921 。 3、以下程序的输出结果是5。 main() {int s,i; for(s=0,i=1;i<3;i++,s+=i); printf("%d\n",s); } 4、阅读下面程序,程序的结果是2,1,0 。 main() {int i=7; for(i=2;i>0;i--) printf(”%d,”,i); printf(”%d”,i);} 5、阅读下面程序,程序的结果是14,4。 main() { int i,j,m=0; for(i=2;i<=10;i+=4) for(j=3;j<=4;j++) {m++;i++;} printf("%d,%d",i,m);} 6、阅读下面程序,程序的结果是1978。 main() long s=0,t=0; for(j=0;j t=t*10+a; s=t; for(j=1;j {t=t/10; s=s-t;} printf(”%d”,s); } 7、以下程序运行后的输出结果是0918273645 main() { char c1,c2; for(c1='0',c2='9';c1 printf("%c%c",c1,c2); printf("\n"); } 8、以下程序的输出结果是 5 。 main() { int s,i; for(s=0,i=1;i<3;i++,s+=i); printf("%d\n",s); } 9、执行以下程序后,输出'#'号的个数是 6 。 main() { int i,j; for(i=1; i<5; i++) for(j=2; j<=i; j++) putchar('#'); } 10、以下程序的输出结果是x=4 main() { int i,j,x=0; for(i=1;i<2;i++) { x++; for(j=0;j<=3;j++ ) { if(j%2) continue; x++;} x++;} printf(“x=%d\n”,x);} 三、程序填空题 1、以下程序的功能是计算:m=1-2+3-4+…+9-10,并输出结果。请填空。main( ) scanf(“%d”,&n); for(i=1; i<=n; i++) { m+=i*f; f= -f ; } printf(“m=%d”,m) } 2、以下程序的功能是计算s=1+1/2!+1/3 !+1/4 !+…+1/n! ,请填空。main( ) { double s=0.0,fac=1.0; int i; int n; scanf(“%d”,&n); for(i=1,i<=n;i++) { fac=fac * 1.0/i ; s=s+fac; } printf(“s=%lf”,s); } 3、以下程序的功能是计算:s=1+12+123+1234+12345。请填空。 main() { int t=0,s=0,i; for( i=1; i<=5; i++) { t=i+ t*10 ; s=s+t; } printf("s=%d\n",s); } 4、要使以下程序段输出10个整数,请填入一个整数。 for(i=0;i<= 18 ;printf(“%d\n”,i+=2)); 5、以下函数的功能是:求x的y次方,请填空。 double fun( double x, int y) { int i; double z; for(i=1, z=x; i return z; } 6、以下程序的功能是根据以下近似公式求π值: (π*π)/6=1+1/(2*2)+1/(3*3)+..+1/(n*n) 现在请你在下面的函数中填空,完成求π的功能。 main(){ double s=0.0; long i,n; scanf(“%ld”,&n); for(i=1;i<=n;i++) s=s+ 1.0/(i*i) ; printf(“%lf”,sqrt(6*s)); 7、以下用来输出两整数M和N之间的所有素数(质数),请填空,使程序能正确运行。 #define M 4 #define N 30 main() { int i, j, k, s=0; for(i=M; i<= N ; i++) { for(j=2; j< i ; j++) if(i%j== 0 ) break; if(j>=i) { printf("%5d", i); s=s+1; if( s%5==0 ) printf("\n"); } } printf("\n");} 8、以下程序实现:从键盘输入一位整数,计算其各位数字之和。比如输入整数31421,则打印结果为11。请填空。 main(){ int i,sum=0,a; scanf("%d",&i); while(i>0){ a= i%10 ; sum+=a; i= i/10 ; } printf("%d\n",sum); } 9、以下程序实现:计算1~10之间(不含10)的奇数之和以及偶数之和 main() { int a,b,i; a=b=0; for(i=0;i<10;i+=2) { a= a+i ; b= b+i+1 ; } printf("偶数为:%d,奇数和为:%d\n",a,b); } 10、以下程序的功能是:输出100以内(不含100)能被3整除且个位数为6的所有整数,请填空。 main() int i,j; for(i=0; i<10 ;i++) { j=i*10+6; if( j%3==0 ) continue; printf(“%d ”,j); } } 四、编程题 1、写一个程序,程序的功能是:从键盘输入一个整数m,输出1到m(含m)能被7或11 整除的所有整数,并计算出这些数的个数。例如:如果m为50,则程序输出7、11、14、21、2 2、28、3 3、35、42、4 4、49共11个数。 2、计算100到1000间有多少个数其各位数字之和是5。 3、从键盘输入整数n,输出1+3+5+7+…前n项的和(输入的n<=10) 4、编写程序,实现如下图形 1 12 123 1234 12345 5、打印100-999以内所有满足条件的数。条件为,这个数等于其个位数,十位数,百位数立方和,如153=1*1*1+5*5*5+3*3*3 顺序结构、选择结构和循环结构的程序设计典型例题分析与解答 1 在三种选择结构中,能用2个条件,控制从3个操作中选择一个操作执行的选择结构是______选择结构 【分析】能用1个条件,控制某个操作做或不做的选择结构是单分支结构;能用1个条件,控制从2个操作中选择一个操作执行的选择结构是双分支结构;能用n(n>l)个条件,控制从n+ l个操作中选择一个操作执行的选择结构是多分支结构。【答案】多分支 2 在三种循环结构中,先执行循环操作内容(即循环体),后判断控制循环条件的循环结构是______循环结构。 【分析】当型循环结构是先判断控制循环的条件,条件成立,执行循环体;条件不成立,则退出循环体。次数型循环结构也是先判断是否达到循环次数,没有达到循环次数,执行循环体;达到循环次数的,退出循环。只有直到型循环结构才是先执行循环体,然后再判断控制循环的条件,如果条件成立,进行循环;条件不成立,退出循环。 【答案】直到型 3 使用“getchar( )”函数时,程序的开头必须写一条包含命令为____________。 【分析】凡是使用系统函数的程序,都要在程序的开头写一条包含命令,包含命令中的“头函数.h”是一个文件,其中有关于该系统函数的定义。系统函数“getchar( )”是在名为“stdio.h(标准输入输出函数)”的头函数文件中定义的。【答案】#include"stdio.h"或#include<stdio.h> 4 执行输入语句“scanf("x=%c,y=%d",&x,&y);”,要使字符型变量X的值为'A'、整型变量y的值为12,则从键盘上正确的输入是( ) ①'A'/②A/③x=A/ ④x=A,y=12/ 12/ 12/ y=12/ 说明:备选答案中的"/"表示回车换行键 【分析】输入语句的格式控制符串中的“x=”、“,”、“y=”都是非格式控制符, 在输入时必须原样位置输人,所以只有备选答案④才符合这个要求。【答案】④ 5 设有下列程序段,则执行该程序段后的输出是( ) int i=012; float f=1.234E-2; printf("i=%-5df=%5.3f",i,f); ... ①i=__012f=1.234 ②i=10___f=0.012 ③10___O.012 ④___100.012 注:答案中的_代表一个空格。 【分析】输出语句的格式控制符串中的“i=”、“f=”都是非格式控制符,在输出时必须原样,原位置输出,所以只有备选答案①和②才符合这个要求;格式控制符“%-5d”的格式控制是数据左对齐、宽度为5的整型数据,备选答案①中的数据是右对齐的;此外,该答案中的实数“1.234E-2”应该代表“0.01234”,而不是“1.234”。只有备选答案②符合题意。【答案】② 6 在Turbo C的主屏幕中,将当前编辑的源程序以原名存盘,可以选用___________菜单项,也可以直热键________。 【分析】如果选用“File/Save”菜单项,或者使用热键(f12),当前编辑的源程序将以原来的文件名存盘;如果选用“File /Write to”,当前编辑的源程序将以新的文件名存盘。 【答案】File/Save F2 7 下列各种选择结构的问题中,最适合用if-else语句来解决的是( ) ①控制单个操作做或不做的问题 ②控制两个操作中选取一个操作执行的问题 ③控制三个操作中选取一个操作执行的问题 ④控制10个操作中选取一个操作执行的问题 【分析】if-else语句是专门解决“双分支结构”的,而“双分支结构”的问题就是用单个条件控制从两个操作中选取一个操作来执行的问题。 【答案】② 8 下列程序是输入一个小写字母,转换成对应大写字母的后一个字母输出。例如:'a'将转换成’B’、…、‘y’将转换成’Z’,其中的’Z’将转换成’A’。请填写程序中所缺少的语句。 main() {char ch ; scanf(”%c”,&ch〕; ch=ch- 32+1; ___________________; printf("%c\n",ch); } 【分析】分析程序库中的“ch=ch- 32+ 1;”语句,可知是将字符型变量 ch中的小写字母转换成对应的大写字母(- 32)的后一个字母(+ l)。如果ch中的字母是' a'、' b'、··,'y',转换结果都不会出错,但是,如果 ch中的字母是'Z',则-32后是大写字母'Z',再+l后将不是大写字母了。为了使其转换成'A',需要用一个单分支结构来实现:如果ch的值等于'Z'+ l,则硬性将 ch的值改成'A'。完成这个任务的语句是一条单分支语句,正是所缺少的语句。 【答案】 if (ch=='Z'+l) h='A'; 9不能正确计算下列分段函数的程序段是_________ |-1 x<0 y=|0 x=0 x>0 ① switch(x< 0)② if(x> 0) {case1:y=-1;break; y=1; case 0:switch(x==0)else {casel:y=0;break;if(x==0) case 0: y= l;y=0 } else } &ny=-l ③ y= l;④ y= l; if(x==0)if(x<0) y=0; y =-l; else else y=- l; if(x== 0) y=0; 【分析】先来分析备选答案①:表达式“x<0”的值只有两种可能性,成立值为1、不成立值为on如果“x<0”的值为 1(即 x< 0),则执行“easel:”后的语句“y=-l”后,退出 switch语句,符合分段函数要求。如果“x<0”的值为0(即x>=0),则执行“case 0:”后的switch语句。该switch语句的表达式是“x==0”,结果也有两种:成立为1、不成立为0.如果“x==0”的值为1(即x=0),则执行“case l:”后的语句“y=0”后,退出 switch语句,符合分段函数要求。如果“x==0”的值为0(即x>0),则执行“case 0:”后的语句“y=1”,也符合分段函数要求。再分析备选答案②:这是标准的用嵌套双分支结构来实现三分支的分段函数,结果显然是能求解分段函数的。分析备选答案③:双分支语句的条件是“x==0”,条件成立时,y值为0,符合分段函数的要求,条件不成立时(包含x>0和x<0两种情况),结果y值为-l,显然不符合分段函数的要求,所以本题要选该答案。至于备选答案④,是能正确计算分段函数的,首先置y为1;接着用双分支结构处理“x<0”和“x>=0”的两种情况:前者使得y值为一l;后者再执行一个单分支结构,如果“x==0”则使y值为0,否则不改变y值,保持y的原值1,符合分段函数的要求。 【答案】③ 10 三种循环语句都能解决循环次数已经确定的次数型循环,其中__________循环语句最适合。 【分析】当“for(表达式 1;表达式 2;表达式 3)语句;”中的表达式1为:整型变量 k=l;表达式 2为:整型变量 k<= n;表达式 3为:整型变量 k++;则这个 for循环就是次数为n次的标准次数型循环结构。 【答案】for 11执行下列程序段后的输出是() x=l; while(x<=3) x++,y=x+++x; printf("%d,%d",x,y); ① 6,10 ②5,8 ③4,6 ④3,4 【分析】我们可以使用逐步记录运行结果的方法来获得输出结果,记录如下: x=1; 进入循环,条件满足执行循环体:计算x+十得x为2,计算y=x+++x,得y为4、x为3; 继续循环,条件满足执行循环体:计算x+十得x为4,计算y=x+++x,得y为8、x为5; 继续循环,条件不满足退出循环; 输出x和y的值为5,8。 【答案】② 12 执行下列程序段,其中的do-while循环一共执行_次。 static int x; do x+=x*x; while (x); 【分析】对静态型变量,不赋初值也有值,对整型变量,其值为 0。执行循环语句 do-while 的循环体,x+=x* x是x=x+(x* 循环结构程序设计习题及答案 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 循环结构 1.教学目标 根据新课标的要求和学生的认知特点,确定本节课的教学目标。 (1)知识与技能 学生能理解循环结构概念;把握循环结构的三要素:循环的初始状态、循环体、循环的终止条件;能识别和理解循环结构的框图以及功能;能运用循环结构设计程序框图以解决简单的问题。 (2)过程与方法 通过由实例对循环结构的探究与应用过程,培养学生的观察类比,归纳抽象能力;参与运用算法思想解决问题的过程,逐步形成算法分析,算法设计,算法表示,程序编写到算法实现的程序化算法思想;培养学生严密精确的逻辑思维能力;掌握循环结构的一般意义及应用方法;培养由特殊到一般,再到特殊,及具体,抽象,具体的螺旋上升式的认识事物的能力并发现解决问题的方法。 (3)情感、态度与价值观 通过师生、生生互动的活动过程,培养学生主动探究、勇于发现的科学精神,提高数学学习的兴趣,体验成功的喜悦。 通过实例,培养学生发现、提出问题的意识,积极思考,分析类比,归纳提升,并能创造性地解决问题;感受和体会算法思想在解决具体问题中的意义,提高算法素养;经历体验发现、创造和运用的历程与乐趣,形成在继承中提高、发展,在思辩中观察、分析并认识客观事物的思维品质;体会数学中的算法与计算机技术建立联系的有效性和优势体现;培养学生的逻辑思维能力,形式化的表达能力,构造性解决问题的能力,培养学生程序化的思想意识,为学生的未来和个性发展及进一步学习做好准备。 2.教学重点、难点及关键点 (1)重点 循环结构的概念、功能、要素、框图及应用 (2)难点 描述和应用循环结构时,三要素的准确把握和正确表达(3)关键点 跟踪变量变化,理解程序的执行过程 第三单元循环结构练习题 选择题: 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 第4章循环结构 一、选择题 1、有以下程序段 int k=0; while(k=1)k++; while 循环执行的次数是( A) A) 无限次B) 有语法错,不能执行 C) 一次也不执行D) 执行1次 2、t为int类型,进入下面的循环之前,t的值为0 while( t=1) { …… } 则以下叙述中正确的是( B) A) 循环控制表达式的值为0 B) 循环控制表达式的值为1 C) 循环控制表达式不合法 D) 以上说法都不对 3、在C程序中,与while(m)中表达式m完全等价的是(B ) A) m==0 B) m!=0 C) m==1 D) m!=1 4、有以下程序,程序运行后的输出结果是(C )。 main() {int i=1,sum=0; while(i<=4) { sum=sum+i; i=i+1; } printf(“%d\n”,sum);} A)4 B)5 C)10 D)死循环 5、有以下程序,程序运行后的输出结果是(D )。 main() { int i=1,sum=0; while(i<=4) sum=sum+i; i=i+1; printf(“%d\n”,sum); } A)4 B)5 C)10 D)死循环 6、有如下程序 main(){ int n=9; while(n>6){n--;printf(“%d”,n);} } 该程序段的输出结果是(B) A) 987 B) 876 C) 8765 D) 9876 7、以下程序的输出结果是( B ) main() { int num= 0; while(num<=2) { num++; printf(“%d\n”,num);} } A) 1 B) 1 C)1 D) l 2 2 2 3 3 4 8、有以下程序,若运行时输入3.6 2.4<回车>,则输出的结果是( B)。main() {float x,y,z; scanf(“%f%f”,&x,&y); z=x/y; while(1){ if(fabs(z)>1.0) { x=y; y=z; z=x/y;} else break;} printf(“%f\n”,y);} A)1.500000 B)1.600000 C)2.000000 D)2.400000 9、执行以下程序段时 x=-1; do { x=x*x; } while(! x); 则下面描述正确的是(A ) A) 循环体将执行一次B) 循环体将执行两次 C) 循环体将执行无限次D) 系统将提示有语法错误 10、有以下程序段其输出结果是(C ) int x=3; do { printf("%d",x-=2); } while (!(--x)); A) 1 B) 3 0 C) 1 -2D) 死循环 11、有如下程序 main(){ int x=23; do { 《循环结构》教学设计 一、概述 《循环结构》是选自人民教育出版社,普通高中课程标准实验教科书数学A版必修3第一章,第一小节,课时安排6课时,本课为第4课时。通过本节课的学习,既是对算法概念的进一步巩固和深化,又为后面进一步学习基本算法语句打下坚实的基础,循环结构是程序框图的一种基本逻辑结构。通过模仿、操作、探索,学习设计循环结构程序框图,表达解决问题的过程,理解循环结构的意义,体会循环结构的作用,因此本节课在教材中起到了承上起下的作用。 二、学习目标分析 1、知识与技能 能理解循环结构概念;把握循环结构的三要素:循环的初始值、循环体、循环的终止条件;能识别和理解循环结构的框图以及功能。 2、过程与方法 通过由实例对循环结构的探究与应用过程,培养观察类比、归纳抽象能力、参与运用算法思想解决问题的过程。 3、情感、态度与价值观 通过师生、生生互动的活动过程,培养主动探究、勇于发现的科学精神,提高数学学习的兴趣,体验成功的喜悦。 三、学情分析 1.学生是高一学生,对多媒体大屏幕环境下的课堂环境非常熟悉; 2.学生在学习本课以前,已经学习了算法的概念、顺序结构、条件结构及简单的赋值问题。3.学生具备一定的自学能力,思维活跃,对程序框图与算法的基本逻辑结构这一课程兴趣很高; 4.高一学生形象思维、感性认识较强,理性思维、抽象认识能力还很薄弱,因此教学中宜选择学生熟悉的,易懂的实例引入。 四、教学策略的选择与设计 本节课主要采用“启发探究与合作探究相结合”教学方式,教师引导,学生得出结论,教师总结,纳入知识系统。主要体现在两部分: 1、循环结构的概念分析和框图的得出过程,主要为启发探究的教学方式完成。 2、对概念的深入理解及对引例的分析过程,主要由学生合作探究为主要方式完成。 Top 1.循环结构(while、do…while、for) 1. 循环结构(while、do…while、for) 1.1. 什么是循环结构 在日常生活中,会有很多需要反复执行的事情,比如:每一年的4个季节,每一周的7天,每日的3餐,打印机每份文档打印50份,一圈跑道400米跑3圈,都是在反复执行的。 再看软件系统中的需求: 问题1:输出100行语句,每行语句都一样,即: ?行动是成功的阶梯,行动越多,登得越高! ?行动是成功的阶梯,行动越多,登得越高! ?行动是成功的阶梯,行动越多,登得越高! … 问题2:输出100行语句,每行语句都类似,即: ?第1,行动是成功的阶梯,行动越多,登得越高! ?第2,行动是成功的阶梯,行动越多,登得越高! ?第3,行动是成功的阶梯,行动越多,登得越高! ?… ?第100,行动是成功的阶梯,行动越多,登得越高! 问题3:计算1到50乘以8.88的结果 ?1×8.88 =8.88 ? 2 ×8.88 =17.76 ? 3 ×8.88 =26.64 ? 4 ×8.88 =35.52 ?… ?50 ×8.88 =444 诸如此类问题都是在反复执行的,在软件系统中可以通过循环这种语法结构来解决。循环是程序设计语言中反复执行某些代码的一种计算机处理过程,是一组相同或相似语句被有规律的重复性执行。 对于循环来说,需要考虑两个要素,其一要素为循环体,也就是被反复执行的相同或相似的语句,其二要素为循环的条件,也就是循环得以继续执行下去的条件,常常以循环次数的方式体现。 常用的循环结构有:while、do-while、for。 1.2. while语句 1.2.1. while语句的执行逻辑 while语句是循环的一种常见语法结构,语法如下: 1.while(boolean表达式){ 语句块; 2.} 一、VB 基本知识及选择、循环结构习题 一、基本概念题 (1) 说明下列哪些是Visual Basic 合法的直接常量,并分别指出它们的类型。 %100 1E1 123D3 123,456 0100 “ASDF” “” #2004/10/7# 100# π &O78 &H123 True T -1123! # (2)下列数据哪些是变量,哪些是常量是什么类型的常量 Name “name” False ff “11/16/99” cj “120” n #11/12/2004# (3) 下列符号中,哪些可以是Visual Basic 的合法变量名 A123 a12_3 123_a a,123 a 123 Integer XYZ False Sin(x) 变量名 sinx π (4)把下列数学表达式写成Visual Basic 表达式: (1)5||z y x ++ (2)6)1(xy + (3)xy y x 310+ (4)a ac b b 242-+- (5)3211111r r r ++ (6)110ln 45sin 10++++y x e (5)写出下列表达式的值: (1)123 + 23 Mod 10 \ 7 + Asc("A") (2)Int * 100 + / 100 (3)#11/22/2004# - 10 (4)"ZXY" & 123 & "abc" (6)设a=7,b=3,c=4,求下列表达式的值: (1)a + 3 * c (2)a ^ 2 / 4 (3)a / 2 + 3 \ 2 (4)a Mod 3 + b ^ 3 / c \ 5 (7)写出下列函数的值: (1)Int (2)Fix (3)Sqr(Sqr(81)) (4)Len("Visual Basic 程序设计") (5)Int(Abs(99 - 100) / 2) (6)Sgn(7 * 3 + 2) (7)LCase("Hellow VB!") (8)Mid("Hellow VB!", 4, 3) (9)Left("Hellow VB!", 3) (10)Val("16个加23个") (11)Str (12)UCase("Visual Basic") 二、 选择题 (1)可以同时删除字符串前导和尾部空格的函数是 。 A. Ltrim B. Rtrim C. Trim D. Mid (2)函数Int(Rnd(1) * 10)是在哪个范围产生随机整数 。 A. (0,1) B. (0,9) C. (1,10) D. (1,9) (3)数学式子sin25o写成Visual Basic 表达式是 。 B. Sin(25) C. Sin(25o) D. Sin(25*180) (4)表达式16/4 – 2^3 * 8/4 Mod 5\2的值是 。 A. 14 B. 4 C. 20 D. 2 (5)数学关系式103<≤x 表示成正确的VB 表达式为 。 A. 3<= x <10 B. x >= 3 And x<10 C. x>=3 Or x<10 D. 3<= x And <10 循环结构程序设计习题及答案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 第四章循环结构 一、选择题 1.下列叙述正确的是( ) A.continue语句的作用是跳出循环体 B.while循环语句的循环体至少执行一次 C.do-while循环语句的循环体至少执行一次 D.switch语句中的每个case语句组必须含有break语句 2.if(表达式)和while(表达式)中的“表达式”( ) A.只能是逻辑的 B.只能是关系的 C.只能是算术的 D.以上三种都 可以 3.对循环结构正确的叙述是() A.do-while循环体可能被执行0次 B.do-while循环体至少被执行1次 C.while循环体不可能被执行0次 D.for循环体不可能被执行无限次 4.设int i=l, k=2;则错误 ..的循环语句是() A.for(i=0,k=-1;i++,k++); B.for(;k-1;i++); C.for(i=1,k=4;k--;i++); D.for(;k--;); 5.在循环体中用来强制继续循环的语句是() A.break B.continue C.exit D. return 6.下列程序段中循环体执行的次数是() int x=-1;do{x=x*x;}while(! x); A. 0 B. 1 C. 2 D. 无限 7.设int m=5;语句while (m==0)printf (″%d″,m-=2);的循环体执行的次数是() A. 0 B. 1 C. 2 D. 无限 8.语句for(a=0;a==0;a++);和语句for(a=0;a=0;a++);执行循环的次数分别是( ) A.0,0 B.0,1 C.1,0 D.1,1 9.执行下列程序段后x的值为() int i=1, j=10, x; for (; i<=j; i++, --j) x=i; A.5 B.6 C.7 D.8 10.以下程序的运行结果是( ) int x,y,z=1; for(x=1,y=-1;x 顺序结构、选择结构和循环结构的程序设计 请写出switch语句的一般格式及注意事项。 一般格式: Switch(表达式) {case常量表达式1:语句组1;break; Case常量表达式2:语句组2;break; …… Case常量表达式n:语句组n;break; Default:语句组n+1;}1switch中表达式可以是任意类型,常用的是字符或整型。2每个常量表达式的值不能相同。3语句组可以为任意语句。4break可以省略,然后执行完本组语句后紧接着执行其后的i+1组语句。5多个case可以用一组执行语句。6break的作用是跳出switch,执行switch下面的语句。 试说明while语句和do-while语句的异同:二者相同点在于都可以进行次数确定的循环体的次数。不同点在于do-while现执行循环中的语句,然后再判断条件是否为真,若为真则继续循环;若为假则终止循环。因此,do-while循环至少要执行一次循环语句。而while则是先判断条件后执行循环体简述for语句的执行过程及注意事项: 计算机表达式1 表达式2非0? 执行语句s 计算机表达式3 循环结束,执行下面的语句 注意事项:for语句中的3个表达式可以省略但后面的分号不能省略。 试说明continue语句和break语句的作用及区别:break的功能是跳出本层循环(对多层循环而言),接着执行下面的语句。continue语句的作用是执行continue时,循环体中continue下面的语句都不执行,重新进行循环判断以决定是否继续进行下次循环。Break和continue的区别在于:continue C 有一段程序为:while(表达式) 语句1;语句2; …… do-while语句中while 在C C C C C C语言中,语句x=!a==b 3个关于C语言的结论:可以用while语句实现的循环一定可以用for语句实现;可以用for语句实现的循环一定可以用while语句实现;可以用do-while C语言程序中,continue C语言中,if和switch C语言中,语句while C语言中,关于scanf C语言中,与语句while(!E C语言程序中,for循环语句中的表达式2为一非零常数且循环体内无break语句及goto 设i是int scanf(“i=%d,f=%f”,&i,&f);为了把100和765.12分别赋给i和 f 精心整理 第5章循环结构程序设计 5.1基本知识点 ?while语句的使用格式和注意事项 ?do-while语句的使用格式和注意事项 ?for语句的使用格式和注意事项 ?break和continue语句在循环语句中的应用 ? ? ? ? 1. C. A.do-while的循环体至少无条件执行一次 B.while的循环控制条件比do-while的循环控制条件严格 C.do-while允许从外部转到循环体内 D.do-while的循环体不能是复合语句 (5)以下程序段C。 intx=-1; do { x=x*x; } while(!x); A.是死循环 B.循环执行二次 C.循环执行一次 D.有语法错误 (6)下列语句段中不是死循环的是__C__。 A.i=100; while(1) { i=i%100+1; if(i==20)break; } B.for(i=1;;i++) sum=sum+1; C. C. COUT< main() { intnum=0; while(num<=2) { num++; cout< 循环结构 一.选择题 1.下面程序段 int k=2; while (k=0) {printf(“%d”,k);k--;} 则下面描述中正确的是。 A)while循环执行10次B)循环是无限循环 C)循环题语句一次也不执行D)循环体语句执行一次 2.以下程序段的循环次数是。 for (i=2; i==0; ) printf(“%d” , i--) ; A)无限次B)0次C)1次D)2次 4.下面程序的输出结果是。 main ( ) { char c=’A’; int k=0; do { switch (c++) { case ‘A’ : k++ ; break ; case ‘B’ : k-- ; case ‘C’ : k+=2 ; break ; case ‘D’ : k%=2 ; continue ; case ‘E’ : k*=10 ; break ; default : k/=3 ; } k++; } while (c<’G’) ; printf (“k=%d”,k) ; } A)k=3 B)k=4 C)k=2 D)k=0 5.下面程序的输出结果是。 main ( ) { int x=9; for (; x>0; x--) { if (x%3==0) { prin tf(“%d”,--x); continue ; } } } A)741 B)852 C)963 D)875421 6.以下不是死循环的程序段是。 A)int i=100; B)for ( ; ; ) ; while (1) { i=i%100+1 ; if (i>100) break ; } C)int k=0; D)int s=36; do { ++k; } while (k>=0); while (s) ; --s ; 7.下述程序段的运行结果是。 int a=1,b=2, c=3, t; while (a=’A’ && c<=’Z’) m++; if (c>=’a’ && c<=’z’) n++; } } A)c=getchar( ) B)getchar( ) C)c==getchar( ) D)sca nf(“%c”,&c) 9.下述语句执行后,变量k的值是。 int k=1; while (k++<10); A)10 B)11 C)9 D)无限循环,值不定 10.下面程序的输出结果是。 main ( ) { int k=0,m=0,i,j; for (i=0; i<2; i++) { for (j=0; j<3; j++) k++ ; k-=j ; } m = i+j ; printf(“k=%d,m=%d”,k,m) ; 作业3 循环结构学号姓名 1.有以下程序 main() { int y=10; while(y--); printf("y=%d\n",y); } 程序执行后的输出结果是B A)y=0 B)y=-1C)y=1 D)while构成无限循环2.有以下程序 main() { int k=5; while(--k) printf("%d",k-=3); printf("\n"); } 执行后的输出结果是A A)1 B)2 C)4 D)死循环 3.若变量已正确定义,有以下程序段 i=0; do printf("%d,",i); while(i++); printf("%d\n",i) 其输出结果是B A)0,0 B)0,1 C)1,1 D)程序进入无限循环4.有以下程序段D int n,t=1,s=0; scanf("%d",&n); do{ s=s+t; t=t-2; }while (t!=n); 为使此程序段不陷入死循环,从键盘输入的数据应该是 A)任意正奇数B)任意负偶数C)任意正偶数 D)任意负奇数 5.有以下程序 #include printf("%d, ",x--); continue; } printf("%d, ",--x); } } 程序的运行结果是D A)7,4,2 B)8,7,5,2 C)9,7,6,4 D)8,5,4,2 6.以下不构成无限循环的语句或者语句组是A A)n=0; B)n=0; do{++n;}while(n<=0); while(1){n++;} C)n=10; D)for(n=0,i=1; ;i++) n+=i; while(n); {n--;} 7.有以下程序 main( ) { int i,n=0; for(i=2;i<5;i++) { do { if(i%3) continue; n++; } while(!i); n++; } printf("n=%d\n",n); } 程序执行后的输出结果是D A)n=5 B)n=2 C)n=3 D)n=4 8.有以下程序 main() { int i,j,x=0; for(i=0;i<2;i++) { x++; for(j=0;j<=3;j++) { if(j%2) continue; x++; 高中数学教学案例 设计获奖汇编 循环结构 一、教学内容分析 (1)算法是高中数学课程中的新内容,算法的思想是非常重要的,算法思想已逐渐成为每个现代人所必须具备的数学素养。(2)本节课的内容是循环结构,它与顺序结构、条件分支结构是算法的三种基本逻辑结构,可以表示任何一个算法。并且循环结构是算法这一部分的重点和难点,它的重要性就是充分体现计算机的优势,也即能以极快的速度进行重复计算。 二、学生学习情况分析 学生已经学习了有关算法和框图的基础知识。绝大多数同学对算法和框图的学习有相当的兴趣和积极性。但在探究问题的能力,应用数学的意 识等方面发展不够均衡,尚有待加强。 三、设计思想 建构主义学习理论认为,建构就是认知结构的组建,其过程一般是引导学生从身边的、生活中的实际问题出发,发现问题,思考如何解决问题,进而联系所学的旧知识,首先明确问题的实质,然后总结出新知识的有关概念和规律,形成知识点,把知识点按照逻辑线索和内在联系,串成知识线,再由若干条知识线形成知识面,最后由知识面按照其内容、性质、作用、因果等关系组成综合的知识体。也就是以学生为主体,强调学生对知识的主动探索、主动发现以及学生对所学知识意义的主动建构。基于以上理论,本节课遵循引导发现,循序渐进的思路,采用问题探究式教学,运用多媒体,投影仪辅助,倡导“自主、合作、探究”的学习方式。具体流程如下: 创设情景(课前准备、引入实例)→授新设疑(自主探索形成概念→理解概念能识别框图)→质疑问难、论争辩难(进一步加深对概念的理解→突破难点)→沟通发展(反馈练习→归纳小结)→布置作业。 四、教学目标 理解循环结构,能识别和理解简单的框图的功能,通过模仿、操作、探索,学习设计程序框图表达,解决问题的过程,发展有条理的思考与表达的能力,提高逻辑思维能力;能运用循环结构设计程序框图解决简单的问题,感受和体会算法思想在解决具体问题中的意义,增强学生的创新能力和应用数学的意识。 第5章循环结构程序设计 练习题 1. 单项选择题 (1)语句while (!e);中的条件!e等价于 A 。 A. e==0 B. e!=1 C. e!=0 D. ~e (2)下面有关for循环的正确描述是 D 。 A. for循环只能用于循环次数已经确定的情况 B. for循环是先执行循环体语句,后判定表达式 C. 在for循环中,不能用break语句跳出循环体 D. for循环体语句中,可以包含多条语句,但要用花括号括起来 (3)C语言中 D 。 A. 不能使用do-while语句构成的循环 B. do-while语句构成的循环必须用break语句才能退出 C. do-while语句构成的循环,当while语句中的表达式值为非零时结束循环 D. do-while语句构成的循环,当while语句中的表达式值为零时结束循环 (4)C语言中while和do-while循环的主要区别是 A 。 A. do-while的循环体至少无条件执行一次 B. while的循环控制条件比do-while的循环控制条件严格 C. do-while允许从外部转到循环体内 D. do-while的循环体不能是复合语句 (5)以下程序段 C 。 int x=-1; do { x=x*x; } while (!x); A. 是死循环 B. 循环执行二次 C. 循环执行一次 D. 有语法错误 (6)下列语句段中不是死循环的是__C__。 第5章循环结构程序设计35 A. i=100; while (1) { i=i%100+1; if (i==20) break; } B.for (i=1;;i++) sum=sum+1; C.k=0; do { ++k; } while (k<=0); D.s=3379; while (s++%2+3%2) s++; (7)与以下程序段等价的是__A__。 while (a) { if (b) continue; c; } A. while (a) B. while (c) { if (!b) c; } { if (!b) break; c; } C. while (c) D. while (a) { if (b) c; } { if (b) break; c; } (8)以下程序的输出结果是_B___。 #include 顺序结构选择结构和循环结构的程序设计典型例题分析与解答
循环结构程序设计课后习题及答案
北师大版高中数学必修三循环结构教案(精品教学设计)
循环结构程序设计练习题 内含答案
C语言程序设计习题集第4章 循环结构(答案)
高中数学_循环结构教学设计学情分析教材分析课后反思
第四章。循环结构(while、do-while、for)
VB基本知识及选择、循环结构习题
循环结构程序设计课后习题及答案
第四章循环结构
顺序结构、选择结构和循环结构的程序设计
C语言循环结构测习题带答案
循环结构习题
循环结构(答案)
循环结构 教学案例
C语言循环结构练习题带答案