任务14:do……while循环结构程序设计 《编程语言-C语言》45分钟专题训练
|
2份
|
21页
|
124人阅读
|
2人下载
内容正文:
湖南省职教高考《编程语言—C语言》45分钟专题训练专辑,共43份试卷。试卷命题与高考紧密相关,精选具有代表性和典型性的高考常考题。旨在帮助学生系统地复习和巩固计算机类理论知识,熟悉高考题型和命题规律,提高解题能力和应试技巧,为高考取得优异成绩打下坚实的基础,本训练卷适用于即将参加计算机类高考的学生。与本专辑配套的还有湖南省职教高考《计算机应用基础》《计算机组装与维护》《计算机网络技术》45分钟专题训练专辑,欢迎同学和老师们下载使用。
《编程语言—C语言》
项目三: 循环结构程序设计
第14卷: do…while循环结构程序设计
时间:45分钟 总分:100分
班级___________ 姓名__________ 学号__________ 成绩________
一、选择题(共23小题,每小题2分,共46分)
1.在C语言中,while和do-while循环的主要区别是( )
A.do-while的循环体至少无条件执行一次
B.while的循环控制条件比do-while的循环控制条件严格
C.do-while允许从外部转到循环体内部
D.while循环体不能是复合语句
【答案】A
2.下列有关do-while循环的叙述中,正确的一项是( )
A.C语言中不能使用do-while语句构成的循环
B.do-while语句构成的循环必须用break语句才能退出循环
C.do-while语句构成的循环,当while语句中的表达式值为非零时结束循环
D.do-while语句构成的循环,当while语句中的表达式值为零时结束循环
【答案】D
3.执行程序段: int x=-1;do{x=x*x;}while(!x);,则( )
A.是死循环 B.执行循环体一次
C.执行循环体两次 D.循环体一次也不执行
【答案】B
4.下列有关while和do-while循环的叙述中,正确的一项是( )
A.while、do-while循环中的循环体语句都至少被执行一次
B.do-while循环中,while(表达式)后面的分号可以省略
C.while循环体中,一定要有能使while后面表达式的值为“假”的操作
D.do-while循环中,根据用户需求,可以省略while
【答案】C
5.执行以下程序段后的输出结果是( )
int x=3;do{printf("%d",x-=2);}while(--x);
A.1 B.3 C.30 D.1-2
【答案】A
6.下列选项中,能够正确计算:1×2×3×4×……×10的程序段是( )
A.do{i=1;s=1;s*=i;i++;}while(i<=10);
B.do{i=1;s=0;s*=i;i++;}while(i<=10);
C.i=1;s=1;dp{s=s*i;i++;}while(i<=10);
D.i=1;s=0;dp{s=s*i;i++;}while(i<=10);
【答案】C。注意,累乘置1,累加置0。
7.执行以下程序段的输出结果是( )
int a=1,b=10;do{b-=a;a++;}while(b--<0);printf("%d,%d
",a,b);
A.3,11 B.2,8 C.1,-1 D.4,9
【答案】B
8.执行以下程序段的输出结果是( )
int y=10;do{y--;}while(y);printf("%d
",y );
A.0 B.1 C.9 D.-1
【答案】A
9.执行以下程序段后的输出结果是( )
int a=1,b=10;
do{b=b-a;a++;}while(b--<0);printf("%d",b);
A.9 B.8 C.-1 D.0
【答案】B
10.执行下列程序段后的输出结果是( )
int x=12,y=3;
do{x/=y--;}while(x>y);printf("%d",x);
A.1 B.2 C.3 D.程序运行有误
【答案】D。循环到了第三次之后,y=0,除法有误,分母不能为0。
11.下列程序段中,do…while语句的循环结束条件是( )
int n=0,p;
do{scanf("%d",&p);n++;}while(p!=12345&&n<3);
A.p的值不等于12345且n的值小于3
B.p的值等于12345且n的值大于或等于3
C.p的值不等于12345或者n的值小于3
D.p的值等于12345或者n的值大于或等于3
【答案】D
12.以下程序段的输出结果是( )
int n=1,p=10;
do{n++;}while(n<p);printf("%d",n);
A.10 B.8 C.9 D.11
【答案】A
13.执行以下程序段的输出结果是( )
int s=0,a=4,n=1;
do{s++;a--;}while(a==n);
printf("%d,%d",s,a);
A.4,0 B.1,3 C.3,1 D.4,-1
【答案】B
14.以下程序段能够正确计算: 的程序段是( )
A.i=1;s=0;do{s=s*i;i++;}while(i<=50);
B.i=1;s=1;do{s=s*i;i++;}while(i<50);
C.i=1;s=1;do{i++; s=s*i;}while(i<=50);
D.i=1;s=1;do{i++; s=s*i;}while(i<50);
【答案】D
15.以下程序段的输出结果是( )
int i=1,s=1;do{s=s+i;i++;}while(i<=12);printf("%d",s);
A.79 B.67 C.78 D.80
【答案】A
16.以下程序段中,循环次数不超过10次的是( )
A. int i=10; do {i=i+1;}while(i<0);
B. int i=5; do {i+=1;}while(i>0);
C. int i=1; do {i=i+2;}while(i!=10);
D. int i=6; do {i=i-2;}while(i!=1);
【答案】A
17.以下程序段能够实现5!的程序段是( )
A. int fac=1,k=0;do{k++;fac*=k;}while(k<5);
B. int fac=0,k=1;do{fac*=k; k++;}while(k<5);
C. int fac=1,k=1;do{k++;fac*=k;}while(k<=5);
D. int fac=1,k=0;do{fac*=k; k++;}while(k<5);
【答案】A
18.执行以下程序段的输出结果是( )
int i=0;
do printf("%d,",i);
while(i++);
printf("%d",i);
A.0,1 B.0,0 C.1,1 D.有语法错误
【答案】A
19.执行以下程序段的输出结果是( )
int a=-2,b=0;
do{++b;}while(a++);
printf("%d,%d",a,b);
A.2,3 B.0,2 C.1,2 D.1,3
【答案】D
20.执行以下程序段的输出结果是( )
int x=23;
do{printf("%d",x--);}while(!x);
A.321 B.21 C.23 D.32
【答案】C
21.执行以下程序段的输出结果是( )
int i=0,sum=1;
do{sum+=i++;}while(i<6);
printf("%d",sum);
A.22 B.18 C.20 D.16
【答案】D
22.执行以下程序段的输出结果是( )
int sum=0,x=5;
do{sum+=x;}while(!--x);
printf("%d",sum);
A.0 B.5 C.14 D.15
【答案】B
23.执行以下程序段时输入:abcdefg0,输出结果是( )
char c;
do{c=getchar( );putchar(c+2);}while(c!='0');
A.cdefghi2 B.cdefghi C.cdefghi1 D.有语法错
【答案】A
二、程序运行结果题(本题共7小题,每题3分,共21分)
24.以下程序的运行结果是( )
#include <stdio.h>
#include<conio.h>
main()
{char c;
int chl=0,ch2=0;
do{switch(c=getchar( ))
{case 'a':chl+=1;
case 't':case 'T':ch2+=1;
default:chl+=1;ch2+=1;}}
while(c!='
');
printf("chl=%d,ch2=%d
",chl,ch2);
getch();}
运行时输入:2025Test<回车>
【答案】chl=9,ch2=11
25.以下程序的运行结果是( )
#include <stdio.h>
#include<conio.h>
main()
{int s=0,a=1,n;
scanf("%d",&n);
do
{s=s+1;
a=a-2;
}while(a!=n);
printf("%d",s);
getch();}
运行程序时输入:-3<回车>
【答案】2
26.以下程序的运行结果是( )
#include <stdio.h>
#include<conio.h>
main()
{int a=1,b=175;
do
{a*=b%10;
b/=10;}while(b);
printf("%d",a);
getch();}
【答案】35
27.以下程序的运行结果是( )
#include <stdio.h>
#include<conio.h>
main()
{int a=1,b=0;
do
{switch(a)
{case 1:b+=1;
case 2:b+=2;
default:b+=3;}
b=a+b;}while(!b);
printf("a=%d,b=%d",a,b);
getch();}
【答案】a=1,b=7
28.以下程序的运行结果是( )
#include <stdio.h>
#include<conio.h>
main()
{int i=5;
do
{if(i%3==1)
if(i%5==2)
{printf("*%d",i);}
i++;}while(i<20);
printf("
");;
getch();}
【答案】*7
29.以下程序的运行结果是( )
#include <stdio.h>
#include<conio.h>
main()
{int x=0,y=6;
do
{while(--y) x++;}while(y--);
printf("%d,%d
",x,y);
getch();}
【答案】5,-1
30.以下程序的运行结果是( )
#include <stdio.h>
#include<conio.h>
main()
{int a,b,m=1,n=1;
scanf("%d%d",&a,&b);
do
{if(a>0) { m=2*n;b++;}
else { n=m+n;a+=2;b++;}} while(a==b);
printf ("m=%d n=%d",m,n);
getch();}
运行程序时输入:-2 0<回车>
【答案】m=1 n=2
三、阅读程序,修改程序中的错误,不得增行或删行,也不得更改程序结构。请指出错误代码所在的行号,并给出该行修改后的程序代码。(每处3分,共9分)
31.下列程序的功能是计算100~999范围内的水仙花数。程序中有三处错误,请改正。
L1 #include <stdio.h>
L2 #include<conio.h>
L3 main()
L4 {
L5 int i=100;
L6 int a,b,c;
L7 do
L8 {
L9 a=i/100;
L10 b=i/10%10;
L11 c=i/10;
L12 if(a*a*a+b*b*b+c*c*c=i)
L13 {
L14 printf("水仙花数:%d
",i);
L15 }
L16 i+1;
L17 }while(i<=999);
L18 getch();}
答案:
L11 c=i%10;
L12 if(a*a*a+b*b*b+c*c*c==i)
L16 i++;
四、程序填空。按照题目要求,将正确的内容填入相应位置,使得程序完整(每空3分,共24分)
32.角谷猜想在西方常被称为西拉古斯猜想,其内容是:任给一个自然数,若为偶数则除以2,若为奇数则乘以3再加1,这样得到一个新的自然数之后再按照前面的法则继续演算,若干次以后得到的结果必然是1。请填空。
#include <stdio.h>
#include<conio.h>
main()
{ int n,count=0;
printf("请输入一个自然数:");
scanf("%d",&n);
do
{if(n%2)
{n=【1】;
printf("[%d]:%d*3+1=%d
",++count,【2】 ,n);}
else
{n/=2;
printf("[%d]:%d/2=%d
",++count,【3】 ,n);}
}while(【4】);
getch();}
答案:①n*3+1 ②(n-1)/3 ③2*n ④n!=1
33.下列程序的功能是:每个苹果0.8元,第一天买2个苹果;从第二天开始,每天买前一天的2倍,直至购买的苹果个数达到不超过100的最大值,那么每天平均花费多少钱?请填空。
#include <stdio.h>
#include<conio.h>
main()
{ int day=0,buy=2;
float sum=0.0,ave;
do
{sum+=【1】;
day++;
buy=【2】;
}while(【3】);
ave=【4】;
printf("%f",ave);
getch();}
答案:①0.8*buy ②buy*2 ③buy<=100 ④sum/day
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
$$
湖南省职教高考《编程语言—C语言》45分钟专题训练专辑,共43份试卷。试卷命题与高考紧密相关,精选具有代表性和典型性的高考常考题。旨在帮助学生系统地复习和巩固计算机类理论知识,熟悉高考题型和命题规律,提高解题能力和应试技巧,为高考取得优异成绩打下坚实的基础,本训练卷适用于即将参加计算机类高考的学生。与本专辑配套的还有湖南省职教高考《计算机应用基础》《计算机组装与维护》《计算机网络技术》45分钟专题训练专辑,欢迎同学和老师们下载使用。
《编程语言—C语言》
项目三: 循环结构程序设计
第14卷: do…while循环结构程序设计
时间:45分钟 总分:100分
班级___________ 姓名__________ 学号__________ 成绩________
一、选择题(共23小题,每小题2分,共46分)
1.在C语言中,while和do-while循环的主要区别是( )
A.do-while的循环体至少无条件执行一次
B.while的循环控制条件比do-while的循环控制条件严格
C.do-while允许从外部转到循环体内部
D.while循环体不能是复合语句
2.下列有关do-while循环的叙述中,正确的一项是( )
A.C语言中不能使用do-while语句构成的循环
B.do-while语句构成的循环必须用break语句才能退出循环
C.do-while语句构成的循环,当while语句中的表达式值为非零时结束循环
D.do-while语句构成的循环,当while语句中的表达式值为零时结束循环
3.执行程序段: int x=-1;do{x=x*x;}while(!x);,则( )
A.是死循环 B.执行循环体一次
C.执行循环体两次 D.循环体一次也不执行
4.下列有关while和do-while循环的叙述中,正确的一项是( )
A.while、do-while循环中的循环体语句都至少被执行一次
B.do-while循环中,while(表达式)后面的分号可以省略
C.while循环体中,一定要有能使while后面表达式的值为“假”的操作
D.do-while循环中,根据用户需求,可以省略while
5.执行以下程序段后的输出结果是( )
int x=3;do{printf("%d",x-=2);}while(--x);
A.1 B.3 C.30 D.1-2
6.下列选项中,能够正确计算:1×2×3×4×……×10的程序段是( )
A.do{i=1;s=1;s*=i;i++;}while(i<=10);
B.do{i=1;s=0;s*=i;i++;}while(i<=10);
C.i=1;s=1;dp{s=s*i;i++;}while(i<=10);
D.i=1;s=0;dp{s=s*i;i++;}while(i<=10);
7.执行以下程序段的输出结果是( )
int a=1,b=10;do{b-=a;a++;}while(b--<0);printf("%d,%d
",a,b);
A.3,11 B.2,8 C.1,-1 D.4,9
8.执行以下程序段的输出结果是( )
int y=10;do{y--;}while(y);printf("%d
",y );
A.0 B.1 C.9 D.-1
9.执行以下程序段后的输出结果是( )
int a=1,b=10;
do{b=b-a;a++;}while(b--<0);printf("%d",b);
A.9 B.8 C.-1 D.0
10.执行下列程序段后的输出结果是( )
int x=12,y=3;
do{x/=y--;}while(x>y);printf("%d",x);
A.1 B.2 C.3 D.程序运行有误
11.下列程序段中,do…while语句的循环结束条件是( )
int n=0,p;
do{scanf("%d",&p);n++;}while(p!=12345&&n<3);
A.p的值不等于12345且n的值小于3
B.p的值等于12345且n的值大于或等于3
C.p的值不等于12345或者n的值小于3
D.p的值等于12345或者n的值大于或等于3
12.以下程序段的输出结果是( )
int n=1,p=10;
do{n++;}while(n<p);printf("%d",n);
A.10 B.8 C.9 D.11
13.执行以下程序段的输出结果是( )
int s=0,a=4,n=1;
do{s++;a--;}while(a==n);
printf("%d,%d",s,a);
A.4,0 B.1,3 C.3,1 D.4,-1
14.以下程序段能够正确计算: 的程序段是( )
A.i=1;s=0;do{s=s*i;i++;}while(i<=50);
B.i=1;s=1;do{s=s*i;i++;}while(i<50);
C.i=1;s=1;do{i++; s=s*i;}while(i<=50);
D.i=1;s=1;do{i++; s=s*i;}while(i<50);
15.以下程序段的输出结果是( )
int i=1,s=1;do{s=s+i;i++;}while(i<=12);printf("%d",s);
A.79 B.67 C.78 D.80
16.以下程序段中,循环次数不超过10次的是( )
A. int i=10; do {i=i+1;}while(i<0);
B. int i=5; do {i+=1;}while(i>0);
C. int i=1; do {i=i+2;}while(i!=10);
D. int i=6; do {i=i-2;}while(i!=1);
17.以下程序段能够实现5!的程序段是( )
A. int fac=1,k=0;do{k++;fac*=k;}while(k<5);
B. int fac=0,k=1;do{fac*=k; k++;}while(k<5);
C. int fac=1,k=1;do{k++;fac*=k;}while(k<=5);
D. int fac=1,k=0;do{fac*=k; k++;}while(k<5);
18.执行以下程序段的输出结果是( )
int i=0;
do printf("%d,",i);
while(i++);
printf("%d",i);
A.0,1 B.0,0 C.1,1 D.有语法错误
19.执行以下程序段的输出结果是( )
int a=-2,b=0;
do{++b;}while(a++);
printf("%d,%d",a,b);
A.2,3 B.0,2 C.1,2 D.1,3
20.执行以下程序段的输出结果是( )
int x=23;
do{printf("%d",x--);}while(!x);
A.321 B.21 C.23 D.32
21.执行以下程序段的输出结果是( )
int i=0,sum=1;
do{sum+=i++;}while(i<6);
printf("%d",sum);
A.22 B.18 C.20 D.16
22.执行以下程序段的输出结果是( )
int sum=0,x=5;
do{sum+=x;}while(!--x);
printf("%d",sum);
A.0 B.5 C.14 D.15
23.执行以下程序段时输入:abcdefg0,输出结果是( )
char c;
do{c=getchar( );putchar(c+2);}while(c!='0');
A.cdefghi2 B.cdefghi C.cdefghi1 D.有语法错
二、程序运行结果题(本题共7小题,每题3分,共21分)
24.以下程序的运行结果是( )
#include <stdio.h>
#include<conio.h>
main()
{char c;
int chl=0,ch2=0;
do{switch(c=getchar( ))
{case 'a':chl+=1;
case 't':case 'T':ch2+=1;
default:chl+=1;ch2+=1;}}
while(c!='
');
printf("chl=%d,ch2=%d
",chl,ch2);
getch();}
运行时输入:2025Test<回车>
25.以下程序的运行结果是( )
#include <stdio.h>
#include<conio.h>
main()
{int s=0,a=1,n;
scanf("%d",&n);
do
{s=s+1;
a=a-2;
}while(a!=n);
printf("%d",s);
getch();}
运行程序时输入:-3<回车>
26.以下程序的运行结果是( )
#include <stdio.h>
#include<conio.h>
main()
{int a=1,b=175;
do
{a*=b%10;
b/=10;}while(b);
printf("%d",a);
getch();}
27.以下程序的运行结果是( )
#include <stdio.h>
#include<conio.h>
main()
{int a=1,b=0;
do
{switch(a)
{case 1:b+=1;
case 2:b+=2;
default:b+=3;}
b=a+b;}while(!b);
printf("a=%d,b=%d",a,b);
getch();}
28.以下程序的运行结果是( )
#include <stdio.h>
#include<conio.h>
main()
{int i=5;
do
{if(i%3==1)
if(i%5==2)
{printf("*%d",i);}
i++;}while(i<20);
printf("
");;
getch();}
29.以下程序的运行结果是( )
#include <stdio.h>
#include<conio.h>
main()
{int x=0,y=6;
do
{while(--y) x++;}while(y--);
printf("%d,%d
",x,y);
getch();}
30.以下程序的运行结果是( )
#include <stdio.h>
#include<conio.h>
main()
{int a,b,m=1,n=1;
scanf("%d%d",&a,&b);
do
{if(a>0) { m=2*n;b++;}
else { n=m+n;a+=2;b++;}} while(a==b);
printf ("m=%d n=%d",m,n);
getch();}
运行程序时输入:-2 0<回车>
三、阅读程序,修改程序中的错误,不得增行或删行,也不得更改程序结构。请指出错误代码所在的行号,并给出该行修改后的程序代码。(每处3分,共9分)
31.下列程序的功能是计算100~999范围内的水仙花数。程序中有三处错误,请改正。
L1 #include <stdio.h>
L2 #include<conio.h>
L3 main()
L4 {
L5 int i=100;
L6 int a,b,c;
L7 do
L8 {
L9 a=i/100;
L10 b=i/10%10;
L11 c=i/10;
L12 if(a*a*a+b*b*b+c*c*c=i)
L13 {
L14 printf("水仙花数:%d
",i);
L15 }
L16 i+1;
L17 }while(i<=999);
L18 getch();}
四、程序填空。按照题目要求,将正确的内容填入相应位置,使得程序完整(每空3分,共24分)
32.角谷猜想在西方常被称为西拉古斯猜想,其内容是:任给一个自然数,若为偶数则除以2,若为奇数则乘以3再加1,这样得到一个新的自然数之后再按照前面的法则继续演算,若干次以后得到的结果必然是1。请填空。
#include <stdio.h>
#include<conio.h>
main()
{ int n,count=0;
printf("请输入一个自然数:");
scanf("%d",&n);
do
{if(n%2)
{n=【1】;
printf("[%d]:%d*3+1=%d
",++count,【2】 ,n);}
else
{n/=2;
printf("[%d]:%d/2=%d
",++count,【3】 ,n);}
}while(【4】);
getch();}
33.下列程序的功能是:每个苹果0.8元,第一天买2个苹果;从第二天开始,每天买前一天的2倍,直至购买的苹果个数达到不超过100的最大值,那么每天平均花费多少钱?请填空。
#include <stdio.h>
#include<conio.h>
main()
{ int day=0,buy=2;
float sum=0.0,ave;
do
{sum+=【1】;
day++;
buy=【2】;
}while(【3】);
ave=【4】;
printf("%f",ave);
getch();}
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
$$