内容正文:
编写说明:重庆市高等职业教育分类考试专业综合理论测试-计算机类《C语言程序设计》考点双析卷专辑,依据省教育厅《重庆市高等职业教育分类考试专业综合理论测试计算机类考试说明》编写。“考点双析卷”即围绕一个考点,一份是老师的讲解卷一份是学生的练习卷,助力师生构建“讲练结合”的学习闭环,特别适用于重庆市高等职业教育分类考试第一轮高考复习教学。
本专辑第20卷精准对标重庆市考纲,考试内容及范围【C语言程序设计知识】:
(四)循环结构程序设计:while语句
重庆市高等职业教育分类考试 计算机类
《C语言程序设计》考点双析卷 第20卷
while语句 学生练习卷
时间:45分钟 总分:100分
班级_______ 姓名_______ 学号_______ 成绩_______
一、单项选择题(本大题共30小题,每题3分,共90分)
1.若要实现:total=1+2+3+4+5求和,以下程序段中,不正确的一项是( )
A.int i=1,total=1;while(i<5){total+=i;i+=1;}
B.int i=1,total=0;while(i<=5){total+=i;i+=1;}
C.int i=0,total=0;while(i<5){ i+=1;total+=i;}
D.int i=0,total=0;while(i<=5){total+=i;i+=1;}
【答案】A
2.设有以下程序,则下列叙述中,正确的一项是( )
#include<stdio.h>
main()
{……
while(getchar( )!=’
’);
……}
A.此while语句将无限循环
B.getchar( )不可以出现在while语句的条件表达式中
C.当执行此while语句时,只有按回车键程序才能继续执行
D.当执行此while语句时,按任意键程序就能继续执行
【答案】C
【详解】执行whiel语句时,当按下回车键跳出while循环,才能继续执行下一条语句。
3.对于:while(!E){…s…},若要执行循环体s,则E的取值应该为( )
A.E等于1 B.E不等于0 C.E不等于1 D.E等于0
【答案】D
4.要求通过while循环不断读入字符,当读入字母N时结束循环。若变量已正确定义,以下正确的程序段是( )
A.while((ch=getchar( ))!='N')printf("%c",ch);
B.while(ch=getchar( )='N')printf("%c",ch);
C.while(ch=getchar( )=='N')printf("%c",ch);
D.while((ch=getchar( ))=='N')printf("%c",ch);
【答案】A
5.执行以下程序段的输出结果是( )
int i=2;
while(i-->0)printf("%d",i);
printf("%d",i);
A.101 B.10 C.1 D.10-1
【答案】D
6.执行以下程序段的输出结果是( )
int i=1;while(i++<8);printf("%d",i);
A.7 B.8 C.9 D.10
【答案】C
7.执行以下程序段时输入:ABCdef
,则输出结果是( )
char ch;
while((ch=getchar())!='
')
{if(ch>='A'&&ch<='Z') ch=ch+32;
else if(ch>='a'&&ch<='z') ch=ch-32;
printf("%c",ch);}
printf("
");
A.ABCdef B.abcDEF C.abc D.DEF
【答案】B
8.执行以下程序段时输入:left?<回车>,输出结果是( )
main(){ char c;while((c=getchar( ))!='?') putchar(++c);getch();}
A.mfgu B.mfuh C.nfug D.mfuf
【答案】A
9.下列程序的功能是将从键盘输入的一对数,由从小到大排序输出。当输入一对相等数时结束循环,请选择填空( )
main()
{int a,b,t;scanf("%d%d",&a,&b);
while(【 】)
{ if(a>b){ t=a;a=b;b=t;}
printf("%d,%d
",a,b);
scanf("%d%d",&a,&b);}getch();}
A.a!=b B.!a=b C.a==b D.a=b
【答案】A
10.执行以下程序段的输出结果是( )
int a=3;while(a--)printf("%d",a);
A.210 B.321 C.32 D.21
【答案】A
11.执行以下程序段的输出结果是( )
int num=0;while(num<=2){num++;printf("%d",num++);}
A.12 B.1 C.13 D.135
【答案】C
12.执行以下程序段的输出结果是( )
int n=0;while(n++<=8);printf("%d",n);
A.7 B.8 C.9 D.10
【答案】D
13.执行以下程序段的输出结果是( )
int x,y;x=y=8;
while(x<15) y++,x+=++y;printf("%d,%d",y,x);
A.10,16 B.10,17 C.18,10 D.10,18
【答案】D
14.执行以下程序段的输出结果是( )
int a=1,b=2,c=3,t;
while(a<b<c) {t=a;a=b;b=t;c--;}printf("%d,%d,%d",a,b,c);
A.1,2,1 B.1,2,0 C.1,2,2 D.2,1,1
【答案】A
15.设有程序段:int x=0,s=0;while(!x!=0) s+=++x;printf("%d",s);,则输出结果为( )
A.0 B.1 C.死循环 D.while中的控制表达式非法
【答案】B
16.下列程序的功能是:从键盘输入一组字符,将其中的小写字母变成对应的大写字母后的第二个字母,其中,y变成A,z变成B。请选择填空。( )
main()
{char c;
while((c=getchar( ))!='
')
{if(c>='a'&&c<='z')
{c=【 】;
if(c>'Z'&&c<='Z'+2)c=c-26;}printf("%c",c);}getch();}
A.c-30 B.c-32 C.c+32 D.c+30
【答案】A
17.下列程序的功能是:从键盘输入2个数,由小到大排序输出。当输入的2个数是相等数时,结束循环。请选择填空。( )
main()
{int a,b,t;scanf("%d%d",&a,&b);
while(【 】)
{if(a>b){t=a;a=b;b=t;}
printf("%d,%d
",a,b);
scanf("%d%d",&a,&b);}getch();}
A.a==b B.a!=b C.a<b D.!(a!=b)
【答案】B
18.下列程序的功能是:计算100~1000中有多少个各位数字之和是5的数。请填空。( )
main()
{int i,s,k,count=0;
for(i=100;i<=1000;i++)
{s=0;k=i;
while(k!=0)
{s=s+k%10;
k=【 】;}
if(s!=5) continue;
else count++;}
printf("%d",count);getch();}
A.k/10 B.k%10 C.k%10/10 D.k/10%10
【答案】A
19.下列程序的功能是:求 的值。请选择填空。( )
main()
{int i=2;float sum=1;
while(i<=50)
{sum=sum+1.0/i;i=【 】;}
printf("sum=%f",sum);
getch();}
A.i++ B.i+2 C.i*i D.i--
【答案】B
20.设以下变量均已正确定义,以下不能统计出一行中输入字符个数(不包含回车符)的程序段是( )
A.n=0;char ch;while((ch=getchar( ))!='
') n++;
B.n=0;while(getchar( )!='
') n++;
C.for(n=0;getchar( )!= '
';n++);
D.n=0;for(ch=getchar( )!= '
';n++);
【答案】D
【详解】省略表达式1可省,但不可省略其分号。
21.以下选项中,不构成无限循环的语句或语句组是( )
A.n=0;do{++n;}while(n<=0); B.n=0;while(1){n++;}
C.n=10;while(n);{n--;} D.for(n=0,i=1; ;i++) n+=i;
【答案】A
22.在C语言中,循环语句while和do…while的主要区别是( )
A.do…while的循环体不能是复合语句
B.do…while的循环语句不允许嵌套
C.while的循环控制条件更严格
D.do…while的循环体至少无条件执行一次
【答案】D
23.下列不属于无限循环的语句是( )
A.for(y=0,x=l;x>++y;x=++i) i=x; B.for(;;x++=i);
C.while (1) { x++;} D.for(i=10 ;;i--) sum+=i;
【答案】A
24.设有程序段:int k=10;while(k=0) k=k-1;则下列描述中正确的一项是( )
A.while循环执行10次 B.循环是无限循环
C.循环体语句一次也不执行 D.循环体语句执行一次
【答案】C
25.执行以下程序段的输出结果是( )
int n=2,k=0;while(k++&&n++>2);printf("%d,%d",k,n);
A.0,2 B.1,2 C.1,3 D.死循环
【答案】B
26.执行以下程序段后的输出结果是( )
int a=-2,b=0;while(a++) ++b;printf("%d,%d",a,b);
A.1,2 B.0,2 C.1,3 D.2,3
【答案】A
27.执行以下程序段后的输出结果是( )
int a=1,b=2;
while(a<6)
{b=b+a;a=a+2;b=b%10;}printf("%d,%d",a,b);
A.5,11 B.7,1 C.7,11 D.6,1
【答案】B
28.执行以下程序段后的输出结果是( )
int a=7;while(a--);printf("%d",a);
A.-1 B.0 C.1 D.7
【答案】A
29.执行以下程序段后的输出结果是( )
int k=5;
while(--k)printf("%d",k-=3);
A.1 B.2 C.4 D.0
【答案】A
30.执行以下程序段的输出结果是( )
int y=10;
while(y--);
printf("y=%d",y);
A.y=0 B.y=-1 C.y=1 D.while构成无限循环
【答案】B
二、程序设计题(本大题共1小题,每题10分,共10分)
31.代码实现计算两个正整数的最大公约数
要求:
输入两个正整数 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;
}
试卷第6页,共6页
试卷第5页,共6页
学科网(北京)股份有限公司
$
编写说明:重庆市高等职业教育分类考试专业综合理论测试-计算机类《C语言程序设计》考点双析卷专辑,依据省教育厅《重庆市高等职业教育分类考试专业综合理论测试计算机类考试说明》编写。“考点双析卷”即围绕一个考点,一份是老师的讲解卷一份是学生的练习卷,助力师生构建“讲练结合”的学习闭环,特别适用于重庆市高等职业教育分类考试第一轮高考复习教学。
本专辑第20卷精准对标重庆市考纲,考试内容及范围【C语言程序设计知识】:
(四)循环结构程序设计:while语句
重庆市高等职业教育分类考试 计算机类
《C语言程序设计》考点双析卷 第20卷
while语句 学生练习卷
时间:45分钟 总分:100分
班级_______ 姓名_______ 学号_______ 成绩_______
一、单项选择题(本大题共30小题,每题3分,共90分)
1.若要实现:total=1+2+3+4+5求和,以下程序段中,不正确的一项是( )
A.int i=1,total=1;while(i<5){total+=i;i+=1;}
B.int i=1,total=0;while(i<=5){total+=i;i+=1;}
C.int i=0,total=0;while(i<5){ i+=1;total+=i;}
D.int i=0,total=0;while(i<=5){total+=i;i+=1;}
2.设有以下程序,则下列叙述中,正确的一项是( )
#include<stdio.h>
main()
{……
while(getchar( )!=’
’);
……}
A.此while语句将无限循环
B.getchar( )不可以出现在while语句的条件表达式中
C.当执行此while语句时,只有按回车键程序才能继续执行
D.当执行此while语句时,按任意键程序就能继续执行
3.对于:while(!E){…s…},若要执行循环体s,则E的取值应该为( )
A.E等于1 B.E不等于0 C.E不等于1 D.E等于0
4.要求通过while循环不断读入字符,当读入字母N时结束循环。若变量已正确定义,以下正确的程序段是( )
A.while((ch=getchar( ))!='N')printf("%c",ch);
B.while(ch=getchar( )='N')printf("%c",ch);
C.while(ch=getchar( )=='N')printf("%c",ch);
D.while((ch=getchar( ))=='N')printf("%c",ch);
5.执行以下程序段的输出结果是( )
int i=2;
while(i-->0)printf("%d",i);
printf("%d",i);
A.101 B.10 C.1 D.10-1
6.执行以下程序段的输出结果是( )
int i=1;while(i++<8);printf("%d",i);
A.7 B.8 C.9 D.10
7.执行以下程序段时输入:ABCdef
,则输出结果是( )
char ch;
while((ch=getchar())!='
')
{if(ch>='A'&&ch<='Z') ch=ch+32;
else if(ch>='a'&&ch<='z') ch=ch-32;
printf("%c",ch);}
printf("
");
A.ABCdef B.abcDEF C.abc D.DEF
8.执行以下程序段时输入:left?<回车>,输出结果是( )
main(){ char c;while((c=getchar( ))!='?') putchar(++c);getch();}
A.mfgu B.mfuh C.nfug D.mfuf
9.下列程序的功能是将从键盘输入的一对数,由从小到大排序输出。当输入一对相等数时结束循环,请选择填空( )
main()
{int a,b,t;scanf("%d%d",&a,&b);
while(【 】)
{ if(a>b){ t=a;a=b;b=t;}
printf("%d,%d
",a,b);
scanf("%d%d",&a,&b);}getch();}
A.a!=b B.!a=b C.a==b D.a=b
10.执行以下程序段的输出结果是( )
int a=3;while(a--)printf("%d",a);
A.210 B.321 C.32 D.21
11.执行以下程序段的输出结果是( )
int num=0;while(num<=2){num++;printf("%d",num++);}
A.12 B.1 C.13 D.135
12.执行以下程序段的输出结果是( )
int n=0;while(n++<=8);printf("%d",n);
A.7 B.8 C.9 D.10
13.执行以下程序段的输出结果是( )
int x,y;x=y=8;
while(x<15) y++,x+=++y;printf("%d,%d",y,x);
A.10,16 B.10,17 C.18,10 D.10,18
14.执行以下程序段的输出结果是( )
int a=1,b=2,c=3,t;
while(a<b<c) {t=a;a=b;b=t;c--;}printf("%d,%d,%d",a,b,c);
A.1,2,1 B.1,2,0 C.1,2,2 D.2,1,1
15.设有程序段:int x=0,s=0;while(!x!=0) s+=++x;printf("%d",s);,则输出结果为( )
A.0 B.1 C.死循环 D.while中的控制表达式非法
16.下列程序的功能是:从键盘输入一组字符,将其中的小写字母变成对应的大写字母后的第二个字母,其中,y变成A,z变成B。请选择填空。( )
main()
{char c;
while((c=getchar( ))!='
')
{if(c>='a'&&c<='z')
{c=【 】;
if(c>'Z'&&c<='Z'+2)c=c-26;}printf("%c",c);}getch();}
A.c-30 B.c-32 C.c+32 D.c+30
17.下列程序的功能是:从键盘输入2个数,由小到大排序输出。当输入的2个数是相等数时,结束循环。请选择填空。( )
main()
{int a,b,t;scanf("%d%d",&a,&b);
while(【 】)
{if(a>b){t=a;a=b;b=t;}
printf("%d,%d
",a,b);
scanf("%d%d",&a,&b);}getch();}
A.a==b B.a!=b C.a<b D.!(a!=b)
18.下列程序的功能是:计算100~1000中有多少个各位数字之和是5的数。请填空。( )
main()
{int i,s,k,count=0;
for(i=100;i<=1000;i++)
{s=0;k=i;
while(k!=0)
{s=s+k%10;
k=【 】;}
if(s!=5) continue;
else count++;}
printf("%d",count);getch();}
A.k/10 B.k%10 C.k%10/10 D.k/10%10
19.下列程序的功能是:求 的值。请选择填空。( )
main()
{int i=2;float sum=1;
while(i<=50)
{sum=sum+1.0/i;i=【 】;}
printf("sum=%f",sum);
getch();}
A.i++ B.i+2 C.i*i D.i--
20.设以下变量均已正确定义,以下不能统计出一行中输入字符个数(不包含回车符)的程序段是( )
A.n=0;char ch;while((ch=getchar( ))!='
') n++;
B.n=0;while(getchar( )!='
') n++;
C.for(n=0;getchar( )!= '
';n++);
D.n=0;for(ch=getchar( )!= '
';n++);
21.以下选项中,不构成无限循环的语句或语句组是( )
A.n=0;do{++n;}while(n<=0); B.n=0;while(1){n++;}
C.n=10;while(n);{n--;} D.for(n=0,i=1; ;i++) n+=i;
22.在C语言中,循环语句while和do…while的主要区别是( )
A.do…while的循环体不能是复合语句
B.do…while的循环语句不允许嵌套
C.while的循环控制条件更严格
D.do…while的循环体至少无条件执行一次
23.下列不属于无限循环的语句是( )
A.for(y=0,x=l;x>++y;x=++i) i=x; B.for(;;x++=i);
C.while (1) { x++;} D.for(i=10 ;;i--) sum+=i;
24.设有程序段:int k=10;while(k=0) k=k-1;则下列描述中正确的一项是( )
A.while循环执行10次 B.循环是无限循环
C.循环体语句一次也不执行 D.循环体语句执行一次
25.执行以下程序段的输出结果是( )
int n=2,k=0;while(k++&&n++>2);printf("%d,%d",k,n);
A.0,2 B.1,2 C.1,3 D.死循环
26.执行以下程序段后的输出结果是( )
int a=-2,b=0;while(a++) ++b;printf("%d,%d",a,b);
A.1,2 B.0,2 C.1,3 D.2,3
27.执行以下程序段后的输出结果是( )
int a=1,b=2;
while(a<6)
{b=b+a;a=a+2;b=b%10;}printf("%d,%d",a,b);
A.5,11 B.7,1 C.7,11 D.6,1
28.执行以下程序段后的输出结果是( )
int a=7;while(a--);printf("%d",a);
A.-1 B.0 C.1 D.7
29.执行以下程序段后的输出结果是( )
int k=5;
while(--k)printf("%d",k-=3);
A.1 B.2 C.4 D.0
30.执行以下程序段的输出结果是( )
int y=10;
while(y--);
printf("y=%d",y);
A.y=0 B.y=-1 C.y=1 D.while构成无限循环
二、程序设计题(本大题共1小题,每题10分,共10分)
31.代码实现计算两个正整数的最大公约数
要求:
输入两个正整数 a 和 b。
使用 while 循环和辗转相除法(欧几里得算法)计算它们的最大公约数。
输出结果。
试卷第6页,共6页
试卷第5页,共6页
学科网(北京)股份有限公司
$