内容正文:
编写说明:山东省春季高考《软件与应用技术类考纲百套卷》,依据山东省《软件与应用技术类专业知识考试标准》编写。每门课程均分三层训练:基础层(具象化支架)拆解考点为微目标,紧扣考纲 “掌握”“理解” 要求编写考点训练卷;巩固层(关联性支架)强化知识交叉与场景关联,按考纲专题编专题训练卷;应用层(引导性支架)聚焦真题突破,结合知识模块与教材编写课程综合卷。
本试卷是第7卷,按《C语言程序设计》范围和要求编写。具体内容为:
掌握for循环和循环嵌套的用法。
理解break语句和continue语句的用法。
山东省《软件与应用技术类考纲百套卷》 第7卷
《C语言程序设计》
for循环及break语句和continue语句 考点训练卷
考试时间60分钟 满分100分
班级 姓名 学号 成绩
一、选择题(本大题共20小题,每题3分,共60分)
1.以下关于 C 语言 for 循环执行流程的描述中,正确的是( )
A. 先执行初始化表达式,再判断循环条件,条件为真时执行循环体,最后执行增量表达式
B. 先执行循环体,再判断循环条件,条件为真时执行初始化表达式,最后执行增量表达式
C. 先执行增量表达式,再判断循环条件,条件为真时执行循环体,最后执行初始化表达式
D. 先判断循环条件,条件为真时执行初始化表达式,再执行循环体,最后执行增量表达式
2.以下 for 循环的语法格式中,正确的是( )
A. for (i=0,i<10,i++) printf ("% d",i);
B. for (i=0;i<10;i++) printf ("% d",i);
C. for (i=0;i<10) printf ("% d",i);
D. for (i=0;;i++) printf ("% d",i);
3.执行以下程序段后,输出结果是( )
int i;
for(i=1;i<=5;i++) {
if(i==3) break;
printf("%d",i);
}
A. 123 B. 12345 C. 12 D. 345
4.执行以下程序段后,输出结果是( )
int i;
for(i=1;i<=5;i++) {
if(i==3) continue;
printf("%d",i);
}
A. 1245 B. 12345 C. 12 D. 345
5.以下二重循环的执行次数是( )
int i,j;
for(i=1;i<=3;i++)
for(j=1;j<=4;j++)
printf("*");
A. 7 次 B. 12 次 C. 3 次 D. 4 次
6.以下 for 循环与 while 循环等价的是( )
for(i=1;i<=10;i++) sum+=i;
A. i=1; while(i<=10) sum+=i;
B. i=1; while(i<=10) {sum+=i; i++;}
C. while(i<=10) {i=1; sum+=i; i++;}
D. i=1; while(i<10) {sum+=i; i++;}
7.执行以下程序段后,i 的值是( )
int i;
for(i=0;i<5;i++);
A. 5 B. 4 C. 0 D. 6
8.以下关于多重循环中 break 语句的描述中,正确的是( )
A. break 语句可以跳出所有层循环
B. break 语句只能跳出所在的那一层循环
C. break 语句可以跳出 switch 语句和所有层循环
D. break 语句不能用于多重循环中
9.以下关于多重循环中 continue 语句的描述中,正确的是( )
A. continue 语句可以跳过所有层循环的本次循环
B. continue 语句只能跳过所在的那一层循环的本次循环
C. continue 语句可以结束整个多重循环
D. continue 语句不能用于多重循环中
10.以下 for 循环中,会产生死循环的是( )
A. for(;;) printf("*");
B. for(i=0;i<10;i++) printf("*");
C. for(i=10;i>0;i--) printf("*");
D. for(i=0;i==10;i++) printf("*");
11.执行以下程序段后,输出结果是( )
int i;
for(i=10;i>0;i-=2)
printf("%d",i);
A. 108642 B. 1086420 C. 246810 D. 0246810
12.执行以下程序段后,sum 的值是( )
int i,sum=0;
for(i=1;i<=10;i+=2)
sum+=i;
A. 10 B. 20 C. 25 D. 55
13.以下程序段中,不会产生死循环的是( )
A. int i=0; for(;i<10;i--);
B. int i=0; for(;i=10;i++);
C. int i=0; for(;i<=10;i++);
D. int i=0; for(;;i++);
14.以下关于 break 和 continue 语句的区别描述中,正确的是( )
A. break 和 continue 都能结束整个循环
B. break 结束本次循环,continue 结束整个循环
C. break 和 continue 都只能用于循环语句中
D. break 结束整个循环,continue 结束本次循环
15.执行以下程序段后,输出结果是( )
int i,j;
for(i=1;i<=3;i++) {
for(j=1;j<=3;j++) {
printf("%d",i*j);
}
}
A. 123246369 B. 111222333 C. 123456789 D. 321642963
16.以下 do-while 循环与 for 循环等价的是( )
int i=1,sum=0;
do {
sum+=i;
i++;
} while(i<=10);
A. for(int i=1,sum=0;i<=10;i++) sum+=i;
B. for(i=1,sum=0;i<=10;i++,sum+=i);
C. for(i=1,sum=0;i<=10;sum+=i,i++);
D. for(i=1,sum=0;;i++) {sum+=i; if(i>10) break;}
17.以下关于跳转语句的描述中,正确的是( )
A. break 语句只能用于循环语句中
B. continue 语句可以用于 switch 语句中
C. break 和 continue 都可以用于 switch 语句中
D. break 语句可以用于循环语句和 switch 语句中,continue 语句只能用于循环语句中
18.以下关于 for 循环表达式的描述中,正确的是( )
A. 初始化表达式不能省略
B. 循环条件表达式不能省略
C. 增量表达式不能省略
D. 循环条件表达式省略时默认为真
19.执行以下程序段后,输出结果是( )
int i,j;
for(i=1;i<=3;i++) {
for(j=1;j<=3;j++) {
if(j==2) continue;
printf("%d%d ",i,j);
}
}
A. 11 12 13 21 22 23 31 32 33
B. 12 22 32
C. 11 13 21 23 31 33
D. 11 21 31 13 23 33
20.执行以下程序段后,输出结果是( )
int i,j;
for(i=1;i<=3;i++) {
for(j=1;j<=3;j++) {
if(i*j>4) break;
printf("%d ",i*j);
}
}
A. 1 2 3 2 4 3
B. 1 2 3 2 4
C. 1 2 3 2 4 3 6
D. 1 2 3 2 4 6
二、简答题(本大题共2小题,每题10分,共20分)
1.阅读以下 C 语言程序,写出程序运行后的完整输出结果______
#include <stdio.h>
int main()
{
int i,j;
for(i=1;i<=4;i++) {
for(j=1;j<=i;j++) {
printf("*");
}
printf("
");
}
return 0;
}
2.阅读以下 C 语言程序,写出程序运行后的完整输出结果______
#include <stdio.h>
int main()
{
int i,sum=0;
for(i=1;i<=20;i++) {
if(i%3==0 && i%5==0) {
sum+=i;
printf("%d ",i);
}
}
printf("
sum=%d
",sum);
return 0;
}
三、案例分析题(本大题共1小题,每题10分,共10分)
1.以下程序的功能是:输出 1 到 100 之间的所有素数(素数是指只能被 1 和它本身整除的大于 1 的整数)。请在程序的下划线处填入正确的内容,使程序完整并能正确运行。
#include <stdio.h>
#include <math.h>
int main()
{
int i,j,flag;
for(i=2;i<=100;____1____) {
flag=1;
for(j=2;j<=sqrt(i);____2____) {
if(i%j==0) {
flag=0;
____3____;
}
}
if(____4____) {
printf("%d ",i);
}
}
return 0;
}
四、综合应用题(本大题共1小题,每题10分,共10分)
1.编写一个 C 语言程序,实现以下功能:
输入一个正整数 n
使用 for 循环计算 1 到 n 之间所有偶数的和
输出计算结果
检查输入数据的合法性(n 必须为正整数)
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
学科网(北京)股份有限公司
学科网(北京)股份有限公司
学科网(北京)股份有限公司
$
编写说明:山东省春季高考《软件与应用技术类考纲百套卷》,依据山东省《软件与应用技术类专业知识考试标准》编写。每门课程均分三层训练:基础层(具象化支架)拆解考点为微目标,紧扣考纲 “掌握”“理解” 要求编写考点训练卷;巩固层(关联性支架)强化知识交叉与场景关联,按考纲专题编专题训练卷;应用层(引导性支架)聚焦真题突破,结合知识模块与教材编写课程综合卷。
本试卷是第7卷,按《C语言程序设计》范围和要求编写。具体内容为:
掌握for循环和循环嵌套的用法。
理解break语句和continue语句的用法。
山东省《软件与应用技术类考纲百套卷》 第7卷
《C语言程序设计》
for循环及break语句和continue语句 考点训练卷
考试时间60分钟 满分100分
班级 姓名 学号 成绩
一、选择题(本大题共20小题,每题3分,共60分)
1.以下关于 C 语言 for 循环执行流程的描述中,正确的是( )
A. 先执行初始化表达式,再判断循环条件,条件为真时执行循环体,最后执行增量表达式
B. 先执行循环体,再判断循环条件,条件为真时执行初始化表达式,最后执行增量表达式
C. 先执行增量表达式,再判断循环条件,条件为真时执行循环体,最后执行初始化表达式
D. 先判断循环条件,条件为真时执行初始化表达式,再执行循环体,最后执行增量表达式
【答案】A
【解析】for 循环的标准执行流程是:初始化表达式→循环条件判断→循环体→增量表达式→循环条件判断,如此循环。
2.以下 for 循环的语法格式中,正确的是( )
A. for (i=0,i<10,i++) printf ("% d",i);
B. for (i=0;i<10;i++) printf ("% d",i);
C. for (i=0;i<10) printf ("% d",i);
D. for (i=0;;i++) printf ("% d",i);
【答案】B
【解析】for 循环的三个表达式之间必须用分号分隔,A 用了逗号错误;C 缺少增量表达式错误;D 虽然语法合法,但会产生死循环,不是标准正确格式。
3.执行以下程序段后,输出结果是( )
int i;
for(i=1;i<=5;i++) {
if(i==3) break;
printf("%d",i);
}
A. 123 B. 12345 C. 12 D. 345
【答案】C
【解析】break 语句的作用是跳出整个循环。当 i=3 时执行 break,循环立即结束,因此只输出 1 和 2。
4.执行以下程序段后,输出结果是( )
int i;
for(i=1;i<=5;i++) {
if(i==3) continue;
printf("%d",i);
}
A. 1245 B. 12345 C. 12 D. 345
【答案】A
【解析】continue 语句的作用是跳过本次循环剩余的语句,直接进入下一次循环。当 i=3 时跳过 printf,因此输出 1、2、4、5。
5.以下二重循环的执行次数是( )
int i,j;
for(i=1;i<=3;i++)
for(j=1;j<=4;j++)
printf("*");
A. 7 次 B. 12 次 C. 3 次 D. 4 次
【答案】B
【解析】外层循环执行 3 次(i=1,2,3),每次外层循环内层循环执行 4 次(j=1,2,3,4),总执行次数为 3×4=12 次。
6.以下 for 循环与 while 循环等价的是( )
for(i=1;i<=10;i++) sum+=i;
A. i=1; while(i<=10) sum+=i;
B. i=1; while(i<=10) {sum+=i; i++;}
C. while(i<=10) {i=1; sum+=i; i++;}
D. i=1; while(i<10) {sum+=i; i++;}
【答案】B
【解析】for 循环的三个表达式可以转换为:初始化表达式放在 while 前,循环条件不变,增量表达式放在循环体末尾。
7.执行以下程序段后,i 的值是( )
int i;
for(i=0;i<5;i++);
A. 5 B. 4 C. 0 D. 6
【答案】A
【解析】for 循环后面的分号表示空循环体,循环正常执行。i 从 0 开始,每次自增 1,当 i=5 时条件 i<5 不成立,循环结束,i 的值为 5。
8.以下关于多重循环中 break 语句的描述中,正确的是( )
A. break 语句可以跳出所有层循环
B. break 语句只能跳出所在的那一层循环
C. break 语句可以跳出 switch 语句和所有层循环
D. break 语句不能用于多重循环中
【答案】B
【解析】break 语句只能跳出它所在的那一层循环或 switch 语句,不能直接跳出多层循环。
9.以下关于多重循环中 continue 语句的描述中,正确的是( )
A. continue 语句可以跳过所有层循环的本次循环
B. continue 语句只能跳过所在的那一层循环的本次循环
C. continue 语句可以结束整个多重循环
D. continue 语句不能用于多重循环中
【答案】B
【解析】continue 语句只能跳过它所在的那一层循环的本次循环剩余语句,直接进入该层的下一次循环判断。
10.以下 for 循环中,会产生死循环的是( )
A. for(;;) printf("*");
B. for(i=0;i<10;i++) printf("*");
C. for(i=10;i>0;i--) printf("*");
D. for(i=0;i==10;i++) printf("*");
【答案】A
【解析】for 循环的三个表达式都可以省略,当循环条件表达式省略时,默认为真,因此 for (;;) 是死循环。D 选项中初始 i=0,条件 i==10 为假,循环体一次都不执行。
11.执行以下程序段后,输出结果是( )
int i;
for(i=10;i>0;i-=2)
printf("%d",i);
A. 108642 B. 1086420 C. 246810 D. 0246810
【答案】A
【解析】i 从 10 开始,每次减 2,依次输出 10、8、6、4、2,当 i=0 时条件 i>0 不成立,循环结束。
12.执行以下程序段后,sum 的值是( )
int i,sum=0;
for(i=1;i<=10;i+=2)
sum+=i;
A. 10 B. 20 C. 25 D. 55
【答案】C
【解析】i 依次取 1、3、5、7、9,sum 累加这些值:1+3+5+7+9=25。
13.以下程序段中,不会产生死循环的是( )
A. int i=0; for(;i<10;i--);
B. int i=0; for(;i=10;i++);
C. int i=0; for(;i<=10;i++);
D. int i=0; for(;;i++);
【答案】C
【解析】A 选项 i 永远小于 10,死循环;B 选项 i=10 是赋值表达式,值为真,死循环;D 选项条件永远为真,死循环;C 选项 i 从 0 到 10,循环正常结束。
14.以下关于 break 和 continue 语句的区别描述中,正确的是( )
A. break 和 continue 都能结束整个循环
B. break 结束本次循环,continue 结束整个循环
C. break 和 continue 都只能用于循环语句中
D. break 结束整个循环,continue 结束本次循环
【答案】D
【解析】break 语句跳出整个循环,continue 语句只跳过本次循环剩余语句,进入下一次循环。break 还可以用于 switch 语句,continue 只能用于循环语句。
15.执行以下程序段后,输出结果是( )
int i,j;
for(i=1;i<=3;i++) {
for(j=1;j<=3;j++) {
printf("%d",i*j);
}
}
A. 123246369 B. 111222333 C. 123456789 D. 321642963
【答案】A
【解析】外层循环 i=1 时,内层 j=1,2,3,输出 1×1=1、1×2=2、1×3=3;i=2 时输出 2、4、6;i=3 时输出 3、6、9,总输出为 123246369。
16.以下 do-while 循环与 for 循环等价的是( )
int i=1,sum=0;
do {
sum+=i;
i++;
} while(i<=10);
A. for(int i=1,sum=0;i<=10;i++) sum+=i;
B. for(i=1,sum=0;i<=10;i++,sum+=i);
C. for(i=1,sum=0;i<=10;sum+=i,i++);
D. for(i=1,sum=0;;i++) {sum+=i; if(i>10) break;}
【答案】D
【解析】do-while 循环先执行一次循环体再判断条件,等价于 for 循环中先执行循环体,再判断条件,不满足时 break。A、B、C 都是先判断条件再执行循环体,与 do-while 不等价。
17.以下关于跳转语句的描述中,正确的是( )
A. break 语句只能用于循环语句中
B. continue 语句可以用于 switch 语句中
C. break 和 continue 都可以用于 switch 语句中
D. break 语句可以用于循环语句和 switch 语句中,continue 语句只能用于循环语句中
【答案】D
【解析】break 语句用于跳出循环或 switch 结构;continue 语句只能用于循环语句中,不能用于 switch 语句。
18.以下关于 for 循环表达式的描述中,正确的是( )
A. 初始化表达式不能省略
B. 循环条件表达式不能省略
C. 增量表达式不能省略
D. 循环条件表达式省略时默认为真
【答案】D
【解析】for 循环的三个表达式都可以省略。初始化表达式省略时不执行初始化;循环条件表达式省略时默认为真;增量表达式省略时不执行增量操作。
19.执行以下程序段后,输出结果是( )
int i,j;
for(i=1;i<=3;i++) {
for(j=1;j<=3;j++) {
if(j==2) continue;
printf("%d%d ",i,j);
}
}
A. 11 12 13 21 22 23 31 32 33
B. 12 22 32
C. 11 13 21 23 31 33
D. 11 21 31 13 23 33
【答案】C
【解析】内层循环中当 j=2 时执行 continue,跳过 printf。因此 i=1 时输出 11、13;i=2 时输出 21、23;i=3 时输出 31、33。
20.执行以下程序段后,输出结果是( )
int i,j;
for(i=1;i<=3;i++) {
for(j=1;j<=3;j++) {
if(i*j>4) break;
printf("%d ",i*j);
}
}
A. 1 2 3 2 4 3
B. 1 2 3 2 4
C. 1 2 3 2 4 3 6
D. 1 2 3 2 4 6
【答案】A
【解析】考察多重循环中 break 的作用(仅跳出内层循环)。i=1 时输出 1 2 3;i=2 时 j=3 触发 break,输出 2 4;i=3 时 j=2 触发 break,输出 3。最终输出 "1 2 3 2 4 3"。
二、简答题(本大题共2小题,每题10分,共20分)
1.阅读以下 C 语言程序,写出程序运行后的完整输出结果______
#include <stdio.h>
int main()
{
int i,j;
for(i=1;i<=4;i++) {
for(j=1;j<=i;j++) {
printf("*");
}
printf("
");
}
return 0;
}
【答案】
*
**
***
****
2.阅读以下 C 语言程序,写出程序运行后的完整输出结果______
#include <stdio.h>
int main()
{
int i,sum=0;
for(i=1;i<=20;i++) {
if(i%3==0 && i%5==0) {
sum+=i;
printf("%d ",i);
}
}
printf("
sum=%d
",sum);
return 0;
}
【答案】
15
sum=15
三、案例分析题(本大题共1小题,每题10分,共10分)
1.以下程序的功能是:输出 1 到 100 之间的所有素数(素数是指只能被 1 和它本身整除的大于 1 的整数)。请在程序的下划线处填入正确的内容,使程序完整并能正确运行。
#include <stdio.h>
#include <math.h>
int main()
{
int i,j,flag;
for(i=2;i<=100;____1____) {
flag=1;
for(j=2;j<=sqrt(i);____2____) {
if(i%j==0) {
flag=0;
____3____;
}
}
if(____4____) {
printf("%d ",i);
}
}
return 0;
}
【答案】
1.i++(或i=i+1、i+=1)
2.j++(或j=j+1、j+=1)
3.break
4.flag==1(或flag)
四、综合应用题(本大题共1小题,每题10分,共10分)
1.编写一个 C 语言程序,实现以下功能:
输入一个正整数 n
使用 for 循环计算 1 到 n 之间所有偶数的和
输出计算结果
检查输入数据的合法性(n 必须为正整数)
【答案】
#include <stdio.h>
int main()
{
int n,i,sum=0;
printf("请输入一个正整数:");
scanf("%d", &n);
// 检查输入合法性
if(n<=0) {
printf("输入错误!请输入正整数。
");
return 1;
}
// 计算1到n的偶数和
for(i=2;i<=n;i+=2) {
sum+=i;
}
printf("1到%d之间所有偶数的和为:%d
", n, sum);
return 0;
}
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
学科网(北京)股份有限公司
学科网(北京)股份有限公司
学科网(北京)股份有限公司
$