内容正文:
专题五 循环结构(一)
(一)单项选择题
1. 以下关于 while 和 do-while 循环的描述,正确的是( )
A. while 循环至少执行一次
B. do-while 循环的条件判断在循环体之后
C. do-while 的条件可以为浮点类型
D. while 循环的条件必须用 {} 包裹
答案:B
2. 以下代码的输出结果是( )
int i = 5;
do {
printf("%d ", i);
i--;
} while (i > 0);
A. 5 4 3 2 1
B. 5 4 3 2 1 0
C. 4 3 2 1 0
D. 无输出
答案:A
3. 以下代码段中,循环体执行次数为( )
int x = 10;
while (x++ < 12) {
printf("Hello");
}
A. 0
B. 1
C. 2
D. 3
答案:C
4. 以下代码中,若输入 0,输出结果是( )
int n;
scanf("%d", &n);
do {
printf("%d", n);
n--;
} while (n > 0);
A. 2
B. -1
C. 1
D. 0
答案:D
5. 以下代码的输出是( )
int x = 3;
do {
x -= 2;
printf("%d ", x);
} while (x > 0);
A. 1 -1
B. 1
C. 3 1
D. 1 0
答案:A
6. 以下代码的输出是( )
int i = 0;
while (i++ < 3) {
printf("%d ", i);
}
A. 0 1 2
B. 1 2 3
C. 0 1 2 3
D. 1 2
答案:B
7. 以下代码中,循环结束后 x 的值是( )
int x = 5;
do {
x /= 2;
} while (x > 1);
A. 0
B. 1
C. 2
D. 5
答案:B
8.以下代码的功能是( )
int num, sum = 0;
scanf("%d", &num);
do {
sum += num % 10;
num /= 10;
} while (num > 0);
A. 计算数字的位数
B. 反转数字
C. 计算各位数字之和
D. 判断奇偶性
答案:C
9.以下代码的输出是( )
int a = 1;
while (a <= 3) {
printf("%d ", a);
a = a + 1;
}
A. 1 2 3
B. 1 2
C. 2 3
D. 0 1 2
答案:A
10.以下代码的输出是( )
int i = 10;
do {
printf("%d ", i);
i++;
} while (i < 10);
A. 10
B. 无输出
C. 10 11
D. 死循环
答案:A
11. 以下代码的错误是( )
int x = 5;
while (x > 0) {
printf("%d ", x);
}
A. 缺少 x--
B. 条件错误
C. 死循环
D. 语法错误
答案:C
12.以下代码的输出是( )
int i = 0;
while (i < 2); {
printf("%d ", i);
i++;
}
A. 0 1
B. 0
C. 无输出
D. 死循环
答案:D
13.以下代码的输出是( )
int x = 0;
do {
x++;
} while (x < 5);
printf("%d", x);
A. 4
B. 5
C. 6
D. 0
答案:B
14. 以下代码的输出是( )
int a = 3;
do {
printf("%d ", a);
a -= 2;
} while (a > 0);
A. 3 1
B. 3
C. 3 1 -1
D. 1
答案:A
15.以下代码的输出是( )
int i = 5;
while (i--) {
printf("%d ", i);
}
A. 5 4 3 2 1
B. 4 3 2 1 0
C. 5 4 3 2 1 0
D. 4 3 2 1
答案:B
(二)判断题
1. do-while 循环的条件可以为空表达式。( )
答案:×
2 .while 循环的条件表达式可以是赋值语句。( )
答案:√
3. do-while 循环的循环体可以为空。( )
答案:×
4. while(1) 是一个合法的循环条件,表示无限循环。( )
答案:√
5.do-while 循环的条件后必须有分号。( )
答案:√
(三)填空题
1. 补全代码,输入正整数n,计算1+2+...+n:
int n, sum = 0, i = 1;
scanf("%d", &n);
while (________) {
sum += i;
________;
}
printf("%d", sum);
答案:
第一空:i <= n
第二空:i++
2.补全代码,输入密码直到正确为止(正确密码为123):
int pwd;
do {
printf("请输入密码:");
scanf("%d", &pwd);
} while (________);
printf("登录成功!");
答案:pwd != 123
(四)应用题
1. 代码实现计算两个正整数的最大公约数
要求:
输入两个正整数 a 和 b。
使用 while 循环和辗转相除法(欧几里得算法)计算它们的最大公约数。
输出结果。
答案代码:
#include <stdio.h>
int main() {
int a, b, temp;
scanf("%d %d", &a, &b);
while (b != 0) {
temp = b;
b = a % b;
a = temp;
}
printf("最大公约数:%d", a);
return 0;
}
2. 代码实现题统计输入数字的位数
要求:
输入一个正整数 n。
使用 do-while 循环统计其位数(如输入 1234,输出 4)。
答案代码:
#include <stdio.h>
int main() {
int n, count = 0;
scanf("%d", &n);
do {
n /= 10;
count++;
} while (n != 0);
printf("位数:%d", count);
return 0;
}
3. 代码实现用户输入验证
要求:
输入一个年龄(1~150之间的整数),若输入非法(如负数或超范围),提示重新输入,直到合法为止。
使用 do-while 循环实现。
最终输出合法年龄。
答案代码:
#include <stdio.h>
int main() {
int age;
do {
printf("请输入年龄(1~150):");
scanf("%d", &age);
if (age < 1 || age > 150) {
printf("输入错误,请重新输入!
");
}
} while (age < 1 || age > 150);
printf("合法年龄:%d", age);
return 0;
}
学科网(北京)股份有限公司
$$
专题五 循环结构(一)
(一)单项选择题
1. 以下关于 while 和 do-while 循环的描述,正确的是( )
A. while 循环至少执行一次
B. do-while 循环的条件判断在循环体之后
C. do-while 的条件可以为浮点类型
D. while 循环的条件必须用 {} 包裹
2. 以下代码的输出结果是( )
int i = 5;
do {
printf("%d ", i);
i--;
} while (i > 0);
A. 5 4 3 2 1
B. 5 4 3 2 1 0
C. 4 3 2 1 0
D. 无输出
3. 以下代码段中,循环体执行次数为( )
int x = 10;
while (x++ < 12) {
printf("Hello");
}
A. 0
B. 1
C. 2
D. 3
4. 以下代码中,若输入 0,输出结果是( )
int n;
scanf("%d", &n);
do {
printf("%d", n);
n--;
} while (n > 0);
A. 2
B. -1
C. 1
D. 0
5. 以下代码的输出是( )
int x = 3;
do {
x -= 2;
printf("%d ", x);
} while (x > 0);
A. 1 -1
B. 1
C. 3 1
D. 1 0
6. 以下代码的输出是( )
int i = 0;
while (i++ < 3) {
printf("%d ", i);
}
A. 0 1 2
B. 1 2 3
C. 0 1 2 3
D. 1 2
7. 以下代码中,循环结束后 x 的值是( )
int x = 5;
do {
x /= 2;
} while (x > 1);
A. 0
B. 1
C. 2
D. 5
8.以下代码的功能是( )
int num, sum = 0;
scanf("%d", &num);
do {
sum += num % 10;
num /= 10;
} while (num > 0);
A. 计算数字的位数
B. 反转数字
C. 计算各位数字之和
D. 判断奇偶性
9.以下代码的输出是( )
int a = 1;
while (a <= 3) {
printf("%d ", a);
a = a + 1;
}
A. 1 2 3
B. 1 2
C. 2 3
D. 0 1 2
10.以下代码的输出是( )
int i = 10;
do {
printf("%d ", i);
i++;
} while (i < 10);
A. 10
B. 无输出
C. 10 11
D. 死循环
11. 以下代码的错误是( )
int x = 5;
while (x > 0) {
printf("%d ", x);
}
A. 缺少 x--
B. 条件错误
C. 死循环
D. 语法错误
12.以下代码的输出是( )
int i = 0;
while (i < 2); {
printf("%d ", i);
i++;
}
A. 0 1
B. 0
C. 无输出
D. 死循环
13.以下代码的输出是( )
int x = 0;
do {
x++;
} while (x < 5);
printf("%d", x);
A. 4
B. 5
C. 6
D. 0
14. 以下代码的输出是( )
int a = 3;
do {
printf("%d ", a);
a -= 2;
} while (a > 0);
A. 3 1
B. 3
C. 3 1 -1
D. 1
15.以下代码的输出是( )
int i = 5;
while (i--) {
printf("%d ", i);
}
A. 5 4 3 2 1
B. 4 3 2 1 0
C. 5 4 3 2 1 0
D. 4 3 2 1
(二)判断题
1. do-while 循环的条件可以为空表达式。( )
2 .while 循环的条件表达式可以是赋值语句。( )
3. do-while 循环的循环体可以为空。( )
4. while(1) 是一个合法的循环条件,表示无限循环。( )
5.do-while 循环的条件后必须有分号。( )
(三)填空题
1. 补全代码,输入正整数n,计算1+2+...+n:
int n, sum = 0, i = 1;
scanf("%d", &n);
while (________) {
sum += i;
________;
}
printf("%d", sum);
2.补全代码,输入密码直到正确为止(正确密码为123):
int pwd;
do {
printf("请输入密码:");
scanf("%d", &pwd);
} while (________);
printf("登录成功!");
(四)应用题
1. 代码实现计算两个正整数的最大公约数
要求:
输入两个正整数 a 和 b。
使用 while 循环和辗转相除法(欧几里得算法)计算它们的最大公约数。
输出结果。
2. 代码实现题统计输入数字的位数
要求:
输入一个正整数 n。
使用 do-while 循环统计其位数(如输入 1234,输出 4)。
3. 代码实现用户输入验证
要求:
输入一个年龄(1~150之间的整数),若输入非法(如负数或超范围),提示重新输入,直到合法为止。
使用 do-while 循环实现。
最终输出合法年龄。
学科网(北京)股份有限公司
$$