第六章 循环控制
第六章 循环控制
6.1 选择题
【题6.1】设有程序段
int k=10;
while(k=0) k=k-1;
则下面描述中正确的是    。
A)while循环执行10次B)循环是无限循环
C)循环体语句一次也不执行D)循环体语句执行一次
【题6.2】设有以下程序段
int x=0,s=0;
while(!x!=0) s+=++x;
printf(“%d”,s);
则    。
A)运行程序段后输出0B)运行程序段后输出1
C)程序段中的控制表达式是非法的D)程序段执行无限次
【题6.3】语句while(!E);中的表达式!E等价于    。
A)E==0B)E!=1C)E!=0D)E==1
【题6.4】下面程序段的运行结果是    。
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)1,2,0B)2,1,0C)1,2,1D)2,1,1
【题6.5】下面程序段的运行结果是    。
x=y=0;
while(x<15) y++,x+=++y;
printf(“%d,%d”,y,x);
A)20,7B)6,12C)20,8D)8,20
【题6.6】下面程序段的运行结果是    。
int n=0;
while(n++<=2); printf(“%d”,n);
A)2B)3C)4D)有语法错
【题6.7】设有程序段
t=0;
while(printf(“*”))
{
t++;
if(t<3) break;
}
则下面描述正确的是    。
A)其中循环控制表达式与0等价B)其中循环控制表达式与‘0’等价
C)其中循环控制表达式是不合法的D)以上说法都不对
【题6.8】下面程序的功能是将从键盘输入的一对数,由小到大排序输出。当输入一对相等数时结束循环,请选择填空。
#include <stdio.h>
main()
{
int a,b,t;
scanf(“%d %d”,&a,&b);
while(【1】)
{
if(a>b)
{t=a; a=b; b=t;}
printf(“%d,%d”\n”,a,b);
scanf(“%d %d”,&a,&b);
}
c语言六种基本语句}
【1】 A)!a=b B)a!=b C)a==b D)a=b
【题6.9】下面程序的功能是将从键盘输入的一组字符中统计出大写字母的个数m和小写字母的个数n,并输出m、n中的较大者,请选择填空。
#include <stdio.h>
main()
{
int m=0,n=0;
char c;
while((【1】)!=‘\n’)
{
if(c>=‘A’&&c<=‘Z’) m++;
if(c>=‘a’&&c<=‘z’) n++;
}
printf(“%d\n”,m<n? 【2】);
}
【1】 A)c=getchar()B)getchar()C)scanf(“%c”,c)
【2】 A)n:m B)m:n C)m:m D)n:n
【题6.10】下面程序的功能是将小写字母变成对应大写字母后的第二个字母。其中y变成A,z变成B。请选择填空。
#include <stdio.h>
main()
{
char c;
while((c=getchar())!=‘\n’)
{
if(c>=‘a’&&c<=‘z’)
{
【1】;
if(c>‘Z’)
【2】;
}
printf(“%c”,c);
}
}
【1】 A)c+=2B)c-=32C)c=c+32+2D)c-=30
【2】 A)c=‘B’B)c=‘A’C)c-=26D)c=c+26
【题6.11】下面程序的功能是在输入的一批正整数中求出最大者,输入0结束循环,请选择填空。
#include <stdio.h>
main()
{
int a,max=0;
scanf(“%d”,&a);
while(【1】)
{
if(max<a) max=a;
scanf(“%d”,&a);
}
printf(“%d”,max);
}
【1】 A)a==0B)a C)!a==1D)!a
【题6.12】下面程序的运行结果是    。
#include <stdio.h>
main()
{
int num=0;
while(num<=2)
{
num++;
printf(“%d\n”,num);
}
}
A)1B)1C)1D)1
2  2  2
3  3
4
【题6.13】若运行以下程序时,从键盘输入2473<;回车>,则下面程序的运行结果是    。
#include <stdio.h>
main()
{
int c;
while((c=getchar())!=‘\n’)
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;
}
printf(“\n”);
}
A)668977B)668966C)66778777D)6688766
【题6.14】C语言中while和do-while循环的主要区别是    。
A)do-while的循环体至少无条件执行一次
B)while的循环控制条件比do-while的循环控制条件严格
C)do-while允许从外部转到循环体内
D)do-while的循环体不能是复合语句
【题6.15】以下能正确计算1×2×3×…×10的程序段是    。
A)do{i=1; s=1;B)do{i=1; s=0;
   s=s*i;      s=s*i;
i++;      i++;
}while(i<=10);    }while(i<=10);
C)i=1; s=1;D)i=1; s=0;
do{s=s*i;  do{s=s*i;
i++;      i++;
}while(i<=10);    }while(i<=10);
【题6.16】以下程序段    。
x=-1;
do
{x=x*x;}
while(!x);
A)是死循环B)循环执行二次
C)循环执行一次D)有语法错误
【题6.17】以下描述中正确的是    。
A)由于do-while循环中循环体语句只能是一条可执行语句,所以循环体内不能使用复合语句
B)do-while循环由do开始,用while结束,在while(表达式)后面不能写分号C)在do-while循环体中,一定要有能使while后面表达式的值变为零(“假”)的操作
D)do-while循环中,根据情况可以省略while
【题6.18】若有如下语句
int x=3;
do{ printf(“%d\n”),x-=2; }while(!(--x));
则上面程序段    。
A)输出的是1B)输出的是1和-2C)输出的是3和0D)是死循环
【题6.19】下面程序的功能是计算正整数2345的各位数字平方和,请选择填空。
#include <stdio.h>
main()
{
int n,sum=0;
n=2345;
do{
sum=sum+【1】;
n=【2】;
}while(n);
printf(“sum=%d”,sum);
}
【1】 A)n%10B)(n%10)*(n%10)C)n/10D)(n/10)*(n/10)
【2】 A)n/1000B)n/100C)n/10D)n%10
【题6.20】下面程序是从键盘输入学号,然后输出学号中百位数字是3的学号,输入0时结束循环。请选择填空。
#include <stdio.h>
main()
{
long int num;
scanf(“%ld”,&num);
do{
if(【1】) printf(“%ld”,num);
scanf(“%ld”,&num);
while(【2】);
}
【1】 A)num%100/10==3B)num/100%10==3
C)num%10/10==3D)num/10%10==3
【2】 A)n=n-2B)n=n C)n++D)n-=1
【题6.21】等比数列的第一项a=1,公比q=2,下面程序的功能是求满足前n项和小于100的最大n,请选择填空。
#include <stdio.h>
main()
{
int a,q,n,sum;
a=1; q=2; n=sum=0;
do{
【1】;
++n; a*=q;
}while(sum<100);
【2】;
printf(“%d\n”,n);
}
【1】 A)sum++B)sum+=a C)sum=a+a D)a+=sum
【2】 A)n=n-2B)n=n C)n++D)n-=1
【题6.22】下面程序的功能是把316表示为两个加数的和,使两个加数分别能被13和11整除。请选择填空。
#include <stdio.h>
main()
{
int i=0,j,k;
do{ i++; k=316-13*i; }while(【1】);
j=k/11;
printf(“316=13*%d+11*%d”,i,j);

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。