任务13:while循环结构程序设计 《编程语言-C语言》45分钟专题训练
|
2份
|
21页
|
107人阅读
|
2人下载
内容正文:
湖南省职教高考《编程语言—C语言》45分钟专题训练专辑,共43份试卷。试卷命题与高考紧密相关,精选具有代表性和典型性的高考常考题。旨在帮助学生系统地复习和巩固计算机类理论知识,熟悉高考题型和命题规律,提高解题能力和应试技巧,为高考取得优异成绩打下坚实的基础,本训练卷适用于即将参加计算机类高考的学生。与本专辑配套的还有湖南省职教高考《计算机应用基础》《计算机组装与维护》《计算机网络技术》45分钟专题训练专辑,欢迎同学和老师们下载使用。
《编程语言—C语言》
项目三: 循环结构程序设计
第13卷: while循环结构程序设计
时间:45分钟 总分:100分
班级___________ 姓名__________ 学号__________ 成绩________
一、选择题(共23小题,每小题2分,共46分)
1.设有程序段:int k=10;while(k=0) k=k-1;则下列描述中正确的一项是( )
A.while循环执行10次 B.循环是无限循环
C.循环体语句一次也不执行 D.循环体语句执行一次
2.语句:while(!E);中的表达式“!E”与下列( )选项等价。
A.E==0 B.E!=1 C.E!=0 D.E==1
3.设有程序段:int x=0,s=0;while(!x!=0) s+=++x;printf("%d",s);,则输出结果为( )
A.0 B.1 C.死循环 D.while中的控制表达式非法
4.执行以下程序段的输出结果是( )
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
5.执行以下程序段的输出结果是( )
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
6.执行以下程序段的输出结果是( )
int n=0;while(n++<=8);printf("%d",n);
A.7 B.8 C.9 D.10
7.执行以下程序段的输出结果是( )
int num=0;while(num<=2){num++;printf("%d",num++);}
A.12 B.1 C.13 D.135
8.执行以下程序段的输出结果是( )
int a=3;while(a--)printf("%d",a);
A.210 B.321 C.32 D.21
9.执行以下程序段的输出结果是( )
int n=2,k=0;while(k++&&n++>2);printf("%d,%d",k,n);
A.0,2 B.1,2 C.1,3 D.死循环
10.下列程序的功能是将从键盘输入的一对数,由从小到大排序输出。当输入一对相等数时结束循环,请选择填空( )
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
11.执行以下程序段时输入:left?<回车>,输出结果是( )
main(){ char c;while((c=getchar( ))!='?') putchar(++c);getch();}
A. mfgu B.mfuh C.nfug D.mfuf
12.执行以下程序段时输入: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
13.执行以下程序段的输出结果是( )
int i=1;while(i++<8);printf("%d",i);
A.7 B.8 C.9 D.10
14.执行以下程序段的输出结果是( )
int i=2;
while(i-->0)printf("%d",i);
printf("%d",i);
A.101 B.10 C.1 D.10-1
15.要求通过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);
16.对于:while(!E){…s…},若要执行循环体s,则E的取值应该为( )
A.E等于1 B.E不等于0 C.E不等于1 D.E等于0
17.设有以下程序,则下列叙述中,正确的一项是( )
#include<stdio.h>
main()
{……
while(getchar( )!=’
’);
……}
A.此while语句将无限循环
B.getchar( )不可以出现在while语句的条件表达式中
C.当执行此while语句时,只有按回车键程序才能继续执行
D.当执行此while语句时,按任意键程序就能继续执行
18.若要实现: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;}
19.执行以下程序段的输出结果是( )
int y=10;
while(y--);
printf("y=%d",y);
A.y=0 B.y=-1 C.y=1 D.while构成无限循环
20.执行以下程序段后的输出结果是( )
int k=5;
while(--k)printf("%d",k-=3);
A.1 B.2 C.4 D.0
21.执行以下程序段后的输出结果是( )
int a=7;while(a--);printf("%d",a);
A.-1 B.0 C.1 D.7
22.执行以下程序段后的输出结果是( )
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
23.执行以下程序段后的输出结果是( )
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
二、程序运行结果题(本题共7小题,每题3分,共21分)
24.以下程序的运行结果是( )
#include <stdio.h>
#include<conio.h>
main()
{ int a=2,s=0,n=1,count=1;
while(count<=8)
{n=n*a;s=s+n;++count;}
printf("s=%d",s);
getch();}
25.以下程序的运行结果是( )
#include <stdio.h>
#include<conio.h>
#include<math.h>
main()
{int a1=0,a2=0;
char ch;
while((ch=getchar( ))!='&')
switch(ch)
{case 'a':
case 'h':
default:a1++;
case 'o':a2++;}
printf("%d,%d
",a1,a2);
getch();}
程序运行时输入:Hunan2025&<回车>
26.以下程序的运行结果是( )
#include <stdio.h>
#include<conio.h>
main()
{int c;
while((c=getchar( ))!='
')
switch(c-'2')
{case 0:case 1:putchar(c+4 );
case 2:putchar(c+4);break;
case 3:putchar(c+3);
default:putchar(c+2);break;}
getch();}
运行时输入:2025<回车>
27.以下程序的运行结果是( )
#include <stdio.h>
#include<conio.h>
main()
{int m,n,k;
scanf("%d%d",&m,&n);
k=m;
while(k%m!=0||k%n!=0)
k++;
printf("%d",k);
getch();}
运行程序时输入:2 3<回车>
28.以下程序的运行结果是( )
#include <stdio.h>
#include<conio.h>
main()
{int m,n,k,t;
scanf("%d%d",&m,&n);
if(m<n)
{t=m;m=n;n=t;}
k=m;
while(k%n!=0)
k+=m;
printf("k=%d",k);
getch();}
运行程序时输入:7 8<回车>
29.以下程序的运行结果是( )
#include <math.h>
#include <stdio.h>
#include<conio.h>
main()
{float x,y,z;
scanf("%f%f",&x,&y);
z=x/y;
while(y==0)
if(fabs(z)>1.0)
{x=y;y=z;z=x/y;}
printf("%.2f",y);
getch();}
运行程序时输入:3.8 2.2<回车>
30.以下程序的运行结果是( )
#include <stdio.h>
#include<conio.h>
main()
{int num,reverse=0,count=0,r;
scanf("%d",&num);
while(num!=0)
{r=num%10;
reverse=reverse*10+r;
num=num/10;
count++;}
printf("count:%d,reverse:%d
",count,reverse);
getch();}
运行程序时输入:1234
三、阅读程序,修改程序中的错误,不得增行或删行,也不得更改程序结构。请指出错误代码所在的行号,并给出该行修改后的程序代码。(每处3分,共9分)
31.下列程序的功能是:输入两个正整数m和n,求其最大公约数和最小公倍数。程序中有三处错误,请改正。
L1 #include <stdio.h>
L2 #include<conio.h>
L3 main()
L4 { int p,r,n,m,temp;
L5 printf("请输入两个正整数n,m:");
L6 scanf("%d%d",&n,&m);
L7 if(n>m)
L8 {temp=n;n=m;m=temp;}
L9 p=n*m;
L10 while(m==0)
L11 {r=n%m;n=m;m=r;}
L12 printf("最大公约数为:%d
",n);
L13 printf("最大公倍数为:%d
",p);
L14 getch();}
四、程序填空。按照题目要求,将正确的内容填入相应位置,使得程序完整(每空3分,共24分)
32.下列程序的功能是使用下面的公式求π的近似值,直到最后一项的绝对值小于0.0001为止:
#include <stdio.h>
#include<conio.h>
#include<math.h>
main()
{ int sign=1;double pi=0.0,n=1.0,term=1.0;
while(【1】)
{pi=pi+term;
n=n+2;
sign=【2】;
term=【3】;}
pi=【4】;
printf("pi=%.8f",pi);
getch();}
33.下列程序的功能是使用迭代法求 。求平方根的迭代公式为
,要求前后两次求出x的差的绝对值小于 。
#include <stdio.h>
#include<conio.h>
#include<math.h>
main()
{ float a,x0,x1;
printf("enter a positive number:");
scanf("%f",&a);
x0=a/2;
x1=【1】;
while(【2】>=【3】)
{x0=x1;
x1=【4】;}
printf("The square root of %.3f is %f
",a,x1);
getch();}
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
$$
湖南省职教高考《编程语言—C语言》45分钟专题训练专辑,共43份试卷。试卷命题与高考紧密相关,精选具有代表性和典型性的高考常考题。旨在帮助学生系统地复习和巩固计算机类理论知识,熟悉高考题型和命题规律,提高解题能力和应试技巧,为高考取得优异成绩打下坚实的基础,本训练卷适用于即将参加计算机类高考的学生。与本专辑配套的还有湖南省职教高考《计算机应用基础》《计算机组装与维护》《计算机网络技术》45分钟专题训练专辑,欢迎同学和老师们下载使用。
《编程语言—C语言》
项目三: 循环结构程序设计
第13卷: while循环结构程序设计
时间:45分钟 总分:100分
班级___________ 姓名__________ 学号__________ 成绩________
一、选择题(共23小题,每小题2分,共46分)
1.设有程序段:int k=10;while(k=0) k=k-1;则下列描述中正确的一项是( )
A.while循环执行10次 B.循环是无限循环
C.循环体语句一次也不执行 D.循环体语句执行一次
【答案】C
2.语句:while(!E);中的表达式“!E”与下列( )选项等价。
A.E==0 B.E!=1 C.E!=0 D.E==1
【答案】A
3.设有程序段:int x=0,s=0;while(!x!=0) s+=++x;printf("%d",s);,则输出结果为( )
A.0 B.1 C.死循环 D.while中的控制表达式非法
【答案】B
4.执行以下程序段的输出结果是( )
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
5.执行以下程序段的输出结果是( )
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
6.执行以下程序段的输出结果是( )
int n=0;while(n++<=8);printf("%d",n);
A.7 B.8 C.9 D.10
【答案】D
7.执行以下程序段的输出结果是( )
int num=0;while(num<=2){num++;printf("%d",num++);}
A.12 B.1 C.13 D.135
【答案】C
8.执行以下程序段的输出结果是( )
int a=3;while(a--)printf("%d",a);
A.210 B.321 C.32 D.21
【答案】A
9.执行以下程序段的输出结果是( )
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
10.下列程序的功能是将从键盘输入的一对数,由从小到大排序输出。当输入一对相等数时结束循环,请选择填空( )
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
11.执行以下程序段时输入:left?<回车>,输出结果是( )
main(){ char c;while((c=getchar( ))!='?') putchar(++c);getch();}
A. mfgu B.mfuh C.nfug D.mfuf
【答案】A
12.执行以下程序段时输入: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
13.执行以下程序段的输出结果是( )
int i=1;while(i++<8);printf("%d",i);
A.7 B.8 C.9 D.10
【答案】C
14.执行以下程序段的输出结果是( )
int i=2;
while(i-->0)printf("%d",i);
printf("%d",i);
A.101 B.10 C.1 D.10-1
【答案】D
15.要求通过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
16.对于:while(!E){…s…},若要执行循环体s,则E的取值应该为( )
A.E等于1 B.E不等于0 C.E不等于1 D.E等于0
【答案】D
17.设有以下程序,则下列叙述中,正确的一项是( )
#include<stdio.h>
main()
{……
while(getchar( )!=’
’);
……}
A.此while语句将无限循环
B.getchar( )不可以出现在while语句的条件表达式中
C.当执行此while语句时,只有按回车键程序才能继续执行
D.当执行此while语句时,按任意键程序就能继续执行
【答案】C。执行whiel语句时,当按下回车键跳出while循环,才能继续执行下一条语句。
18.若要实现: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
19.执行以下程序段的输出结果是( )
int y=10;
while(y--);
printf("y=%d",y);
A.y=0 B.y=-1 C.y=1 D.while构成无限循环
【答案】B
20.执行以下程序段后的输出结果是( )
int k=5;
while(--k)printf("%d",k-=3);
A.1 B.2 C.4 D.0
【答案】A
21.执行以下程序段后的输出结果是( )
int a=7;while(a--);printf("%d",a);
A.-1 B.0 C.1 D.7
【答案】A
22.执行以下程序段后的输出结果是( )
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
23.执行以下程序段后的输出结果是( )
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
二、程序运行结果题(本题共7小题,每题3分,共21分)
24.以下程序的运行结果是( )
#include <stdio.h>
#include<conio.h>
main()
{ int a=2,s=0,n=1,count=1;
while(count<=8)
{n=n*a;s=s+n;++count;}
printf("s=%d",s);
getch();}
【答案】s=510
25.以下程序的运行结果是( )
#include <stdio.h>
#include<conio.h>
#include<math.h>
main()
{int a1=0,a2=0;
char ch;
while((ch=getchar( ))!='&')
switch(ch)
{case 'a':
case 'h':
default:a1++;
case 'o':a2++;}
printf("%d,%d
",a1,a2);
getch();}
程序运行时输入:Hunan2025&<回车>
【答案】9,9
26.以下程序的运行结果是( )
#include <stdio.h>
#include<conio.h>
main()
{int c;
while((c=getchar( ))!='
')
switch(c-'2')
{case 0:case 1:putchar(c+4 );
case 2:putchar(c+4);break;
case 3:putchar(c+3);
default:putchar(c+2);break;}
getch();}
运行时输入:2025<回车>
【答案】6626687
27.以下程序的运行结果是( )
#include <stdio.h>
#include<conio.h>
main()
{int m,n,k;
scanf("%d%d",&m,&n);
k=m;
while(k%m!=0||k%n!=0)
k++;
printf("%d",k);
getch();}
运行程序时输入:2 3<回车>
【答案】6
28.以下程序的运行结果是( )
#include <stdio.h>
#include<conio.h>
main()
{int m,n,k,t;
scanf("%d%d",&m,&n);
if(m<n)
{t=m;m=n;n=t;}
k=m;
while(k%n!=0)
k+=m;
printf("k=%d",k);
getch();}
运行程序时输入:7 8<回车>
【答案】k=56
29.以下程序的运行结果是( )
#include <math.h>
#include <stdio.h>
#include<conio.h>
main()
{float x,y,z;
scanf("%f%f",&x,&y);
z=x/y;
while(y==0)
if(fabs(z)>1.0)
{x=y;y=z;z=x/y;}
printf("%.2f",y);
getch();}
运行程序时输入:3.8 2.2<回车>
【答案】2.20
30.以下程序的运行结果是( )
#include <stdio.h>
#include<conio.h>
main()
{int num,reverse=0,count=0,r;
scanf("%d",&num);
while(num!=0)
{r=num%10;
reverse=reverse*10+r;
num=num/10;
count++;}
printf("count:%d,reverse:%d
",count,reverse);
getch();}
运行程序时输入:1234
【答案】count:4,reverse:4321
三、阅读程序,修改程序中的错误,不得增行或删行,也不得更改程序结构。请指出错误代码所在的行号,并给出该行修改后的程序代码。(每处3分,共9分)
31.下列程序的功能是:输入两个正整数m和n,求其最大公约数和最小公倍数。程序中有三处错误,请改正。
L1 #include <stdio.h>
L2 #include<conio.h>
L3 main()
L4 { int p,r,n,m,temp;
L5 printf("请输入两个正整数n,m:");
L6 scanf("%d%d",&n,&m);
L7 if(n>m)
L8 {temp=n;n=m;m=temp;}
L9 p=n*m;
L10 while(m==0)
L11 {r=n%m;n=m;m=r;}
L12 printf("最大公约数为:%d
",n);
L13 printf("最大公倍数为:%d
",p);
L14 getch();}
答案:
L7 if(n<m)
L10 while(m!=0)
L13 printf("最大公倍数为:%d
",p/n);
四、程序填空。按照题目要求,将正确的内容填入相应位置,使得程序完整(每空3分,共24分)
32.下列程序的功能是使用下面的公式求π的近似值,直到最后一项的绝对值小于0.0001为止:
#include <stdio.h>
#include<conio.h>
#include<math.h>
main()
{ int sign=1;double pi=0.0,n=1.0,term=1.0;
while(【1】)
{pi=pi+term;
n=n+2;
sign=【2】;
term=【3】;}
pi=【4】;
printf("pi=%.8f",pi);
getch();}
答案:①fabs(term)>=0.0001 ②-sign ③sign/n ④pi*4
33.下列程序的功能是使用迭代法求 。求平方根的迭代公式为
,要求前后两次求出x的差的绝对值小于 。
#include <stdio.h>
#include<conio.h>
#include<math.h>
main()
{ float a,x0,x1;
printf("enter a positive number:");
scanf("%f",&a);
x0=a/2;
x1=【1】;
while(【2】>=【3】)
{x0=x1;
x1=【4】;}
printf("The square root of %.3f is %f
",a,x1);
getch();}
答案:①(x0+a/x0)/2 ②fabs(x0-x1) ③1e-5 ④(x0+a/x0)/2
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
$$