内容正文:
专题6:for循环、循环的嵌套
一、单项选择题(在每小题列出的四个备选答案中,只有一个是正确选项。)
1.以下for循环的执行过程描述正确的是( )
A. 先执行循环体,再判断条件
B. 先初始化,再判断条件,若满足则执行循环体,最后更新
C. 先判断条件,若满足则执行循环体,再更新
D. 以上都不对
2.在for(int i=0; i<5; i++);中,循环体执行次数为( )
A. 4次
B. 5次
C. 0次
D. 编译错误
3.有for(int i=1, sum=0; i<=3; sum+=i, i++);,执行后sum的值是( )
A. 6
B. 5
C. 3
D. 0
4.多重循环中,break语句只能终止( )
A. 外层循环
B. 内层循环
C. 所有循环
D. 不确定
5.以下代码的输出是( )
for(int i=0; i<3; i++) {
if(i==1) continue;
printf("%d",i);
}
A. 012
B. 02
C. 12
D. 无输出
6.有for(int i=0,j=0; i<2 && j<3; i++,j++),循环体执行次数是( )
A. 2次
B. 3次
C. 5次
D. 6次
7.代码for(int i=1; i<=5; i++),i的最终值是( )
A. 5
B. 6
C. 4
D. 不确定
8.代码for(int i=0; i<5; i++) {if(i==3) break; printf("%d",i);}的输出是( )
A. 01234
B. 012
C. 0123
D. 0124
9.有for(int i=0; i<2; i++) {for(int j=0; j<2; j++) printf("%d%d ",i,j);},输出是( )
A. 00 01 10 11
B. 00 11
C. 01 10
D. 00 01
10.代码for(int a=0,b=0; a<3; a++,b=a) printf("%d ",b);的输出是( )
A. 0 1 2
B. 0 0 0
C. 0 1 3
D. 1 2 3
11.以下for循环的执行过程描述错误的是( )
A. 初始化只执行一次
B. 条件判断为真时执行循环体
C. 更新表达式在循环体之后执行
D. 循环体至少执行一次
12.有for(int i=5; i>0; i-=2),循环体执行次数是( )
A. 2次
B. 3次
C. 4次
D. 5次
二、阅读程序,写出运行结果。
13.下列程序的运行结果是:____________
#include <stdio.h>
int main() {
for(int i=1; i<=3; i++) {
for(int j=1; j<=i; j++) {
printf("*");
}
printf("
");
}
return 0;
}
14.下列程序的运行结果是:____________
#include <stdio.h>
int main() {
int sum = 0;
for(int i=1; i<=5; i++) {
if(i%2==0) continue;
sum += i;
}
printf("%d", sum);
return 0;
}
15.下列程序的运行结果是:____________
#include <stdio.h>
int main() {
int i, j;
for(i=0; i<2; i++) {
for(j=0; j<3; j++) {
if(j==1) break;
printf("%d%d ", i, j);
}
}
return 0;
}
16.下列程序的运行结果是:____________
#include <stdio.h>
int main() {
int n = 5;
for(; n>0; n--) {
if(n==3) continue;
printf("%d ", n);
}
return 0;
}
17.下列程序的运行结果是:____________
#include <stdio.h>
int main() {
int a=1, b=2;
for(; a<=b; a++, b--) {
printf("%d%d ", a, b);
}
return 0;
}
18.下列程序的运行结果是:____________
#include <stdio.h>
int main() {
int i=0;
for(; i<5; ) {
printf("%d ", i);
i++;
}
return 0;
}
19.下列程序的运行结果是:____________
#include <stdio.h>
int main() {
int sum = 0;
for(int i=1; i<=10; i++) {
sum += i;
if(sum>20) break;
}
printf("%d", sum);
return 0;
}
20.下列程序的运行结果是:____________
#include <stdio.h>
int main() {
for(int i=0; i<3; i++) {
switch(i) {
case 0: printf("A");
case 1: printf("B"); break;
case 2: printf("C");
}
}
return 0;
}
21.下列程序的运行结果是:____________
#include <stdio.h>
int main() {
int x=3;
for(; x>0; x--) {
for(int y=0; y<x; y++) {
printf("*");
}
printf("
");
}
return 0;
}
三、程序填空题。
22.以下程序实现“求1到n的乘积(阶乘)”,请填空。
#include <stdio.h>
int main() {
int n, i, fact = 1;
scanf("%d", &n);
for(__(1)__; __(2)__; __(3)__) {
fact *= i;
}
printf("%d! = %d", n, fact);
return 0;
}
23.以下程序实现“输出99乘法表”,请填空。
#include <stdio.h>
int main() {
for(int i=1; __(1)__; i++) {
for(int j=1; __(2)__; j++) {
printf("%d×%d=%d ", i, j, i*j);
}
printf("
");
}
return 0;
}
24.以下程序实现“找出100到200之间的所有完数(完数:因子和等于自身,如6=1+2+3)”,请填空。
#include <stdio.h>
int main() {
for(int i=100; __(1)__; i++) {
int sum = 0;
for(int j=1; __(2)__; j++) {
if(i%j == 0) {
sum += j;
}
}
if(__(3)__) {
printf("%d ", i);
}
}
return 0;
}
25.以下程序实现“输入一个整数,判断是否为素数”,请填空。
#include <stdio.h>
#include <math.h>
int main() {
int num, isPrime = 1;
scanf("%d", &num);
for(int i=2; __(1)__; i++) {
if(__(2)__) {
isPrime = 0;
__(3)__;
}
}
if(isPrime && num>1) {
printf("是素数");
} else {
printf("不是素数");
}
return 0;
}
26.以下程序实现“输出菱形图案(由*组成,行数为5)”,请填空。
#include <stdio.h>
int main() {
for(int i=1; i<=3; i++) {
for(int j=1; j<=3-i; j++) {
printf(" ");
}
for(int k=1; __(1)__; k++) {
printf("*");
}
printf("
");
}
for(int i=2; __(2)__; i++) {
for(int j=1; j<=i; j++) {
printf(" ");
}
for(int k=1; __(3)__; k++) {
printf("*");
}
printf("
");
}
return 0;
}
27.以下程序实现“计算1到n中所有奇数的和”,请填空。
#include <stdio.h>
int main() {
int n, sum = 0;
scanf("%d", &n);
for(int i=1; __(1)__; __(2)__) {
sum += i;
}
printf("奇数和:%d", sum);
return 0;
}
28.以下程序实现“输出1到100中能被3或5整除的数”,请填空。
#include <stdio.h>
int main() {
for(int i=1; __(1)__; i++) {
if(__(2)__ || __(3)__) {
printf("%d ", i);
}
}
return 0;
}
四、程序改错题。
29.以下程序实现“求1到10的和,当和大于25时提前终止循环”,存在错误,请指出错误行并改正。
L1 #include <stdio.h>
L2 int main() {
L3 int sum = 0;
L4 for(int i=1; i<=10; i++) {
L5 sum += i;
L6 if(sum>25) continue;
L7 }
L8 printf("sum = %d", sum);
L9 return 0;
L10 }
30.以下程序实现“输出九九乘法表下半部分(i从5到9)”,存在2处错误,请指出错误行并改正。
L1 #include <stdio.h>
L2 int main() {
L3 for(int i=5; i<=9; i++);
L4 for(int j=5; j<=i; j++) {
L5 printf("%d×%d=%d ", i, j, i*j);
L6 printf("
");
L7 }
L8 return 0;
L9 }
学科网(北京)股份有限公司
$
专题6:for循环、循环的嵌套
一、单项选择题(在每小题列出的四个备选答案中,只有一个是正确选项。)
1.以下for循环的执行过程描述正确的是( )
A. 先执行循环体,再判断条件
B. 先初始化,再判断条件,若满足则执行循环体,最后更新
C. 先判断条件,若满足则执行循环体,再更新
D. 以上都不对
【答案】B
2.在for(int i=0; i<5; i++);中,循环体执行次数为( )
A. 4次
B. 5次
C. 0次
D. 编译错误
【答案】B
3.有for(int i=1, sum=0; i<=3; sum+=i, i++);,执行后sum的值是( )
A. 6
B. 5
C. 3
D. 0
【答案】A
4.多重循环中,break语句只能终止( )
A. 外层循环
B. 内层循环
C. 所有循环
D. 不确定
【答案】B
5.以下代码的输出是( )
for(int i=0; i<3; i++) {
if(i==1) continue;
printf("%d",i);
}
A. 012
B. 02
C. 12
D. 无输出
【答案】B
6.有for(int i=0,j=0; i<2 && j<3; i++,j++),循环体执行次数是( )
A. 2次
B. 3次
C. 5次
D. 6次
【答案】A
7.代码for(int i=1; i<=5; i++),i的最终值是( )
A. 5
B. 6
C. 4
D. 不确定
【答案】B
8.代码for(int i=0; i<5; i++) {if(i==3) break; printf("%d",i);}的输出是( )
A. 01234
B. 012
C. 0123
D. 0124
【答案】B
9.有for(int i=0; i<2; i++) {for(int j=0; j<2; j++) printf("%d%d ",i,j);},输出是( )
A. 00 01 10 11
B. 00 11
C. 01 10
D. 00 01
【答案】A
10.代码for(int a=0,b=0; a<3; a++,b=a) printf("%d ",b);的输出是( )
A. 0 1 2
B. 0 0 0
C. 0 1 3
D. 1 2 3
【答案】A
11.以下for循环的执行过程描述错误的是( )
A. 初始化只执行一次
B. 条件判断为真时执行循环体
C. 更新表达式在循环体之后执行
D. 循环体至少执行一次
【答案】D
12.有for(int i=5; i>0; i-=2),循环体执行次数是( )
A. 2次
B. 3次
C. 4次
D. 5次
【答案】B
二、阅读程序,写出运行结果。
13.下列程序的运行结果是:____________
#include <stdio.h>
int main() {
for(int i=1; i<=3; i++) {
for(int j=1; j<=i; j++) {
printf("*");
}
printf("
");
}
return 0;
}
【答案】
*
**
***
14.下列程序的运行结果是:____________
#include <stdio.h>
int main() {
int sum = 0;
for(int i=1; i<=5; i++) {
if(i%2==0) continue;
sum += i;
}
printf("%d", sum);
return 0;
}
【答案】9
15.下列程序的运行结果是:____________
#include <stdio.h>
int main() {
int i, j;
for(i=0; i<2; i++) {
for(j=0; j<3; j++) {
if(j==1) break;
printf("%d%d ", i, j);
}
}
return 0;
}
【答案】00 10
16.下列程序的运行结果是:____________
#include <stdio.h>
int main() {
int n = 5;
for(; n>0; n--) {
if(n==3) continue;
printf("%d ", n);
}
return 0;
}
【答案】5 4 2 1
17.下列程序的运行结果是:____________
#include <stdio.h>
int main() {
int a=1, b=2;
for(; a<=b; a++, b--) {
printf("%d%d ", a, b);
}
return 0;
}
【答案】12
18.下列程序的运行结果是:____________
#include <stdio.h>
int main() {
int i=0;
for(; i<5; ) {
printf("%d ", i);
i++;
}
return 0;
}
【答案】0 1 2 3 4
19.下列程序的运行结果是:____________
#include <stdio.h>
int main() {
int sum = 0;
for(int i=1; i<=10; i++) {
sum += i;
if(sum>20) break;
}
printf("%d", sum);
return 0;
}
【答案】21
20.下列程序的运行结果是:____________
#include <stdio.h>
int main() {
for(int i=0; i<3; i++) {
switch(i) {
case 0: printf("A");
case 1: printf("B"); break;
case 2: printf("C");
}
}
return 0;
}
【答案】ABBC
21.下列程序的运行结果是:____________
#include <stdio.h>
int main() {
int x=3;
for(; x>0; x--) {
for(int y=0; y<x; y++) {
printf("*");
}
printf("
");
}
return 0;
}
【答案】
***
**
*
三、程序填空题。
22.以下程序实现“求1到n的乘积(阶乘)”,请填空。
#include <stdio.h>
int main() {
int n, i, fact = 1;
scanf("%d", &n);
for(__(1)__; __(2)__; __(3)__) {
fact *= i;
}
printf("%d! = %d", n, fact);
return 0;
}
【答案】(1)i=1;(2)i<=n;(3)i++
23.以下程序实现“输出99乘法表”,请填空。
#include <stdio.h>
int main() {
for(int i=1; __(1)__; i++) {
for(int j=1; __(2)__; j++) {
printf("%d×%d=%d ", i, j, i*j);
}
printf("
");
}
return 0;
}
【答案】(1)i<=9;(2)j<=i
24.以下程序实现“找出100到200之间的所有完数(完数:因子和等于自身,如6=1+2+3)”,请填空。
#include <stdio.h>
int main() {
for(int i=100; __(1)__; i++) {
int sum = 0;
for(int j=1; __(2)__; j++) {
if(i%j == 0) {
sum += j;
}
}
if(__(3)__) {
printf("%d ", i);
}
}
return 0;
}
【答案】(1)i<=200;(2)j<i;(3)sum == i
25.以下程序实现“输入一个整数,判断是否为素数”,请填空。
#include <stdio.h>
#include <math.h>
int main() {
int num, isPrime = 1;
scanf("%d", &num);
for(int i=2; __(1)__; i++) {
if(__(2)__) {
isPrime = 0;
__(3)__;
}
}
if(isPrime && num>1) {
printf("是素数");
} else {
printf("不是素数");
}
return 0;
}
【答案】(1)i<=sqrt(num);(2)num%i==0;(3)break
26.以下程序实现“输出菱形图案(由*组成,行数为5)”,请填空。
#include <stdio.h>
int main() {
for(int i=1; i<=3; i++) {
for(int j=1; j<=3-i; j++) {
printf(" ");
}
for(int k=1; __(1)__; k++) {
printf("*");
}
printf("
");
}
for(int i=2; __(2)__; i++) {
for(int j=1; j<=i; j++) {
printf(" ");
}
for(int k=1; __(3)__; k++) {
printf("*");
}
printf("
");
}
return 0;
}
【答案】(1)k<=2*i-1;(2)i>=1;(3)k<=5-2*i
27.以下程序实现“计算1到n中所有奇数的和”,请填空。
#include <stdio.h>
int main() {
int n, sum = 0;
scanf("%d", &n);
for(int i=1; __(1)__; __(2)__) {
sum += i;
}
printf("奇数和:%d", sum);
return 0;
}
【答案】(1)i<=n;(2)i += 2
28.以下程序实现“输出1到100中能被3或5整除的数”,请填空。
#include <stdio.h>
int main() {
for(int i=1; __(1)__; i++) {
if(__(2)__ || __(3)__) {
printf("%d ", i);
}
}
return 0;
}
【答案】(1)i<=100;(2)i%3==0;(3)i%5==0
四、程序改错题。
29.以下程序实现“求1到10的和,当和大于25时提前终止循环”,存在错误,请指出错误行并改正。
L1 #include <stdio.h>
L2 int main() {
L3 int sum = 0;
L4 for(int i=1; i<=10; i++) {
L5 sum += i;
L6 if(sum>25) continue;
L7 }
L8 printf("sum = %d", sum);
L9 return 0;
L10 }
【答案】L6 if(sum>25) break;
30.以下程序实现“输出九九乘法表下半部分(i从5到9)”,存在2处错误,请指出错误行并改正。
L1 #include <stdio.h>
L2 int main() {
L3 for(int i=5; i<=9; i++);
L4 for(int j=5; j<=i; j++) {
L5 printf("%d×%d=%d ", i, j, i*j);
L6 printf("
");
L7 }
L8 return 0;
L9 }
【答案】L3 for(int i=5; i<=9; i++){
L4 for(int j=1; j<=i; j++) {
学科网(北京)股份有限公司
$