while循环和do-while循环的主要区别是(
西电2022年秋季《面向对象程序设计(c++)》大作业及答案

学习中心/函授站姓名学号西安电子科技大学网络与继续教育学院2022 学年下学期《面向对象程序设计(C++)》期末考试试题(综合大作业)考试说明:1、大作业试题公布时间:(1)毕业班:2022 年10 月21 日;(2)正常班:2022 年11 月18 日;2、考试必须独立完成,如发现抄袭、雷同均按零分计;3、答案须用《西安电子科技大学网络与继续教育学院2022 秋期末考试答题纸》(个人专属答题纸)手写完成,要求字迹工整、卷面干净、整齐;4、在线上传时间:(1)毕业班学生于2022 年10 月21 日至2022 年11 月1 日在线上传大作业答卷;(2)正常班学生于2022 年11 月18 日至2022 年12 月5 日在线上传大作业答卷;5、拍照要求完整、清晰,一张图片对应一张个人专属答题纸(A4 纸),正确上传。
一、简答题(10 分)1、运算符 new 和 delete 的功能分别是什么?(3 分)答案:运算符new的功能是创建动态对象;delete的功能是释放由new创建的动态对象。
2、若派生类以 private 方式从一个基类派生,派生类的对象可以访问基类中的哪些成员?派生类的成员函数可以访问基类中的哪些成员?(3 分)答案:若派生类以private方式从一个基类派生,派生类的对象不能访问基类中的任何成员(1分);派生类的成员函数可以访问基类中的public和protected成员(2分)。
3、构造函数的作用是什么?在创建派生类的对象时,应按照怎样的顺序调用构造函数?(4 分)答案:构造函数的作用是创建对象并对其进行必要的初始化。
(1分)构造函数调用顺序:基类构造函数、子对象类构造函数(如果有)、派生类构造函数。
(2分)二、填空题(每空 2 分,共 20 分)1、函数的返回值是通过函数体中的return语句带回的;若被调用函数被定义为 void 类型,则被调用函数不带回任何值。
2、表示逻辑关系“ a 大于等于8 或者 a 小于等于5”的C++表达式是。
C语言试题库-循环结构

一、选择题1.以下叙述正确的是A: do-while 语句构成的循环不能用其它语句构成的循环来代替。
B: do-while 语句构成的循环只能用break 语句退出。
C: 用do-while 语句构成的循环,在while 后的表达式为非零时结束循环。
D: 用do-while 语句构成的循环,在while 后的表达式为零时结束循环。
2.下面有关for 循环的正确描述是A: for 循环只能用于循环次数已经确定的情况B: for 循环是先执行循环体语句,后判定表达式C: 在for 循环中,不能用break 语句跳出循环体D: for 循环体语句中,可以包含多条语句,但要用花括号括起来3.C 语言中while 和do-while 循环的主要区别是A: do-while 的循环体至少无条件执行一次B: while 的循环控制条件比do-while 的循环控制条件严格C: do-while 允许从外部转到循环体内;D: do-while 的循环体不能是复合语句;4.下列关于switch 语句和break 语句的结论中,正确的是A: break 语句是switch 语句中的一部分B: 在switch 语句中可以根据需要使用或不使用break 语句C: 在switch 语句中必须使用break 语句D: switch 语句是break 语句的一部分5..以下正确的描述是A: continue 语句的作用是结束整个循环的执行;B: 只能在循环体内和switch 语句体内使用break 语句;C: 在循环体内使用break 语句或continue 语句的作用相同;D: 从多层循环嵌套中退出时,只能使用goto 语句;6.语句while(!e);中的条件!e 等价于A: e==0B: e!=0C: e!=1D: ~e7.在以下给出的表达式中,与while(E)中的E不等价的表达式是A: !E=0B: E>0||E<0C: E==0D: E!=08.在C 语言中,当do-while 语句中的条件为()时,结束该循环。
C语言选择题

选择题A篇1.以下数据中,不正确的数值或字符常量是(A).(A).c(B).66(C).0xaa(D).502.设j和k都是int类型,则for循环语句:for(j=0,k=0;j<=9&&k!=876;j++)scanf("%d",&k);(A)(A).最多执行10次(B).最多执行9次(C).是无限循环(D).循环体一次也不执行3.char a1[]="abc",a2[80]="1234";将a1串连接到a2串后面的语句是(A).(A).strcat(a2,a1);(B).strcpy(a2,a1);(C).strcat(a1,a2);(D).strcpy(a1,a2);4.以下正确的说法是:在C语言中(A).(A).实参和与其对应的形参各占用独立的存储单元(B).实参和与其对应的形参共占用一个存储单元(C).只有当实参和与其对应的形参同名时才共占用存储单元(D).形参是虚拟的,不占用存储单元5.下列字符序列中,是C语言保留字的是(A).(A).sizeof(B).include(C).scanf(D).sqrt6.以下选项中,与k=n++完全等价的表达式是(A).(A).k=n,n=n+1(B).n=n+1,k=n(C).k=++n(D).k+=n+17.在位运算中,操作数每左移一位,其结果相当于(A).(A).操作数乘以2(B).操作数除以2(C).操作数除以4(D).操作数乘以48.以下程序的运行结果是(A).main(){ int n;for(n=1;n<=10;n++){if(n%3==0) continue;printf("%d",n);}}(A).12457810(B).369(C).12(D).12345678909.int a=1,b=2,c=3;if(a>b)a=b;if(a>c)a=c;则a的值为(A).(A).1(B).2(C).3(D).不一定10.下列定义数组的语句中正确的是(A).(A).#define size 10 char str1[size],str2[size+2];(B).char str[];(C).int num['10'];(D).int n=5; int a[n][n+2];11.C语言中运算对象必须是整型的运算符是(A).(A).%=(B)./(C).=(D).〈=12.C语言中while 和do-while 循环的主要区别是(A).(A).do-while 的循环体至少无条件执行一次(B).while的循环控制条件比do-while的循环控制条件更严格(C).do-while 允许从外部转到循环体内(D).do-while 的循环体不能是复合语句13.16.在C语言中,形参的缺省存储类别是(A).(A).auto(B).register(C).static(D).extern14.从键盘上输入某字符串时,不可使用的函数是(A).(A).getchar()(B).gets()(C).scanf()(D).fread()15.以下数据中,不正确的数值或字符常量是(A).(A).8.9e1.2(B).10(C).0xff00(D).82.516.以下不是无限循环的语句为(A).(A).for(y=0,x=1;x>++y;x=i++) i=x;(B).for(;;x++=i);(C).while(1){x++;}(D).for(i=10;;i--) sum+=i;17.while(fabs(t)<1e-5)if(!s/10)break;循环结束的条件是(A).(A).t>=1e-5&&t<=-1e-5(B).fabs(t)<1e-5&&!s/10(C).fabs(t)<1e-5(D).s/10==018.以下叙述中正确的是(A).(A).构成C程序的基本单位是函数(B).可以在一个函数中定义另一个函数(C).main()函数必须放在其它函数之前(D).所有被调用的函数一定要在调用之前进行定义19.函数rewind 的作用是(A).(A).使位置指针重新返回文件的开头(B).将位置指针指向文件中所要求的特定位置(C).使位置指针指向文件的末尾(D).使位置指针自动移至下一个字符位置20.C语言程序中,当调用函数时(A).(A).实参和虚参各占一个独立的存储单元(B).实参和虚参可以共用存储单元(C).可以由用户指定是否共用存储单元(D).计算机系统自动确定是否共用存储单元a选择题B篇38.C语言源程序的基本单位是(B).(A).过程(B).函数(C).子程序(D).标识符39.下列程序的输出结果是(B).main(){char c1=97,c2=98;printf("%d %c",c1,c2);}(A).97 98(B).97 b(C).a 98(D).a b40.下列四个选项中,均是C语言关键字的选项是(B).(A).auto enum include(B).switch typedef continue(C).signed union scanf(D).if struct type41.以下能对二维数组a进行正确初始化的语句是(B).(A).int a[2][]={{1,0,1},{5,2,3}};(B).int a[][3]={{1,2,3},{4,5,6}};(C).int a[2][4]={{1,2,3},{4,5},{6}};(D).int a[][3]={{1,0,1}{},{1,1}};42.以下对枚举类型名的定义中正确的是(B).(A).enum a={sun,mon,tue};(B).enum a {sun=9,mon=-1,tue};(C).enum a={"sun","mon","tue"};(D).enum a {"sun","mon","tue"};43.以下选项中合法的用户标识符是(B).(A).long(B)._2Test(C).3Dmax(D).A.dat44.以下叙述中正确的是(B).(A).C语言的源程序不必通过编译就可以直接运行(B).C语言中的每条可执行语句最终都将被转换成二进制的机器指令(C).C源程序经编译形成的二进制代码可以直接运行(D).C语言中的函数不可以单独进行编译45.以下叙述中不正确的是(B).(A).一个好的程序应该有详尽的注释(B).在C程序中,赋值运算符的优先级最低(C).在C程序中,j++;是一条赋值语句(D).C程序中的#include和#define均不是C语句46.若有以下程序段:int a=3,b=4; a=a^b;b=b^a;a=a^b;则执行以上语句后,a和b的值分别是(B).(A).a=3,b=4(B).a=4,b=3(C).a=4,b=4(D).a=3,b=347.9.假定所有变量均已正确定义,下列程序段运行后x的值是(B).k1=1;k2=2;k3=3;x=15;if(!k1) x--;else if(k2) x=4;else x=3;(A).14(B).4(C).15(D).348.给数组a的所有元素分别赋值为1、2、3、……的语句是(B).(A).for(i=1;i<11;i++)a[i]=i;(B).for(i=1;i<11;i++)a[i-1]=i;(C).for(i=1;i<11;i++)a[i+1]=i;(D).for(i=1;i<11;i++)a[0]=1;49.C语言中不可以嵌套的是(B).(A).函数调用(B).函数定义(C).循环语句(D).选择语句50.int a[10]={1,2,3,4,5,6,7,8};int *p;p=&a[5];p[-3]的值是(B)(A).2(B).3(C).4(D).不一定51.若k为int型变量,则以下程序段的执行结果是(B).k=-8567; printf("|%06D|\n",k);(A).格式描述符不合法,输出无定值(B).输出为|%06D|(C).输出为|0-8567|(D).输出为|-8567|52.fseek函数的正确调用形式是(B).(A).fseek(文件类型指针,起始点,位移量)(B).fseek(fp,位移量,起始点)(C).fseek(位移量,起始点,fp)(D).fseek(起始点,位移量,文件类型指针)53.下列表达式中,可作为C合法表达式的是(B).(A).[3,2,1,0](B).(3,2,1,0)(C).3=2=1=0(D).3/2/1/054.以下程序的输出结果为(B).main(){int a=1,b=2,c=3,d=4,e=5;printf("%d\n",func((a+b,b+c,c+a),(d+e)));}int func(int x,int y){return(x+y);}(A).15(B).13(C).9(D).函数调用出错55.以下标识符中,不能作为合法的C用户定义标识符的是(B).(A).a3_b3(B).void(C)._123(D).IF选择题C篇84.设C语言中,int类型数据占2个字节,则long类型数据占(C).(A).1个字节(B).2个字节(C).4个字节(D).8个字节85.以下叙述正确的是(C).(A).在C程序中,main函数必须位于程序的最前面(B).C程序的每行中只能写一条语句(C).C语言本身没有输入输出语句(D).在对一个C程序进行编译的过程中,可发现注释中的拼写错误86.以下数值中,不正确的八进制数或十六进制数是(C).(A).0x16(B).016(C).-16(D).0xaaaa87.已知x=43,ch='A',y=0;则表达式(x>=y&&ch<'B'&&!y)的值是(C).(A).0(B).语法错(C).1(D).假88.能将高级语言编写的源程序转换为目标程序的是(C).(A).链接程序(B).解释程序(C).编译程序(D).编辑程序89.以下关于运算符优先顺序的描述中正确的是(C).(A).关系运算符<算术运算符<赋值运算符<逻辑运算符(B).逻辑运算符<关系运算符<算术运算符<赋值运算符(C).赋值运算符<逻辑运算符<关系运算符<算术运算符(D).算术运算符<关系运算符<赋值运算符<逻辑运算符90.以下叙述中不正确的是(C).(A).表达式a&=b等价于a=a&b(B).表达式a|=b等价于a=a|b(C).表达式a!=b等价于a=a!b(D).表达式a^=b等价于a=a^b 91.12.以下不能对二维数组a进行正确初始化的语句是(C).(A).int a[2][3]={0};(B).int a[][3]={{1,2},{0}};(C).int a[2][3]={{1,2},{3,4},{5,6}};(D).int a[][3]={1,2,3,4,5,6};92.下列语句中,不正确的是C(A).static char a[2]={1,2};(B).static int a[2]={'1','2'};(C).static char a[2]={'1','2','3'};(D).static char a[2]={'1'};93.static struct {int a1;float a2;char a3;}a[10]={1,3.5,'A'};说明数组a是地址常量,它有10个结构体型的下标变量,采用静态存储方式,其中被初始化的下标变量是(C).(A).a[1](B).a[-1](C).a[0](D).a[10]94.以下字符中不是转义字符的是(C).(A).'\a'(B).'\b'(C).'\c'(D).'\\'95.以下数据中,不正确的数值或字符常量是(C).(A).0(B).5L(C).o13(D).986196.若输入ab,程序运行结果为(C).main(){ static char a[2];scanf("%s",a);printf("%c,%c",a[1],a[2]);}(A).a,b(B).a,(C).b,(D).程序出错(E)b,c 选择题D篇132.C语言中,double类型数据占(D).(A).1个字节(B).2个字节(C).4个字节(D).8个字节133.设a为整型变量,初值为12,执行完语句a+=a-=a*a后,a 的值是(D).(A).552(B).144(C).264(D).-264134.下列程序的输出为(D).main(){ int y=10;while(y--) ;printf("y=%d\n",y);}(A).y=0(B).while构成无限循环(C).y=1(D).y=-1135.以下能正确定义数组并正确赋初值的语句是(D).(A).int N=5,b[N][N];(B).int a[1][2]={{1},{3}};(C).int c[2][]={{1,2},{3,4}};(D).int d[3][2]={{1,2},{34}};;Ps:由于题库题较多,很难抽全,所以这里只是一部分题,祝同学们好事顺利!zwl。
《C程序设计语言》模拟试卷二

D.该结构体变量中所有成员所需存储空间的总和
26.以下关于typedef的叙述不正确的是_____ ____。
A.用typedef可以定义各种类型名,但不能用来定义变量
B.用typedef可以增加新类型
C.用typedef只是将已存在的类型用一个新的名字来代表
C.可以在赋值语句中通过赋值运算符"="对字符数组整体赋值
D.不可以用关系运算符对字符数组中的字符串进行比较
18.以下合法的数组定义是____ _______。
A.int a[] = "string";
B.int a[5] = {0, 1, 2, 3, 4, 5};
C.char a = "string";
24.在C语言程序中,下列叙述正确的是___ ______。
A.实参可以是常量、变量或表达式
B.实参可以是任意类型
C.形参可以是常量、实参或表达式
D.形参与队友的实参类型要求可以不一致
25.在定义一个结构体变量时系统分配给它的存储空间是___ _。
A.该结构体变量中第一个成员所需存储空间
B.该结构体变量中最后一个成员所需存储空间
D.使用typedef便于程序的调用
27.在声明一个结构体类型时系统分配给它的存储空间是___ _____。
A.该结构体变量中第一个成员所需存储空间
B.该结构体变量中最后一个成员所需存储空间
C.该结构体变量中所有成员所需存储空间的总和
D.结构体类型本身并不占用存储空间,即系统并不给结构体类型分配存储空间
D.char a[] = {0, 1, 2, 3, 4, 5};
C语言试题-1(含答案)

C语言试题2019.03一、单项选择题(共30分,每题1分)1.在PC机中,‘\n’在内存占用的字节数是()A.1 B.2 C. 3 D.42.字符串“ABC”在内存占用的字节数是()A.3 B. 4 C.6 D.83.在C语言中,合法的长整型常数是()A.0L B.4962710 C.0.054838743 D.2.1869 e104.执行语句“x=(a=3,b=a--)”后,x,a,b的值依次是()A.3,3,2 B.3,2,2 C.3,2,3 D.2,3,25.设有语句int a=3;,则执行了语句a+=a-=a*a后,变量a的值是()A.3 B.0 C.9 D.-126.设int k=32767;执行k=k+1;后k值为()最大值与最小值首尾相连A.32768 B.-32768 C.0 D.-17.下列正确的标识符是()A.hot_do B.a+b C.test! D.%y8.设int a=5,使b不为2的表达式是()A.b=6-(--a) B.b=a%2 C.b=a/2 D.b=a>3?2:19.执行x=(6*7%8+9)/5;后,x的值为()A.1 B.2 C.3 D.410.执行语句x=(a=3,b=a--)后,x,a,b的值依次为()A.3,2,3 B.2,3,2 C.3,3,2 D.3,2,211.设a=-3;执行(a>0)?a:-a;后,a的值为()A.3 B.1 C.0 D.-312.设所有变量均为整型,则表达式(a=2,b=5,b++,a+b)的值为()A.7 B.8 C.9 D.213.下面正确的字符常量是()A.”c” B.’\\’’ C.’W’ D. ‘’14.若有代数式3ae/bc,则不正确的c语言表达式是()A.a/b/c*e*3 B.3*a*e/b/c C.3*a*e/b*c D.a*e/c/c*315.在C语言中,要求运算数必须是整型的运算符是()书中55页A./ B.++ C.!= D.%16.若有说明语句:char c=’\72’;则变量c ( )A.包含1个字符 B.包含2个字符C.包含3个字符 D.说明不合法,c值不确定17.sizeof (float)是()返回值为4。
C语言循环结构练习题带答案

第5章循环结构程序设计基本知识点while语句的使用格式和注意事项do-while语句的使用格式和注意事项for语句的使用格式和注意事项break和continue语句在循环语句中的应用循环结构的嵌套使用goto语句实现循环结构穷举法程序设计方法迭代程序设计方法练习题51. 单项选择题(1)语句while (!e);中的条件!e等价于 A 。
A. e==0B. e!=1C. e!=0D. ~e(2)下面有关for循环的正确描述是 D 。
A. for循环只能用于循环次数已经确定的情况B. for循环是先执行循环体语句,后判定表达式C. 在for循环中,不能用break语句跳出循环体D. for循环体语句中,可以包含多条语句,但要用花括号括起来(3)C语言中 D 。
A. 不能使用do-while语句构成的循环B. do-while语句构成的循环必须用break语句才能退出C. do-while语句构成的循环,当while语句中的表达式值为非零时结束循环D. do-while语句构成的循环,当while语句中的表达式值为零时结束循环(4)C语言中while和do-while循环的主要区别是 A 。
A. do-while的循环体至少无条件执行一次B. while的循环控制条件比do-while的循环控制条件严格C. do-while允许从外部转到循环体内D. do-while的循环体不能是复合语句(5)以下程序段 C 。
int x=-1;do{x=x*x;}while (!x);A. 是死循环B. 循环执行二次C. 循环执行一次D. 有语法错误(6)下列语句段中不是死循环的是__C__。
A. i=100;while (1){i=i%100+1;if (i==20) break;}B. for (i=1;;i++)sum=sum+1;C. k=0;do{++k;} while (k<=0);D. s=3379;while (s++%2+3%2)s++;(7)与以下程序段等价的是__A__。
2012计算机二级考试试题

2012年计算机二级C++笔试模拟试题及答案一、选择题在下列各题的A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确的选项涂写在答题卡相应位置上,答在试卷上不得分。
(1)循环链表的主要优点是A)不再需要头指针了B)从表中任一结点出发都能访问到整个链表C)在进行插入、删除运算时,能更好的保证链表不断开D)已知某个结点的位置后,能够容易的找到它的直接前件(2)栈底至栈顶依次存放元素A、B、C、D,在第五个元素E入栈前,栈中元素可以出栈,则出栈序列可能是A)ABCEDB)DCBEAC)DBCEAD)CDABE(3)n个顶点的强连通图的边数至少有A)n-1B)n(n-1)C)nD)n+1(4)在结构化程序设计思想提出之前,在程序设计中曾强调程序的效率。
与程序的效率相比,人们更重视程序的A)安全性B)一致性C)可理解性D)合理性(5)模块独立性是软件模块化所提出的要求,衡量模块独立性的度量标准则是模块的A)抽象和信息隐蔽B)局部化和封装化C)内聚性和耦合性D)激活机制和控制方法(6)软件开发的结构化生命周期方法将软件生命周期划分成A)定义、开发、运行维护B)设计阶段、编程阶段、测试阶段C)总体设计、详细设计、编程调试D)需求分析、功能定义、系统设计(7)在软件工程中,白箱测试法可用于测试程序的内部结构。
此方法将程序看做是A)路径的集合B)循环的集合C)目标的集合D)地址的集合(8)在数据管理技术发展过程中,文件系统与数据库系统的主要区别是数据库系统具有A)特定的数据模型B)数据无冗余C)数据可共享D)专门的数据管理软件(9)数据库设计包括两个方面的设计内容,它们是A)概念设计和逻辑设计B)模式设计和内模式设计C)内模式设计和物理设计D)结构特性设计和行为特性设计(10)实体是信息世界中广泛使用的一个术语,它用于表示A)有生命的事物B)无生命的事物C)实际存在的事物D)一切事物(11)以下都是C++语言标识符的是A)dsfa,df4,f$B)huhj,a^,k2C)3k,h,j_9D)_ok,jk,k8(12)C++语言中用于定义类的关键字是A)classB)structC)defaultD)sizeof(13)设以下变量均为int类型,则值不等于7的表达式是A)(x=y=6,x+y,x+1)B)(x=y=6,x+y,y+1)C)(x=6,x+1,y=6,x+y) D)(y=6,y+1,x=y,x+1)(14)以下程序的输出结果是#includevoid main(){ int a=21,b=11;cout << --a+b;}A)30B)31C)32D)33(15)while 和do-while循环的主要区别是A)do-while的循环体至少无条件执行一次B)while的循环控制条件比do-while的循环控制条件更严格C)do-while允许从外部转到循环体内D)do-while 的循环体不能是复合语句(16)与y=(x>0?1:x<0?-1:0);的功能相同的if语句是A)if (x>0)y=1;else if(x<0)y=-1;else y=0;B)if(x)if(x>0)y=1;else if(x<0)y=-1;C)y=-1;if(x)if(x>0)y=1;elseif(x==0)y=0;else y=-1;D)y=0;if(x>=0)if(x>0)y=1;else y=-1;(17)若二维数组a有m列,则计算任一元素a[i][j]在数组中相对位置的公式为(假设a[0][0]位于数组的第一个位置上)A)i*m+jB)j*m+iC)i*m+j-1D)i*m+j+1(18)下面程序段的运行结果是#includevoid main(){ char*s="abcde";s+=2;cout << &s;}A)cdeB)字符′c′C)字符′c′的地址D)无确定的输出结果(19)下面叙述不正确的是A)派生类一般都用公有派生B)对基类成员的访问必须是无两义性的C)赋值兼容规则也适用于多重继承的组合D)基类的公有成员在派生类中仍然是公有的(20)下面程序应能对两个整型变量的值进行交换。
c中dowhile循环语句

c中dowhile循环语句
在C语言中,do-while循环语句是一种后测试循环。
它的语法结构如下:
do {
// 循环体代码块
} while(condition);
do-while循环的执行过程是先执行一次循环体中的代码,然后再进行条件判断。
如果条件为真,即满足循环条件,就继续执行循环体;如果条件为假,即不满足循环条件,就退出循环。
do-while循环与while循环的一个主要区别是,do-while循环保证循环体至少执行一次,无论条件是否为真。
以下是一个do-while循环的示例,用于计算从1加到10的和:
#include <stdio.h>
int main() {
int sum = 0;
int i = 1;
do {
sum = sum + i;
i++;
} while (i <= 10); // 循环条件
printf("Sum = %d\n", sum);
return 0;
}
在上述示例中,do-while循环会至少执行一次循环体,然后在条件判断处检查是否满足循环条件。
在每次循环结束后,i 会递增1,并将其加到sum中,直到i的值超过10时,循环终止。
最后,打印出sum的结果。
请注意,不要忘记在do-while循环的结束处添加分号(;)。
另外,确保在循环体内适时更新循环条件,以避免出现无限循环。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第4章
一、选择题
1. while循环和do-while循环的主要区别是( )。
A. do-while的循环体至少无条件执行一次
B. while的循环控制条件比do-while的控制条件严格
C. do-while允许从循环外部转到循环体内
D. do-while的循环体不能是复合语句
2. 关于for循环的正确描述是( )。
A. for循环只能用于循环次数已经确定的情况
B. for循环是先执行循环体语句后判断表达式
C. for循环中不能用break语句结束循环
D. for循环体可以包含多条语句,但必须用花括号括起来
3. 以下正确的说法是( )。
A. continue语句的作用是结束整个循环的执行
B. 只能在循环体内和swtich语句体内使用break语句
C. 在循环体内使用break或continue语句的作用相同
D. 从多层嵌套中退出只能使用goto语句
4. 以下描述正确的是( )。
A. goto语句只能用于退出多层循环
B. swtich语句中不能使用continue语句
C. 只能用continue语句来终止本次循环
D. 在循环中break语句不能独立出现
5. 求“s=1+2+3+...+9+10”,下列语句中错误的是( )。
A. s=0;for(i=1;i<=10;i++) s+=i; B. s=0;i=1;for(;i<=10;i++) s=s+i;
C. for(i=1,s=0;i<=10;s+=i,i=i+1); D. for(i=1;s=0;i<=10;i++) s=s+i;
6. 下列语句中,哪一个可以输出26个大写英文字母( )。
A. for(a=’A’;a<=’Z’;printf("%c",++a));
B. for(a=’A’;a<’Z’;a++)printf("%c",a);
C. for(a=’A’;a<=’Z’;printf("%c",a++));
D. for(a=’A’;a<’Z’;printf("%c",++a));
7. 有程序段“int k=10;while(k=0) k=k-1;”,则正确的是( )。
A. while循环10次 B. 循环是无限循环
C. 循环体一次也不执行 D. 循环体只执行一次
8. 语句“while(!E);”中的表达式!E等价于( )。
A. E==0 B. E!=1
C. E!=0 D. E==1
9. 程序段“int n=0; while(n++<=2);printf(“%d ”,n);”的运行结果是( )。
A. 2 B. 3 C. 4 D. 1 2 3
10. 程序段“int i=4; while(--i) printf("%d",i);”中循环体将执行( )。
A. 3次 B. 4次 C. 0次 D. 无限次
11. 执行“for(s=0,k=1;s<20||k<10;k=k+2) s+=k;”后,s、k的值为( )。
A. 25、9 B. 25、11 C. 36、11 D. 36、9
12. 执行“int k=4,s=0; while(--k) s+=k;”后k、s值分别为( )。
A. 10、0 B. 0、10 C. 6、0 D. 0、6
13. 执行“float s,x;for(x=0,s=0;x!=10;x=x+0.3)s=s+x;”后,变量x的值( )。
A. 远大于10 B. 等于10
C. 小于10 D. 语法错误
14.与while(i>=0&&i<=10) {if(i++==5)continue; printf("%f\n",1.0/(i-5));}功能相同的是
( )。
A. for(;i>=0&&i<=10;i++) if(i!=5) printf("%f\n",1.0/(i-5));
B. for(;i>=0&&i<=10;i++) if(i==5) printf("%f\n",1.0/(i-5));
C. for(;i>=0&&i<=10;i++) if(i!=5) printf("%f\n",1.0/(i-5)); else break;
D. for(;i<=0&&i>=10;i++) if(i!=5) printf("%f\n",1.0/(i-5));
15. 下面程序段的运行结果是( )。
x=y=0;
while(x<15) y++,x+=++y;
printf(“%d,%d”,y,x);
A. 20,7 B. 6,12 C. 20,8 D. 8,20
16. 与while(1){if(i>=100)break;s+=i;i++;} 功能相同的是( )。
A. for(;i<100;i++) s=s+i; B. for(;i<100;i++;s=s+i);
C. for(;i<=100;i++) s+=i; D. for(;i>=100;i++;s=s+i);
二、填空题
1.循环结构可分为_____循环和_____两种结构,前者是“先判断,后循环”,
相应的循环语句有_____和_____,后者是“先循环,后判断”,相应的循环语句
有_____。
2. do while循环是一种___型循环,其特点是_____。
3. for循环是一种___型循环,其特点是_____。
4.for语句中表达式1、表达式2和表达式3分别是:__________、___
_______和__________。
5. 对于同一个循环问题,3种循环语句for、while和do.while_____(随便哪一个
都可以/只能是其中一个)实现。
6. for循环中如果有多个变量需要进行初始化,可以使用_____。
7. for循环中的3个表达式_____(是/不是)必需的。
8. 循环的嵌套是指_______________。
9. 在循环嵌套结构中,内层循环执行的次数等于_______________,循
环的层数越多,程序执行的速度就越慢。
10. break语句用于_______________,continue语句用于______
_________。
三、判断题
1. 循环结构中语句中循环体至少被执行一次。( )
2. 复合语句、选择语句和循环语句都可以嵌套使用。( )
3. 循环体可以是一个空语句,但不可为空。( )
4. 开关语句可以有一个或多个default子句。( )
5. for循环结构是一种“当型”循环。( )
6. while是一种“先判断,后执行”的循环结构。( )
7. do while是一种“当型”循环结构。( )
8. for(;;)或while (1)形式的循环都是永久循环。( )
9. for循环语句格式中可以使用逗号表达式,它可以给多个变量进行初始化;也允许存
在两个或多个循环控制变量。( )
10. 没有循环体的循环是不正确的,即不允许有空循环。( )
11. continue和break语句功能相同。( )
四、写出下列程序运行结果
1. #include
main()
{ int i=1;
while(i<=15)
if(++i%3!=2) continue;
else printf("%d",i);
printf("\n");
}
2. #include
main()
{ int a,b,i;
a=1;b=3;i=1;
do { printf("%d,%d,",a,b);
a=(b-a)*2+b;
b=(a-b)*2+a;
if (i++%2==0) printf("\n");
} while (b<100);
}
3. #include
main()
{ int i,j=4;
for (i=j;i<=2*j;i++)
switch (i/j)
{ case 0:
case1: printf("*"); break;
case2: printf("#");
}
}
五、编程题
1. 编程计算1至50中是7的倍数的数值之和。
2. 从键盘输入的字符中统计数字字符的个数,用换行符结束循环。
3. 输入一批正整数,输出其中的最大值和最小值,输入数字“0”结束循环。
4. 输入一个整数,将其数值按小于10,10-99,100-999,1000以上分类并显示。例如:
输入358时,显示358 is 100 to 999。
5. 编程实现屏幕输出“九九乘法表”,要求以三角形形式输出。
(提示:外循环变量i从1开始到9,内循环变量j从1开始到i)。
6. 求3到M之间的全部素数,M为任意整数。
7. 用公式e=1+1/1!+1/2!+1/3!+ „„+1/n!求e的近似值,精度为1/n!<10-6。
8. 从键盘输入一位整数,当输入数字0叶程序结束;当输入1~7时,显示下面对应的
英文星期名称缩写。
1: MON 2: TUE 3: WED 4: THU 5: FRI 6: SAT 7: SUN