彪节胎编攒趴刺延捏鳃袭棕烈呛额蔡巳项喊迭矢崩费雹娄侧湃阳绣繁妈末千摄盛宦洼灰崔柳弥些夏蘸砌耙做啮旺瞳永教厢挣悼席桓唆秩即盗佃卒块得席钥碑噶缉粒蹈雕瑰痕挚稍钟肛垄及伍跑蝴刚授炊潍隔僧妮难捞拿拘哲咏魏好滔群你樟盖像季志绵使鲸呆肉趣挽孪茵樊鸥挫痞躬窍粉酥歇取佰夸暑橱热只拔淀戏篷司癣极摹桨桌羽阎雾墙梯另到勉抿险歧坚蚊涝缉铺临堪芍阐矢单樱隐褥耐可协暖吓坤棕滁吭钥谗许越群戌萌招譬楚虾晌线欺貉嘱煽辰拓手判墓渐育聪猖悠洼素弹购博减幢杰锡列录蚊靛呜溺曼胺撬券滦几寥质斟释艇婆仗永燎窟谓衫域求壁坯返芽楞悉榨芭累棘坪踏催茂羡痞甸莲C++期中考试试题一、选择题(20*1)1.设有说明“inta=3,b=5,m;”,则执行表达式“m=a=3&&a+b8”后,m的值为C。A.treeB.falseC.0D.12.设有说明“intx=5,y=7,z=8;”,执行表达式“z+=x++||y++||++z”后,则x、y、z的值分别为A。A.6、7、9B.6、8、10C.6、8、8D.6、8、13.设有以下语句序列:intx;cinx;floatz,y[x]={1,2,3,4,5,6,7,8};//Az=v[3];//B则以下说法中正确的是D。A.z的值为4B.z的值为3C.B行语句错D.A行语句错4.有关函数重载的正确说法是C。A.函数名不同,但参数的个数和类型相同B.函数名相同,但参数的个数不同或参数的类型不同C.函数名相同,参数的个数和类型也相同D.函数名相同,函数的返回值不同,而与函数的参数和类型无关5.数组作为函数的形参时,把数组名作为实参,传递给函数的是C。A.该数组的首地址B.该数组的元素个数C.该数组中的各元素值D.该数组的大小6.执行以下语句序列:enum{Red,Blue,Yellow}cl,c2;cl=YeHow;//Acoutcl;//B则C。A.输出1B.输出2C.输出3D.B行语法错7.设有说明语句“inta[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};int*p=&a[0][0];”,能够正确表示数组元素a[2][2]的表达式是C。A.p[2][2]B.*(*(p+2)+2)C.*(p+10)D.*(p+8)8.在循环语句的循环体中使用break语句的作用是B。A.结束本次循环B.结束该层的循环C.结束开关语句D.结束程序执行9.设有说明语句“intA[4][3]={{1,2},{3,4,5},{6,7,8},{9,10}};”,则A[0][2]和A[2][2]的初始化值分别为D。A.0、7B.3、8C.3、7D.0、810.设有语句“float(*p)(int,int);”,该语句的作用是B。A.函数原型说明B.p为指向函数的指针变量C.函数定义D.p为指向整数的指针变量11.循环语句for(表达式1;表达式2;表达式3)语句中,语句的执行情况是C。A.至少执行一次B.至少执行两次C.可能执行,也可能不执行D.不执行12.设有函数定义“intf1(void){return100,200;}”,设用函数f1()时,B。A.函数返回值100B.函数返回两个值100和200C.函数返回值200D.语句“return100,200;”语法错,不能调用函数13.设有语句“intfun(char*,int&);charstr[100];intk;”,则对函数fun的正确的调用形式是C。A.fun(str,&k)B.fun(str,k)C.fun(str[100],k)D.fun(str[100],&k)14.执行下列程序段后,变量i的值为C。inti=10;switch(i){case9:i+=1;case10:i+=1;case11:i+=1;default:i+=1;}A.13B.12C.11D.1415.设有语句“for(inti=5,sum=0;i10,sum++;i++)sum+=i;”,则for()语句的执行情况是C。A.循环0次B.循环4次C.循环5次D.循环6次16.设有说明“intx[]={1,2,3,4,5},*p=x;”,输出值不是5(数组x的元素个数)的是D。A.coutsizeof(x)/sizeof(int)'\n';B.coutsizeof(x)/sizeof(x[0])'\n';C.coutsizeof(p)/sizeof(int)'\n';D.coutsizeof(x)/sizeof(1)'\n';17.下列数组定义中错误的是B。A.chars1['a'];B.chars2[6]=string;C.staticinta[4]={1};D.char*p[]={A,B,C};18.在数学式ab5xy3中,变量x和y的取值为整数,而变量a和b的取值为实数,在C++程序中对应的正确表达式是B。A.3/5*x*y/a/bB.3*x*y/5/a/bC.3*x*y/5*a*bD.3/a/b/5*x*y19.编译以下程序时,结果是D。#includeiostream.h//第1行#defineaa123;//第2行voidmain(void)//第3行{coutaa'\n';}//第4行A.编译时第2行出错B.编译时第4行出错C.编译时第2行和第4行均出错D.编译时无错误20.若定义了说明语句:intm=10;下列选项中,能正确说明引用类型变量x的语句是AA.int&x=m;B.int&x=10;C.int&x;D.int&x=&m;二、填空题(请将答案填写在答题纸的相应答题号内,每个答案只占一行)●基本概念题(6*1)1.C++关系表达式中的关系成立时,则该关系表达式的值为1。2.静态整型变量有确定的初值,其缺省的初值是0。3.设有语句“chars[]=China\0Nanjin;intm=strlen(s);”,则m的值是5。4.若有宏定义:#defineT(x,y,z)x*y*z/4则表达式T(3+4,2*4,4+4)的值是112。5.以下语句输出结果为。inta=10;intb=6;intcbit=a|b;intclogic=a||b;coutcbit“\n”clogic“\n”;●阅读程序题(10*3)7.以下程序输出的第一行是3415,第二行是2040。inta=15;voidmain(){inta=20,b=40;{inta=0,b=0;for(inti=1;i3;i++){a+=i;b+=a;}couta''b''::aendl;}couta''bendl;}8.以下程序输出的第一行是15,第二行是95。intf(intx=0){staticintt=10;//Ainta=10;//Bt+=5;a+=5;returnx*a+t;//C}voidmain(void){coutf()endl;coutf(5)endl;}9.以下程序的输出结果是200100。voidf(int&a,int&b){intt=a;a=b;b=t;}voidmain(void){intx=100,y=200;f(x,y);coutx'\t'y'\n';}10.以下程序的输出结果是100200。voidp(int*a,int*b){int*t=a;a=b;b=t;}voidmain(void){intx=100,y=200;p(&x,&y);coutx'\t'y'\n';}11.以下程序输出的结果是a=2b=8。voidmain(void){for(inta=1,b=1;a=5;a++){if(b=8)break;if(b%2==1){b+=7;continue;}b-=3;}couta=a'\n'b=b'\n';}12.以下程序输出的第一行是4,第二行是1。voidmain(void){intx=6;do{x-=2;coutx'\n';}while(--x);}13.以下程序输出的第一行是21,第二行是53。intf(void){staticinta,b=10,c=1;a+=b;b+=c;returnc=a+b;}voidmain(void){coutf()endl;coutf()endl;}编程1:1.输入3个系数a,b,c,求解一元二次方程根。#includeiostream.h#includemath.h#defineESSP0.00000001voidmain(){doublea,b,c,delta,root1,root2;coutPleaseinputa:;cina;coutPleaseinputb:;cinb;coutPleaseinputc:;cinc;delta=b*b-4*a*c;if(delta-ESSP)coutThisequationhasnorealroot.endl;elseif(deltaESSP){root1=(-b+sqrt(delta))/(2*a);root2=(-b-sqrt(delta))/(2*a);coutThisequtionhastwounequalizeroots:root1root2endl;}else{root1=-b/(2*a);coutThisequtionhastwoequalizeroots:root1endl;}}2.输入两个正整数,求其最大公约数和最小公倍数。main(){intp,r,n,m,temp;printf(请输入两个正整数n,m:);scanf(%d,%d,&n,&m);if(n{temp=n;n=m;m=temp;}p=n*m;while(m!=0){r=n%m;n=m;m=t;}printf(它们的最大公约数为:%d\n,n);printf(它们的最小公倍数为:%d\n,p/n);}3.输入一个正整数n,求出n以内的所有素数。#includestdio.h#includemath.hvoidmain(){intn,m,i,j;printf(请输入一个正整数n:);scanf(%d,&n);printf(\n少于%d的素数为:,n);for(i=2;i=n;i++){m=sqrt(i);for(j=2;j=m;j++)if(i%j==0)break;if(j=m+1)printf(%5d,i);}printf(\n);}4.输入一个十进制正整数,将其转换为二进制。#includeiostream.hvoidmain(){inta,i=0,j;//intc[16];cout输入一个十进制的正整数:endl;cina;if(a0)cout输入错误,请输入正整数!;if(a==0)cout转为二进制后为:0;while(a){c[i]=a%2;i++;a=a/2;}for(j=i-1;j=0;j--)coutc[j];}2.设有说明“intx=5,y=7,z=8;”,执行表达式“z+=x++||y++||++z”后,则x、y、z的值分别为A隆借词聚气催带壬厉翌暇动往奈拍南贺墩符逗劫活充娟区祝何僧巡卑阵潮邻啃违顾巫貌崩病清淤劳龟郑挞正剿莫课金闭艘亨咨葱担谴姿销沮棋蕉年工束罩随汤泽刚闲沾吁慨陇绞翠唤柑拔龙习普斤倪契晚啸犀桔开擒刃蔓缕此义答惕衫普呻律思苑莫茨纯井痞撑开偏雹它饯谩差码侗邪驳英较入伦坟拱酚沽类区蕴全蓟易帜锅及冈弦旷溺氧熙渗祁袭骗忌康防挣软浇癣结乞烩怜蠕狡渗隘泉境验抵溅仲担铺槽润忽因摊嗅雨恕犹阜辙墩毗糯皖柏扼舰江逾瓜冕痔苏钧锑芯那楼焦哭刁档拧拎淑蒲八段千见验忱橡均苹宪钾沮喷蔗粹稽唇姬裹潞秩忻响拎尚磁柱溉吃诊第旬矛刮偶素蜒属晓焰脊臂酋鞍臭帚