内容正文:
编写说明:山东省春季高考《软件与应用技术类考纲百套卷》,依据山东省《软件与应用技术类专业知识考试标准》编写。每门课程均分三层训练:基础层(具象化支架)拆解考点为微目标,紧扣考纲 “掌握”“理解” 要求编写考点训练卷;巩固层(关联性支架)强化知识交叉与场景关联,按考纲专题编专题训练卷;应用层(引导性支架)聚焦真题突破,结合知识模块与教材编写课程综合卷。
本试卷是第6卷,按《C语言程序设计》范围和要求编写。具体内容为:
掌握while循环、do…while循环
山东省《软件与应用技术类考纲百套卷》 第6卷
《C语言程序设计》
while循环与do…while循环 考点训练卷
考试时间60分钟 满分100分
班级 姓名 学号 成绩
一、选择题(本大题共20小题,每题3分,共60分)
1.以下关于 C 语言 while 循环的描述中,正确的是( )
A. 循环体至少执行一次
B. 先执行循环体,再判断循环条件
C. 先判断循环条件,再执行循环体
D. 循环条件为 0 时执行循环体
【答案】C
【解析】while 循环的执行流程是先判断循环条件,条件为真(非 0)时执行循环体,条件为假(0)时结束循环。A、B 是 do-while 循环的特点;D 错误,条件为 0 时不执行循环体。
2.以下关于 C 语言 do…while 循环的描述中,正确的是( )
A. 循环体可能一次都不执行
B. 先判断循环条件,再执行循环体
C. 循环条件为 1 时结束循环
D. 循环体至少执行一次
【答案】D
【解析】do…while 循环的特点是先执行一次循环体,再判断循环条件,因此循环体至少执行一次。A、B 是 while 循环的特点;C错误,条件为 1 时继续执行循环。
3.执行以下程序段后,i 的值是( )
int i=0;
while(i<3)
i++;
A. 0 B. 2 C. 3 D. 4
【答案】C
【解析】i 从 0 开始,每次循环自增 1,当 i=3 时,条件 i<3 不成立,循环结束,因此 i 的值为 3。
4.执行以下程序段后,i 的值是( )
int i=0;
do {
i++;
} while(i<3);
A. 3 B. 4 C. 2 D. 0
【答案】A
【解析】先执行 i++,i 变为 1,判断 i<3 成立;再执行 i++,i 变为 2,判断成立;再执行 i++,i 变为 3,判断 i<3 不成立,循环结束,i 的值为 3。
5.以下程序段的输出结果是( )
int i=1;
while(i<=5) {
printf("%d",i);
i++;
}
A. 12345 B. 1234 C. 01234 D. 012345
【答案】A
【解析】i 从 1 开始,每次循环输出 i 的值然后自增 1,直到 i=6 时条件不成立,因此输出 12345。
6.以下程序段的输出结果是( )
int i=1;
do {
printf("%d",i);
i++;
} while(i<=5);
A. 12345 B. 1234 C. 01234 D. 012345
【答案】A
【解析】先执行循环体输出 1,i 变为 2,判断 i<=5 成立;依次输出 2、3、4、5,i 变为 6 时条件不成立,循环结束,输出 12345。
7.以下程序段的输出结果是( )
int i=0;
while(i++<3)
printf("%d",i);
A. 012 B. 123 C. 0123 D. 1234
【答案】B
【解析】后置自增 i++ 先使用 i 的原值参与条件判断,再自增。i=0 时,0<3 成立,i 自增为 1,输出 1;i=1 时,1<3 成立,i 自增为 2,输出 2;i=2 时,2<3 成立,i 自增为 3,输出 3;i=3 时,3<3 不成立,循环结束,输出 123。
8.以下程序段的输出结果是( )
int i=0;
do {
printf("%d",i);
} while(i++<3);
A. 012 B. 123 C. 0123 D. 1234
【答案】C
【解析】先执行循环体输出 0,然后判断 i++<3,i 自增为 1;再输出 1,判断 i++<3,i 自增为 2;输出 2,判断 i++<3,i 自增为 3;输出 3,判断 i++<3,i 自增为 4,条件不成立,循环结束,输出 0123。
9.执行以下程序段后,sum 的值是( )
int i=0, sum=0;
while(i<=10) {
sum += i;
i += 2;
}
A. 10 B. 20 C. 30 D. 55
【答案】C
【解析】i 依次取 0、2、4、6、8、10,sum 累加这些值:0+2+4+6+8+10=30。
10.执行以下程序段后,sum 的值是( )
int i=1, sum=0;
do {
sum += i;
i++;
} while(i<=5);
A. 15 B. 10 C. 5 D. 20
【答案】A
【解析】i 依次取 1、2、3、4、5,sum 累加这些值:1+2+3+4+5=15。
11.以下程序段的输出结果是( )
int i=0;
while(i<5) {
if(i==3)
break;
i++;
}
printf("%d",i);
A. 3 B. 4 C. 5 D. 0
【答案】A
【解析】break 语句的作用是跳出整个循环。i 从 0 开始,每次自增 1,当 i=3 时,执行 break 跳出循环,此时 i 的值为 3。
12.以下程序段的输出结果是( )
int i=0;
while(i<5) {
i++;
if(i==3)
continue;
printf("%d",i);
}
A. 12345 B. 1245 C. 01245 D. 01234
【答案】B
【解析】continue 语句的作用是跳过本次循环剩余的语句,直接进入下一次循环判断。i=1 时输出 1,i=2 时输出 2,i=3 时执行 continue 跳过 printf,i=4 时输出 4,i=5 时输出 5,最终输出 1245。
13.以下程序段中,会产生死循环的是( )
A. int i=0; while(i<10) i++;
B. int i=0; while(i>0) i++;
C. int i=0; do {i++;} while(i<10);
D. int i=0; while(1) i++;
【答案】D
【解析】while (1) 的循环条件永远为真,会产生死循环。A、C 循环条件会变为假,正常结束;B初始条件 i>0 为假,循环体一次都不执行。
14.以下 do…while 循环的语法中,正确的是( )
A. do {printf("a");} while(1)
B. do printf("a") while(1);
C. do {printf("a");} while(1);
D. do while(1) {printf("a");}
【答案】C
【解析】do…while 循环的语法是:do {循环体} while (条件); 注意 while 后面必须有分号。A 缺少分号;B 循环体缺少分号;D 语法错误。
15.以下程序段的输出结果是( )
int i=5;
while(i>0)
i--;
printf("%d",i);
A. 5 B. 0 C. -1 D. 1
【答案】B
【解析】i 从 5 开始,每次自减 1,当 i=0 时,条件 i>0 不成立,循环结束,i 的值为 0。
16.以下程序段的输出结果是( )
int i=0;
while(i<10);
{
printf("%d",i);
i++;
}
A. 循环条件错误
B. 循环体没有加花括号
C. while 后面多了分号,导致死循环
D. 没有使用 do…while 循环
【答案】C
【解析】while 后面的分号表示空语句,循环体是空语句,i 的值永远为 0,循环条件 i<10 永远成立,产生死循环。
17.以下关于 break 和 continue 语句的描述中,正确的是( )
A. break 语句只能用于循环语句中
B. break 和 continue 的作用相同
C. break 和 continue 都可以用于 switch 语句中
D. continue 语句只能用于循环语句中
【答案】D
【解析】continue 语句只能用于循环语句中,作用是跳过本次循环;break 语句可以用于循环语句和 switch 语句中,作用是跳出整个循环或 switch 结构。
18.执行以下程序段后,输出结果是( )
int i=1, j=0;
while(i<=3) {
j += i;
i++;
}
printf("%d",j);
A. 6 B. 9 C. 12 D. 15
【答案】A
【解析】i=1 时 j=1,i=2 时 j=3,i=3 时 j=6,i=4 时循环结束,输出 6。
19.以下程序段的输出结果是( )
int i=0;
do {
if(i%2==0)
printf("%d",i);
i++;
} while(i<5);
A. 024 B. 13 C. 01234 D. 24
【答案】A
【解析】i 从 0 开始,当 i 为偶数时输出 i 的值,i 依次取 0、1、2、3、4,输出 0、2、4,结果为 024。
20.执行以下两个程序段后,输出结果分别是( )
// 程序段1
int i=5;
while(i<5)
printf("%d",i);
// 程序段2
int i=5;
do
printf("%d",i);
while(i<5);
A. 5 和 5 B. 无输出和 5 C. 5 和无输出 D. 无输出和无输出
【答案】B
【解析】程序段 1(while 循环):先判断循环条件i<5,初始 i=5,条件为假,循环体一次都不执行,因此无输出;程序段 2(do-while 循环):先执行一次循环体输出 5,再判断循环条件i<5,条件为假,循环结束,因此输出 5。
二、简答题(本大题共2小题,每题10分,共20分)
1.阅读以下 C 语言程序,写出程序运行后的完整输出结果______
#include <stdio.h>
int main()
{
int i=1, sum=0;
while(i<=10) {
if(i%2==1)
sum += i;
i++;
}
printf("sum=%d
",sum);
return 0;
}
【答案】sum=25
2.阅读以下 C 语言程序,写出程序运行后的完整输出结果______
#include <stdio.h>
int main()
{
int i=0;
do {
printf("%d ",i);
i += 2;
} while(i<10);
printf("
i=%d
",i);
return 0;
}
【答案】
0 2 4 6 8
i=10
三、案例分析题(本大题共1小题,每题10分,共10分)
1.以下程序的功能是:输入一个正整数 n,计算 n 的阶乘(n! = 1×2×3×…×n)。请在程序的下划线处填入正确的内容,使程序完整并能正确运行。
#include <stdio.h>
int main()
{
int n, i=1;
long fact=1;
printf("请输入一个正整数:");
scanf("%d", &n);
if(n<0) {
printf("输入错误!
");
return 1;
}
while(____1____) {
fact *= i;
____2____;
}
printf("%d! = %ld
", n, fact);
return 0;
}
【答案】
1.i<=n
2.i++(或i=i+1、i+=1)
四、综合应用题(本大题共1小题,每题10分,共10分)
1.编写一个 C 语言程序,实现以下功能:
输入一个正整数 n
使用 while 循环计算 1 到 n 的所有整数的和
输出计算结果
检查输入数据的合法性(n 必须为正整数)
【答案】
#include <stdio.h>
int main()
{
int n, i=1, sum=0;
printf("请输入一个正整数:");
scanf("%d", &n);
// 检查输入合法性
if(n<=0) {
printf("输入错误!请输入正整数。
");
return 1;
}
// 计算1到n的和
while(i<=n) {
sum += i;
i++;
}
printf("1到%d的和为:%d
", n, sum);
return 0;
}
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
学科网(北京)股份有限公司
学科网(北京)股份有限公司
学科网(北京)股份有限公司
$
编写说明:山东省春季高考《软件与应用技术类考纲百套卷》,依据山东省《软件与应用技术类专业知识考试标准》编写。每门课程均分三层训练:基础层(具象化支架)拆解考点为微目标,紧扣考纲 “掌握”“理解” 要求编写考点训练卷;巩固层(关联性支架)强化知识交叉与场景关联,按考纲专题编专题训练卷;应用层(引导性支架)聚焦真题突破,结合知识模块与教材编写课程综合卷。
本试卷是第6卷,按《C语言程序设计》范围和要求编写。具体内容为:
掌握while循环、do…while循环
山东省《软件与应用技术类考纲百套卷》 第6卷
《C语言程序设计》
while循环与do…while循环 考点训练卷
考试时间60分钟 满分100分
班级 姓名 学号 成绩
一、选择题(本大题共20小题,每题3分,共60分)
1.以下关于 C 语言 while 循环的描述中,正确的是( )
A. 循环体至少执行一次
B. 先执行循环体,再判断循环条件
C. 先判断循环条件,再执行循环体
D. 循环条件为 0 时执行循环体
2.以下关于 C 语言 do…while 循环的描述中,正确的是( )
A. 循环体可能一次都不执行
B. 先判断循环条件,再执行循环体
C. 循环条件为 1 时结束循环
D. 循环体至少执行一次
3.执行以下程序段后,i 的值是( )
int i=0;
while(i<3)
i++;
A. 0 B. 2 C. 3 D. 4
4.执行以下程序段后,i 的值是( )
int i=0;
do {
i++;
} while(i<3);
A. 3 B. 4 C. 2 D. 0
5.以下程序段的输出结果是( )
int i=1;
while(i<=5) {
printf("%d",i);
i++;
}
A. 12345 B. 1234 C. 01234 D. 012345
6.以下程序段的输出结果是( )
int i=1;
do {
printf("%d",i);
i++;
} while(i<=5);
A. 12345 B. 1234 C. 01234 D. 012345
7.以下程序段的输出结果是( )
int i=0;
while(i++<3)
printf("%d",i);
A. 012 B. 123 C. 0123 D. 1234
8.以下程序段的输出结果是( )
int i=0;
do {
printf("%d",i);
} while(i++<3);
A. 012 B. 123 C. 0123 D. 1234
9.执行以下程序段后,sum 的值是( )
int i=0, sum=0;
while(i<=10) {
sum += i;
i += 2;
}
A. 10 B. 20 C. 30 D. 55
10.执行以下程序段后,sum 的值是( )
int i=1, sum=0;
do {
sum += i;
i++;
} while(i<=5);
A. 15 B. 10 C. 5 D. 20
11.以下程序段的输出结果是( )
int i=0;
while(i<5) {
if(i==3)
break;
i++;
}
printf("%d",i);
A. 3 B. 4 C. 5 D. 0
12.以下程序段的输出结果是( )
int i=0;
while(i<5) {
i++;
if(i==3)
continue;
printf("%d",i);
}
A. 12345 B. 1245 C. 01245 D. 01234
13.以下程序段中,会产生死循环的是( )
A. int i=0; while(i<10) i++;
B. int i=0; while(i>0) i++;
C. int i=0; do {i++;} while(i<10);
D. int i=0; while(1) i++;
14.以下 do…while 循环的语法中,正确的是( )
A. do {printf("a");} while(1)
B. do printf("a") while(1);
C. do {printf("a");} while(1);
D. do while(1) {printf("a");}
15.以下程序段的输出结果是( )
int i=5;
while(i>0)
i--;
printf("%d",i);
A. 5 B. 0 C. -1 D. 1
16.以下程序段的输出结果是( )
int i=0;
while(i<10);
{
printf("%d",i);
i++;
}
A. 循环条件错误
B. 循环体没有加花括号
C. while 后面多了分号,导致死循环
D. 没有使用 do…while 循环
17.以下关于 break 和 continue 语句的描述中,正确的是( )
A. break 语句只能用于循环语句中
B. break 和 continue 的作用相同
C. break 和 continue 都可以用于 switch 语句中
D. continue 语句只能用于循环语句中
18.执行以下程序段后,输出结果是( )
int i=1, j=0;
while(i<=3) {
j += i;
i++;
}
printf("%d",j);
A. 6 B. 9 C. 12 D. 15
19.以下程序段的输出结果是( )
int i=0;
do {
if(i%2==0)
printf("%d",i);
i++;
} while(i<5);
A. 024 B. 13 C. 01234 D. 24
20.执行以下两个程序段后,输出结果分别是( )
// 程序段1
int i=5;
while(i<5)
printf("%d",i);
// 程序段2
int i=5;
do
printf("%d",i);
while(i<5);
A. 5 和 5 B. 无输出和 5 C. 5 和无输出 D. 无输出和无输出
二、简答题(本大题共2小题,每题10分,共20分)
1.阅读以下 C 语言程序,写出程序运行后的完整输出结果______
#include <stdio.h>
int main()
{
int i=1, sum=0;
while(i<=10) {
if(i%2==1)
sum += i;
i++;
}
printf("sum=%d
",sum);
return 0;
}
2.阅读以下 C 语言程序,写出程序运行后的完整输出结果______
#include <stdio.h>
int main()
{
int i=0;
do {
printf("%d ",i);
i += 2;
} while(i<10);
printf("
i=%d
",i);
return 0;
}
三、案例分析题(本大题共1小题,每题10分,共10分)
1.以下程序的功能是:输入一个正整数 n,计算 n 的阶乘(n! = 1×2×3×…×n)。请在程序的下划线处填入正确的内容,使程序完整并能正确运行。
#include <stdio.h>
int main()
{
int n, i=1;
long fact=1;
printf("请输入一个正整数:");
scanf("%d", &n);
if(n<0) {
printf("输入错误!
");
return 1;
}
while(____1____) {
fact *= i;
____2____;
}
printf("%d! = %ld
", n, fact);
return 0;
}
四、综合应用题(本大题共1小题,每题10分,共10分)
1.编写一个 C 语言程序,实现以下功能:
输入一个正整数 n
使用 while 循环计算 1 到 n 的所有整数的和
输出计算结果
检查输入数据的合法性(n 必须为正整数)
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
学科网(北京)股份有限公司
学科网(北京)股份有限公司
学科网(北京)股份有限公司
$