第5章 第1、2节:循环的概念与while语句(练习)-《C语言程序设计》(电子工业出版社)上好课

2026-04-29
| 2份
| 22页
| 85人阅读
| 0人下载

内容正文:

5.1与5.2节:循环的概念与while语句 一、单项选择题 1.下列关于循环结构的描述中,正确的是( ) A. 循环结构只能处理固定次数的重复操作 B. 循环结构是程序中实现重复执行某段代码的控制结构 C. C 语言中循环结构的执行顺序一定是先执行循环体再判断条件 D. 循环结构中不能嵌套其他控制语句 【答案】B 【解析】循环结构是实现重复执行代码的控制结构,可处理固定或不固定次数的重复操作;while 循环是先判断条件再执行循环体;循环结构中可嵌套其他控制语句。 2.若int i = 1; while(i < 5) {i++;},则循环体执行的次数是( ) A. 3 次 B. 4 次 C. 5 次 D. 6 次 【答案】B 【解析】初始 i=1,循环条件 i<5 成立,执行循环体 i++,依次 i=2、3、4、5,共执行 4 次循环体,当 i=5 时条件不成立,循环结束。 3.下列 while 循环中,属于死循环的是( ) A. int i=0; while(i<3) {i++;} B. int i=1; while(i>0) {i--;} C. int i=1; while(1) {break;} D. int i=0; while(1) {i++;} 【答案】D 【解析】D 选项中 while 条件恒为 1(真),且循环体内无 break 语句,会一直执行循环体,属于死循环;C 选项中 break 语句会终止循环,不是死循环。 4.执行int i=3; while(i-- > 0) printf("%d", i);的输出结果是( ) A. 321 B. 210 C. 3210 D. 21 【答案】B 【解析】初始 i=3,判断 i-- > 0(先判断 i>0,再 i 自减):3>0 成立,i 变为 2,输出 2;2>0 成立,i 变为 1,输出 1;1>0 成立,i 变为 0,输出 0;0>0 不成立,循环结束,输出 210。 5.若int a=5; while(a>0) {printf("%d", a); a-=2;},则循环体执行的次数是( ) A. 2 次 B. 3 次 C. 4 次 D. 5 次 【答案】B 【解析】 初始 a=5,a>0 成立,输出 5,a=3;a=3>0 成立,输出 3,a=1;a=1>0 成立,输出 1,a=-1;a=-1>0 不成立,循环结束,共执行 3 次。 6.若int i=0; while(i<3) {i++;},下列说法正确的是( ) A. 循环体执行 3 次,结束后 i 的值为 3 B. 循环体执行 2 次,结束后 i 的值为 3 C. 循环体执行 3 次,结束后 i 的值为 2 D. 循环体执行 2 次,结束后 i 的值为 2 【答案】A 【解析】 i 从 0 开始,依次执行 i=0→1、1→2、2→3,共 3 次循环体,结束时 i=3,条件不成立。 7.执行int x=0; while(!x) {x++; printf("%d", x);}的输出结果是( ) A. 1 B. 0 C. 无输出 D. 死循环输出 111… 【答案】A 【解析】初始 x=0,!x 为真,执行循环体 x++(x=1),输出 1;再次判断!x 为!1=0(假),循环结束,输出 1。 8.若int n=10; while(n>5) {n--;},循环结束后 n 的值是( ) A. 4 B. 5 C. 6 D. 9 【答案】B 【解析】n 从 10 开始递减,当 n=6 时,执行 n-- 后 n=5,此时判断 n>5 不成立,循环结束,n=5。 9.执行int a=1, b=3; while(a<b) {a++; b--;},循环结束后 a 和 b 的值分别是( ) A. a=2, b=2 B. a=3, b=1 C. a=1, b=3 D. a=2, b=1 【答案】A 【解析】初始 a=1,b=3,a<b 成立,a=2,b=2;再次判断 a<b 不成立,循环结束,a=2,b=2。 10.若int i=5; while(i>0) {printf("%d", i); i-=2;},则输出结果是( ) A. 531 B. 53 C. 31 D. 5 【答案】A 【解析】i=5>0,输出 5,i=3;i=3>0,输出 3,i=1;i=1>0,输出 1,i=-1;循环结束,输出 531。 二、填空题。 1.C 语言中,while 循环的控制条件表达式的值为______时,执行循环体;值为______时,结束循环。 【答案】非零(或真);零(或假) 【解析】C 语言中,非零值代表逻辑真,零值代表逻辑假,while 循环根据条件表达式的真假决定是否执行循环体。 2.若int i=0; while(i<5) {i++;},循环结束后 i 的值为___________。 【答案】5 【解析】 i 从 0 开始递增,当 i=5 时,条件 i<5 不成立,循环结束,i 的值为 5。 3.执行int sum=0, i=1; while(i<=3) {sum += i; i++;},sum 的值为___________。 【答案】6 【解析】循环体依次执行 sum=1(i=1)、sum=3(i=2)、sum=6(i=3),i=4 时条件不成立,sum=1+2+3=6。 4.若int a=10; while(a>0) {a -= 3;},循环体执行的次数是______次。 【答案】4 【解析】 a=10→7→4→1→-2,依次执行 4 次循环体,当 a=-2 时条件 a>0 不成立,循环结束。 5.while 循环的一般格式为:while(______) {循环体语句}。 【答案】表达式(或条件表达式) 【解析】while 循环的语法格式中,括号内必须是合法的表达式,作为循环的控制条件。 6.执行int x=3; while(x--) {;},循环结束后 x 的值为___________。 【答案】-1 【解析】x=3 时,x-- 为 3(真),x=2;x=2→1,x=1→0,x=0 时 x-- 为 0(假),x=-1,循环结束,x=-1。 7.执行int n=5; while(n) {printf("%d", n); n--;},输出结果为___________。 【答案】54321 【解析】 n 从 5 递减到 1,每次条件 n 为非零(真),输出 n,n=0 时条件为假,循环结束,输出 54321。 8.若int i=1; while(i<4) {printf("%d", i); i+=2;},循环体执行______次,输出结果为___________。 【答案】2;13 【解析】 i=1<4 成立,输出 1,i=3;i=3<4 成立,输出 3,i=5;i=5<4 不成立,循环结束,执行 2 次,输出 13。 9.执行int a=2, b=4; while(a<b) {a++; b--;},循环结束后 a 的值为______,b 的值为______。 【答案】3;3 【解析】初始 a=2,b=4,a<b 成立,a=3,b=3;再次判断 a<b 不成立,循环结束,a=3,b=3。 10.执行int sum=0; int i=5; while(i>0) {sum += i; i--;},sum 的值为___________。 【答案】15 【解析】sum=5+4+3+2+1=15,循环结束后 sum=15。 三、阅读程序题。 1.写出下列程序段的输出结果:________________。 #include <stdio.h> main() { int i = 1; while(i <= 3) { printf("%d ", i); i++; } } 【答案】1 2 3 2.写出下列程序段的输出结果:________________。 #include <stdio.h> main() { int a = 5; while(a > 0) { printf("%d ", a); a -= 2; } } 【答案】5 3 1 3.写出下列程序段的输出结果:________________。 #include <stdio.h> main() { int sum = 0; int i = 0; while(i < 5) { if(i % 2 == 0) sum += i; i++; } printf("sum=%d", sum); } 【答案】sum=6 4.写出下列程序段的输出结果:________________。 #include <stdio.h> main() { int a = 6; while(a % 2 == 0) { printf("%d ", a); a /= 2; } } 【答案】6 3 5.写出下列程序段的输出结果:________________。 #include <stdio.h> main() { int m = 7; while(m % 3 != 0) { m--; } printf("%d",m);} 【答案】6 6.写出下列程序段的输出结果:________________。 #include <stdio.h> main() { int x = 4; while(!(x <= 6)) { x++; } printf("%d",x); } 【答案】4 7.写出下列程序段的输出结果:________________。 #include <stdio.h> main() { int p = 12; while(p > 5) { if(p % 4 == 0) { p = p / 4; } p--; } printf("%d",p); } 【答案】5 8.写出下列程序段的输出结果:________________。 #include <stdio.h> main() { int a = 1, b = 1, c, i = 3; while (i <= 5) { c = a + b; a = b; b = c; i++; } printf("%d", b); } 【答案】5 9.写出下列程序段的输出结果:________________。 #include <stdio.h> main() { int n = 100; while (n > 10) n = n % 10 + n / 10; printf("%d", n); } 【答案】10 10.写出下列程序段的输出结果:________________。 #include <stdio.h> main() { int n = 8; int count = 0; while (n) { n = n >> 1; count++; } printf("%d", count); } 【答案】4 四、程序填空题(根据题意,将空缺的语句补上) 1.下列程序的功能是计算 1~3 的阶乘(1!、2!、3!),请补充完整: #include <stdio.h> main() { int n = 1; int fact = 1; while(n <= 3) { fact *= n; printf("%d! = %d ", n, fact); ______; } } 【答案】n++(或 n += 1) 2.下列程序的功能是输出 2、4、6(1~6 中的偶数),请补充完整: #include <stdio.h> main() { int i = 2; while(i <= 6) { printf("%d ", i); ______; } } 【答案】i += 2(或 i = i + 2) 3.下列程序的功能是:找出 10 以内第一个能被 4 整除的正整数 #include <stdio.h> main() { int i = 1; while(i <= 10) { if(__________) break; i++; } printf("%d",i); } 【答案】i % 4 == 0 4.程序的功能是:求 1-1/2+1/3...-1/100 的值。 int i = 1; double sum = 0.0; int sign = 1; while (i <= 100) { sum += sign * (1.0 / i); ______; i++; } 【答案】sign = -sign 5.下列程序的功能:寻找水仙花数(三位数)。 #include <stdio.h> main() { int i = 100, a, b, c; while (i < 1000) { a = i / 100; b = (i / 10) % 10; c = i % 10; if (______) printf("%d", i); i++; } } 【答案】a*a*a + b*b*b + c*c*c == i 五、编程题。 1. 编写程序,使用 while 循环统计用户输入的一串字符中元音字母(a、e、i、o、u,不区分大小写)的个数,以换行符结束输入。 【参考代码】 #include <stdio.h> main() { char ch; int count = 0; printf("请输入一串字符(以换行结束):"); ch = getchar(); while(ch != ' ') { if(ch == 'a' || ch == 'e' || ch == 'i' || ch == 'o' || ch == 'u' || ch == 'A' || ch == 'E' || ch == 'I' || ch == 'O' || ch == 'U') count++; ch = getchar(); } printf("元音字母的个数为:%d", count); } 2.编写程序,使用 while 循环计算 1~n 中所有奇数的和(n 由用户输入,如 n=5 时输出 9)。 【参考代码】 #include <stdio.h> main() { int n, sum = 0; int i = 1; printf("请输入一个正整数n:"); scanf("%d", &n); while(i <= n) { if(i % 2 != 0) sum += i; i++; } printf("1~n中所有奇数的和为:%d", sum); } 3.输入若干整数,以正数结束输入,使用 while 循环统计一共输入了多少个负数。 【参考代码】 #include <stdio.h> main() { int num,cnt=0; scanf("%d",&num); while(num <= 0) { if(num < 0) cnt++; scanf("%d",&num); } printf("负数个数:%d",cnt); } 4.猴子采摘了若干个桃子,每天都会吃掉一部分桃子。 规律如下: 每天吃掉当天现有桃子数量的一半,并且额外再多吃 1 个。 猴子连续吃了 9 天,到第 10 天清晨时,发现只剩下 1 个桃子。 请利用 while 循环 编写程序,逆向推算并输出猴子第一天一共摘下多少个桃子。 【参考代码】 #include <stdio.h> main() { int day = 9; // 从第1天推到第9天(第10天已知) int peaches = 1; // 第10天的数量 while (day > 0) { peaches = (peaches + 1) * 2; day--; } printf("%d", peaches); } 5.编程实现:输入两个正整数,求出两个数的最大公约数和最小公倍数。 【参考代码】 #include <stdio.h> main() { int a, b, temp, original_a, original_b; scanf("%d %d", &a, &b); original_a = a; original_b = b; // 辗转相除法 while (b != 0) { temp = a % b; a = b; b = temp; } // 此时a为最大公约数 int lcm = (original_a * original_b) / a; printf("GCD: %d, LCM: %d", a, lcm); } 原创精品资源学科网独家享有版权,侵权必究! 学科网(北京)股份有限公司 $ 5.1与5.2节:循环的概念与while语句 一、单项选择题 1.下列关于循环结构的描述中,正确的是( ) A. 循环结构只能处理固定次数的重复操作 B. 循环结构是程序中实现重复执行某段代码的控制结构 C. C 语言中循环结构的执行顺序一定是先执行循环体再判断条件 D. 循环结构中不能嵌套其他控制语句 2.若int i = 1; while(i < 5) {i++;},则循环体执行的次数是() A. 3 次 B. 4 次 C. 5 次 D. 6 次 3.下列 while 循环中,属于死循环的是() A. int i=0; while(i<3) {i++;} B. int i=1; while(i>0) {i--;} C. int i=1; while(1) {break;} D. int i=0; while(1) {i++;} 4.执行int i=3; while(i-- > 0) printf("%d", i);的输出结果是() A. 321 B. 210 C. 3210 D. 21 5.若int a=5; while(a>0) {printf("%d", a); a-=2;},则循环体执行的次数是() A. 2 次 B. 3 次 C. 4 次 D. 5 次 6.若int i=0; while(i<3) {i++;},下列说法正确的是() A. 循环体执行 3 次,结束后 i 的值为 3 B. 循环体执行 2 次,结束后 i 的值为 3 C. 循环体执行 3 次,结束后 i 的值为 2 D. 循环体执行 2 次,结束后 i 的值为 2 7.执行int x=0; while(!x) {x++; printf("%d", x);}的输出结果是() A. 1 B. 0 C. 无输出 D. 死循环输出 111… 8.若int n=10; while(n>5) {n--;},循环结束后 n 的值是() A. 4 B. 5 C. 6 D. 9 9.执行int a=1, b=3; while(a<b) {a++; b--;},循环结束后 a 和 b 的值分别是() A. a=2, b=2 B. a=3, b=1 C. a=1, b=3 D. a=2, b=1 10.若int i=5; while(i>0) {printf("%d", i); i-=2;},则输出结果是() A. 531 B. 53 C. 31 D. 5 二、填空题。 1.C 语言中,while 循环的控制条件表达式的值为______时,执行循环体;值为______时,结束循环。 2.若int i=0; while(i<5) {i++;},循环结束后 i 的值为___________。 3.执行int sum=0, i=1; while(i<=3) {sum += i; i++;},sum 的值为___________。 4.若int a=10; while(a>0) {a -= 3;},循环体执行的次数是______次。 5.while 循环的一般格式为:while(______) {循环体语句}。 6.执行int x=3; while(x--) {;},循环结束后 x 的值为___________。 7.执行int n=5; while(n) {printf("%d", n); n--;},输出结果为___________。 8.若int i=1; while(i<4) {printf("%d", i); i+=2;},循环体执行______次,输出结果为___________。 9.执行int a=2, b=4; while(a<b) {a++; b--;},循环结束后 a 的值为______,b 的值为______。 10.执行int sum=0; int i=5; while(i>0) {sum += i; i--;},sum 的值为___________。 三、阅读程序题。 1.写出下列程序段的输出结果:________________。 #include <stdio.h> main() { int i = 1; while(i <= 3) { printf("%d ", i); i++; } } 2.写出下列程序段的输出结果:________________。 #include <stdio.h> main() { int a = 5; while(a > 0) { printf("%d ", a); a -= 2; } } 3.写出下列程序段的输出结果:________________。 #include <stdio.h> main() { int sum = 0; int i = 0; while(i < 5) { if(i % 2 == 0) sum += i; i++; } printf("sum=%d", sum); } 4.写出下列程序段的输出结果:________________。 #include <stdio.h> main() { int a = 6; while(a % 2 == 0) { printf("%d ", a); a /= 2; } } 5.写出下列程序段的输出结果:________________。 #include <stdio.h> main() { int m = 7; while(m % 3 != 0) { m--; } printf("%d",m);} 6.写出下列程序段的输出结果:________________。 #include <stdio.h> main() { int x = 4; while(!(x <= 6)) { x++; } printf("%d",x); } 7.写出下列程序段的输出结果:________________。 #include <stdio.h> main() { int p = 12; while(p > 5) { if(p % 4 == 0) { p = p / 4; } p--; } printf("%d",p); } 8.写出下列程序段的输出结果:________________。 #include <stdio.h> main() { int a = 1, b = 1, c, i = 3; while (i <= 5) { c = a + b; a = b; b = c; i++; } printf("%d", b); } 9.写出下列程序段的输出结果:________________。 #include <stdio.h> main() { int n = 100; while (n > 10) n = n % 10 + n / 10; printf("%d", n); } 10.写出下列程序段的输出结果:________________。 #include <stdio.h> main() { int n = 8; int count = 0; while (n) { n = n >> 1; count++; } printf("%d", count); } 四、程序填空题(根据题意,将空缺的语句补上) 1.下列程序的功能是计算 1~3 的阶乘(1!、2!、3!),请补充完整: #include <stdio.h> main() { int n = 1; int fact = 1; while(n <= 3) { fact *= n; printf("%d! = %d ", n, fact); ______; } } 2.下列程序的功能是输出 2、4、6(1~6 中的偶数),请补充完整: #include <stdio.h> main() { int i = 2; while(i <= 6) { printf("%d ", i); ______; } } 3.下列程序的功能是:找出 10 以内第一个能被 4 整除的正整数 #include <stdio.h> main() { int i = 1; while(i <= 10) { if(__________) break; i++; } printf("%d",i); } 4.程序的功能是:求 1-1/2+1/3...-1/100 的值。 int i = 1; double sum = 0.0; int sign = 1; while (i <= 100) { sum += sign * (1.0 / i); ______; i++; } 5.下列程序的功能:寻找水仙花数(三位数)。 #include <stdio.h> main() { int i = 100, a, b, c; while (i < 1000) { a = i / 100; b = (i / 10) % 10; c = i % 10; if (______) printf("%d", i); i++; } } 五、编程题。 1. 编写程序,使用 while 循环统计用户输入的一串字符中元音字母(a、e、i、o、u,不区分大小写)的个数,以换行符结束输入。 2.编写程序,使用 while 循环计算 1~n 中所有奇数的和(n 由用户输入,如 n=5 时输出 9)。 3.输入若干整数,以正数结束输入,使用 while 循环统计一共输入了多少个负数。 4.猴子采摘了若干个桃子,每天都会吃掉一部分桃子。 规律如下: 每天吃掉当天现有桃子数量的一半,并且额外再多吃 1 个。 猴子连续吃了 9 天,到第 10 天清晨时,发现只剩下 1 个桃子。 请利用 while 循环 编写程序,逆向推算并输出猴子第一天一共摘下多少个桃子。 5.编程实现:输入两个正整数,求出两个数的最大公约数和最小公倍数。 原创精品资源学科网独家享有版权,侵权必究! 学科网(北京)股份有限公司 $

资源预览图

第5章 第1、2节:循环的概念与while语句(练习)-《C语言程序设计》(电子工业出版社)上好课
1
第5章 第1、2节:循环的概念与while语句(练习)-《C语言程序设计》(电子工业出版社)上好课
2
第5章 第1、2节:循环的概念与while语句(练习)-《C语言程序设计》(电子工业出版社)上好课
3
所属专辑
由于学科网是一个信息分享及获取的平台,不确保部分用户上传资料的 来源及知识产权归属。如您发现相关资料侵犯您的合法权益,请联系学科网,我们核实后将及时进行处理。