内容正文:
《编程语言基础——C语言》高等教育出版社(第五版)
第四章 循环结构程序设计 章节过关卷
考试时间:90分钟 满分:100分
姓名 班级 学号
1、 单项选择题(本题共20小题,每题2分,共40分)
1.设有以下程序段,则( )
int x=0,s=0;
while(!x=0) s+=++x;
printf(“%d”,s);
A.运行程序段后输出0 B.运行程序段后输出1
C.程序段无限次执行 D.程序段中的控制表达式非法
2.下面程序段的运行结果是( )
a=1;b=2;c=2;
while(a<b<c)
{t=a;a=b;b=t;c- -;}
printf("%d,%d,%d",a,b,c);
A.2,1,0 B.1,2,1 C.2,1,1 D.1,2,0
3.C语言中 while 和 do-while循环的主要区别是( )
A. do-while 的循环体至少无条件执行一次
B. while 的循环控制条件比do-while的循环控制条件严格
C. do-while 允许从外部转到循环体内
D. do-while 的循环体不能是复合语句
4.下面有关for循环的正确描述是( )
A.for 循环只能用于循环次数已经确定的情况
B.for 循环是先执行循环体语句,后判断表达式
C.在for循环中,不能用break语句跳出循环体
D.for循环的循环体语句中,可以包含多语句,但必须用花括号括起来
5.执行语句: for(i=1;i++<5;);语句后,i变量的值是( )
A. 7 B. 5 C.6 D.不确定值
6.设有以下程序段,则选项中描述正确的是( )
int k=100;
while(k=0)k=k-1;
A. while 循环执行100次 B.是一个死循环
C.循环体语句一次也没执行 D.循环体语句执行了1次
7.若有下面程序段,其中s,a,b,c均已定义为整型变量,且a=10,c=5,执行以下程序段后,s的值为( )
s=a;
for(b=1; b<=c; b++) s=s+1;
A.15 B.5 C.10 D.21
8.下面程序段中循环体执行的次数是( )
int i, j;
for(i=0,j=1; i<=j+1; i+=2,j--)printf("%d",i);
A.3 B.2 C.1 D.0
9.下面程序的运行后输出结果是( )
#include<stdio.h>
#include<conio.h>
main( )
{int n=10;
while(n>6){n--; printf("%d",n); }getch(); }
A. 987 B.876 C.8765 D.9876
10.下面程序段的输出结果是( )
#include<stdio.h>
#include<conio.h>
main( )
{int n=8;
while(n--)printf("%d",--n);getch(); }
A. 20 B. 0 C.420 D.6420
11.设 a、b是整型变量,执行下面语句后,b值是( )
a=1; b=10;
do{b-=a; a++; }while(b--<0);
A.9 B.-2 C.-1 D.8
12.在C语言中,能跳过循环体中未执行的语句,接着执行本循环下一次的迭代语句是( )
A.break B.return C.continue D.void
13.下面程序段的运行结果是( )
x=y=0;
while(x<15)
y++,x+=++y;
print("%d,%d",x,y);
A.20,8 B.8,20 C.12,6 D.7,20
14.以下描述正确的一项是( )
A.continue语句的作用是结束整个循环的执行
B.只能在循坏体内和switch语句体内使用break语句
C.在循环体内使用break语句或continue语句的作用相同
D.想要从多层循环嵌套中退出,只能使用goto语句
15.下列程序的运行结果是( )
#include<stdio.h>
#include<conio.h>
main( )
{int x=1,s=2;
while(!x!=0)
s+=--x;
printf("%d",s);getch(); }
A.1 B.0 C.2 D.-1
16.下列程序的运行结果是( )
#include<stdio.h>
#include<conio.h>
main( )
{int n=15;
while(n>11)
{n-=2;
printf("%d",n);}getch(); }
A.1311 B.11 C.311 D.1
17.对for(表达式1; ;表达式3)可以理解为( )
A. for(表达式1;0 ;表达式3)
B. for(表达式1;1 ;表达式3)
C. for(表达式1;表达式1 ;表达式3)
D. for(表达式1;表达式3 ;表达式3)
18.下面程序段的运行结果是( )
int n=0;
while(n++<=2);printf(“%d”,n);
A.2 B.4 C.3 D.死循环
19.下面程序的功能是从键盘输入的一组字符中统计出大写字母的个数m和小写字母的个数n,并输出m、n中的较大者,请选择填空。
#include <stdio.h>
main( )
{ int m=0,n=0;char c;
while((【l】)!=‘
’)
{ if(c>=‘A’&&c<=‘Z’) m++;
if(c>=‘a’&&c<=‘z’) n++;
}printf("%d
", m<n ?n:m); }
A.c=getchar( ) B.c=putchar( ) C.getchar( ) D.scanf(“%c”,c)
20.下面程序的功能是将从键盘输入的一对数,由小到大排序输出。当输入一对相等数时结束循环,请选择填空。
include <stdio.h>
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);
} }
A. !a=b B.a!=b C.a==b D.a=b
二、程序运行结果题(本题共7小题,每题3分,共21分)
21.以下程序的运行结果是【 】。
#include <stdio.h>
main( )
{ int i=l;
while(i<=15)
if(++i%3!=2) continue;
else printf("%d ",i);}
22.以下程序的运行结果是【 】。
#include<stdio.h>
#include<conio.h>
main( )
{ int i,k=25;
while (i=k-1)
{k-=3;
if (k%4==0) {i++;continue;}
else if(k<4) break;
i++; }
printf("i=%d,k=%d
",i,k);getch();
}
23.以下程序的运行结果是【 】。
#include<stdio.h>
#include<conio.h>
main( )
{int a,y;
a=20;y=0;
do
{a+=3;y+=a;
if(y>50) break;
} while(a=15);
printf("a=%d y=%d
",a,y);getch();
}
24.以下程序的运行结果是【 】。
#include<stdio.h>
#include<conio.h>
main( )
{int i=16;
do
{ switch (i%2)
{ case 4:i--;break;
case 6:i--;continue;}
i-- ; i--;
printf("%d ",i);
} while(i>0);getch(); }
25.以下程序的运行结果是【 】。
#include<stdio.h>
#include<conio.h>
main( )
{ int i=1,s=1;
do
{ s+=i++;
if(s%7==0) continue;
else ++i;} while(s<27);
printf("%d",i); getch(); }
26.以下程序的运行结果是【 】。
#include<stdio.h>
#include<conio.h>
main( )
{int y=8,a=2;
while(y--!=-1)
{ do{ a*=y; a++;}while(y--);}
printf("%d,%d",a,y);getch(); }
27.若从键盘输入88 23<回车>,以下程序的运行结果是【 】。
#include<stdio.h>
#include<conio.h>
main( )
{int m,n;
printf("Enter m,n:");
scanf("%d%d",&m,&n);
while(m!=n)
{ while(m>n)m-=n;
while(n>m) n-=m; }
printf("m= %d
",m);getch(); }
三、程序填空。按照题目要求,将正确的内容填入相应位置,使得程序完整(每空3分,共21分)
28.假设等比数列的第一项a=l,公比q=2,下面程序的功能是求满足前n项和小于100的最大n,请填空。
#include <stdio.h>
main( )
{ int a=l,g=2,n=0,sum=0;
do {【1】 ;
++n;a=a*g;}while(sum<100);
【2】 ;
printf(“%d
”,n);}
29.下面程序的功能是计算1~10之间的奇数之和及偶数之和。请填空。
#include <stdio.h>
main( )
{ int a=0,b,c=0,i;
for(i=0;i<=10;i+=2)
{ a+=i;
【1】;
c+=b;}
printf("The sum of even=%d
",a);
printf("The sun of odd=%d
", 【2】 );}
30.下面程序的功能是计算100 1000之间有多少个数其各位数字之和是5。请填空。
#include <stdio.h>
main( )
{ int i,s,k,count=0;
for(i=100;i<=1000;i++)
{ s=0;k=i;
while (【1】)
{ s=s+k%10; k=【2】;}
if(s!=5) 【3】;
else count++;
}
printf("%d",count); }
四、阅读程序,修改程序中的错误,不得增行或删行,也不得更改程序结构。请指出错误代码所在的行号,并给出该行修改后的程序代码。(每处3分,共18分)
31.从键盘输入一些正整数(输入负数结束),求最小值。程序中有两处错误,请改正。
L1 #include "stdio.h"
L2 void main( )
L3 {int x,min;
L4 scanf("%d",&x);
L5 min=0;
L6 while(x>0)
L7 {
L8 if(min<x) min=x;
L9 scanf("%d", &x);
L10 }
L11 printf("min=%d",min); }
32.下面求两个正整数最大公约数的程序。程序中有两处错误,请改正。
L1 #include "stdio.h"
L2 main()
L3 { unsigned x, y, c;
L4 printf("Input two value(x y):");
L5 scanf("%u%u",x, y);
L6 for(c=x; c>0; c- -)
L7 if(x%c==0&&y%c==0)
L8 continue;
L9 printf("%d", c); }
33.下面程序作用是:求由0、1、2、3、4、5、6可组成多少个没有重复数字的二位奇数,打印出这些数,每行打印5个。程序中有两处错误,请改正。
#include "stdio.h"
L1 main( )
L2 {
L3 int i,j,n=0;
L4 for(i=1; i<=6; i++)
L5 for(j=1; j<=5; j+=2)
L6 {if(i=j)continue;
L7 n++;
L8 printf("%5d",i+j);
L9 if(n%5==0)printf("
"); }
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
$$
《编程语言基础——C语言》高等教育出版社(第五版)
第四章 循环结构程序设计 章节过关卷
考试时间:90分钟 满分:100分
姓名 班级 学号
1、 单项选择题(本题共20小题,每题2分,共40分)
1.设有以下程序段,则( )
int x=0,s=0;
while(!x=0) s+=++x;
printf(“%d”,s);
A.运行程序段后输出0 B.运行程序段后输出1
C.程序段无限次执行 D.程序段中的控制表达式非法
答案:B
2.下面程序段的运行结果是( )
a=1;b=2;c=2;
while(a<b<c)
{t=a;a=b;b=t;c- -;}
printf("%d,%d,%d",a,b,c);
A.2,1,0 B.1,2,1 C.2,1,1 D.1,2,0
答案:D
3.C语言中 while 和 do-while循环的主要区别是( )
A. do-while 的循环体至少无条件执行一次
B. while 的循环控制条件比do-while的循环控制条件严格
C. do-while 允许从外部转到循环体内
D. do-while 的循环体不能是复合语句
答案:A
4.下面有关for循环的正确描述是( )
A.for 循环只能用于循环次数已经确定的情况
B.for 循环是先执行循环体语句,后判断表达式
C.在for循环中,不能用break语句跳出循环体
D.for循环的循环体语句中,可以包含多语句,但必须用花括号括起来
答案:D
5.执行语句: for(i=1;i++<5;);语句后,i变量的值是( )
A. 7 B. 5 C.6 D.不确定值
答案:C
6.设有以下程序段,则选项中描述正确的是( )
int k=100;
while(k=0)k=k-1;
A. while 循环执行100次 B.是一个死循环
C.循环体语句一次也没执行 D.循环体语句执行了1次
答案:C
7.若有下面程序段,其中s,a,b,c均已定义为整型变量,且a=10,c=5,执行以下程序段后,s的值为( )
s=a;
for(b=1; b<=c; b++) s=s+1;
A.15 B.5 C.10 D.21
答案:A
8.下面程序段中循环体执行的次数是( )
int i, j;
for(i=0,j=1; i<=j+1; i+=2,j--)printf("%d",i);
A.3 B.2 C.1 D.0
答案:B
9.下面程序的运行后输出结果是( )
#include<stdio.h>
#include<conio.h>
main( )
{int n=10;
while(n>6){n--; printf("%d",n); }getch(); }
A. 987 B.876 C.8765 D.9876
答案:D
10.下面程序段的输出结果是( )
#include<stdio.h>
#include<conio.h>
main( )
{int n=8;
while(n--)printf("%d",--n);getch(); }
A. 20 B. 0 C.420 D.6420
答案:D
11.设 a、b是整型变量,执行下面语句后,b值是( )
a=1; b=10;
do{b-=a; a++; }while(b--<0);
A.9 B.-2 C.-1 D.8
答案:D
12.在C语言中,能跳过循环体中未执行的语句,接着执行本循环下一次的迭代语句是( )
A.break B.return C.continue D.void
答案:C
13.下面程序段的运行结果是( )
x=y=0;
while(x<15)
y++,x+=++y;
print("%d,%d",x,y);
A.20,8 B.8,20 C.12,6 D.7,20
答案:A
14.以下描述正确的一项是( )
A.continue语句的作用是结束整个循环的执行
B.只能在循坏体内和switch语句体内使用break语句
C.在循环体内使用break语句或continue语句的作用相同
D.想要从多层循环嵌套中退出,只能使用goto语句
答案:B
15.下列程序的运行结果是( )
#include<stdio.h>
#include<conio.h>
main( )
{int x=1,s=2;
while(!x!=0)
s+=--x;
printf("%d",s);getch(); }
A.1 B.0 C.2 D.-1
答案:C
16.下列程序的运行结果是( )
#include<stdio.h>
#include<conio.h>
main( )
{int n=15;
while(n>11)
{n-=2;
printf("%d",n);}getch(); }
A.1311 B.11 C.311 D.1
答案:A
17.对for(表达式1; ;表达式3)可以理解为( )
A. for(表达式1;0 ;表达式3)
B. for(表达式1;1 ;表达式3)
C. for(表达式1;表达式1 ;表达式3)
D. for(表达式1;表达式3 ;表达式3)
答案:B
18.下面程序段的运行结果是( )
int n=0;
while(n++<=2);printf(“%d”,n);
A.2 B.4 C.3 D.死循环
答案:B
19.下面程序的功能是从键盘输入的一组字符中统计出大写字母的个数m和小写字母的个数n,并输出m、n中的较大者,请选择填空。
#include <stdio.h>
main( )
{ int m=0,n=0;char c;
while((【l】)!=‘
’)
{ if(c>=‘A’&&c<=‘Z’) m++;
if(c>=‘a’&&c<=‘z’) n++;
}printf("%d
", m<n ?n:m); }
A.c=getchar( ) B.c=putchar( ) C.getchar( ) D.scanf(“%c”,c)
答案:A
20.下面程序的功能是将从键盘输入的一对数,由小到大排序输出。当输入一对相等数时结束循环,请选择填空。
include <stdio.h>
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);
} }
A. !a=b B.a!=b C.a==b D.a=b
答案:B
二、程序运行结果题(本题共7小题,每题3分,共21分)
21.以下程序的运行结果是【 】。
#include <stdio.h>
main( )
{ int i=l;
while(i<=15)
if(++i%3!=2) continue;
else printf("%d ",i);}
答案:2 5 8 11 14
22.以下程序的运行结果是【 】。
#include<stdio.h>
#include<conio.h>
main( )
{ int i,k=25;
while (i=k-1)
{k-=3;
if (k%4==0) {i++;continue;}
else if(k<4) break;
i++; }
printf("i=%d,k=%d
",i,k);getch();
}
答案:i=3,k=1
23.以下程序的运行结果是【 】。
#include<stdio.h>
#include<conio.h>
main( )
{int a,y;
a=20;y=0;
do
{a+=3;y+=a;
if(y>50) break;
} while(a=15);
printf("a=%d y=%d
",a,y);getch();
}
答案:a=18 y=59
24.以下程序的运行结果是【 】。
#include<stdio.h>
#include<conio.h>
main( )
{int i=16;
do
{ switch (i%2)
{ case 4:i--;break;
case 6:i--;continue;}
i-- ; i--;
printf("%d ",i);
} while(i>0);getch(); }
答案:14 12 10 8 6 4 2 0
25.以下程序的运行结果是【 】。
#include<stdio.h>
#include<conio.h>
main( )
{ int i=1,s=1;
do
{ s+=i++;
if(s%7==0) continue;
else ++i;} while(s<27);
printf("%d",i); getch(); }
答案:13
26.以下程序的运行结果是【 】。
#include<stdio.h>
#include<conio.h>
main( )
{int y=8,a=2;
while(y--!=-1)
{ do{ a*=y; a++;}while(y--);}
printf("%d,%d",a,y);getch(); }
答案:1,-2
27.若从键盘输入88 23<回车>,以下程序的运行结果是【 】。
#include<stdio.h>
#include<conio.h>
main( )
{int m,n;
printf("Enter m,n:");
scanf("%d%d",&m,&n);
while(m!=n)
{ while(m>n)m-=n;
while(n>m) n-=m; }
printf("m= %d
",m);getch(); }
答案:m=1
三、程序填空。按照题目要求,将正确的内容填入相应位置,使得程序完整(每空3分,共21分)
28.假设等比数列的第一项a=l,公比q=2,下面程序的功能是求满足前n项和小于100的最大n,请填空。
#include <stdio.h>
main( )
{ int a=l,g=2,n=0,sum=0;
do {【1】 ;
++n;a=a*g;}while(sum<100);
【2】 ;
printf(“%d
”,n);}
答案:
【1】sum+=a或sum=sum+a
【2】n-=1或n=n-1或n- -
29.下面程序的功能是计算1~10之间的奇数之和及偶数之和。请填空。
#include <stdio.h>
main( )
{ int a=0,b,c=0,i;
for(i=0;i<=10;i+=2)
{ a+=i;
【1】;
c+=b;}
printf("The sum of even=%d
",a);
printf("The sun of odd=%d
", 【2】 );}
答案:
【1】b=i+1
【2】c-11
30.下面程序的功能是计算100 1000之间有多少个数其各位数字之和是5。请填空。
#include <stdio.h>
main( )
{ int i,s,k,count=0;
for(i=100;i<=1000;i++)
{ s=0;k=i;
while (【1】)
{ s=s+k%10; k=【2】;}
if(s!=5) 【3】;
else count++;
}
printf("%d",count); }
答案:
【1】k
【2】k/10
【3】continue
四、阅读程序,修改程序中的错误,不得增行或删行,也不得更改程序结构。请指出错误代码所在的行号,并给出该行修改后的程序代码。(每处3分,共18分)
31.从键盘输入一些正整数(输入负数结束),求最小值。程序中有两处错误,请改正。
L1 #include "stdio.h"
L2 void main( )
L3 {int x,min;
L4 scanf("%d",&x);
L5 min=0;
L6 while(x>0)
L7 {
L8 if(min<x) min=x;
L9 scanf("%d", &x);
L10 }
L11 printf("min=%d",min); }
答案:
【1】L5 min=x;
【2】L8 if(min>x) min=x;
32.下面求两个正整数最大公约数的程序。程序中有两处错误,请改正。
L1 #include "stdio.h"
L2 main()
L3 { unsigned x, y, c;
L4 printf("Input two value(x y):");
L5 scanf("%u%u",x, y);
L6 for(c=x; c>0; c- -)
L7 if(x%c==0&&y%c==0)
L8 continue;
L9 printf("%d", c); }
答案:
【1】L5 scanf("%u%u",&x,&y);
【2】L8 break;
33.下面程序作用是:求由0、1、2、3、4、5、6可组成多少个没有重复数字的二位奇数,打印出这些数,每行打印5个。程序中有两处错误,请改正。
#include "stdio.h"
L1 main( )
L2 {
L3 int i,j,n=0;
L4 for(i=1; i<=6; i++)
L5 for(j=1; j<=5; j+=2)
L6 {if(i=j)continue;
L7 n++;
L8 printf("%5d",i+j);
L9 if(n%5==0)printf("
"); }
答案:
【1】L6 {if(i==j)continue;
【2】L8 printf("%5d",i*10+j);
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
$$