2022年《C++程序设计》试卷试题及答案2套_第1页
2022年《C++程序设计》试卷试题及答案2套_第2页
2022年《C++程序设计》试卷试题及答案2套_第3页
2022年《C++程序设计》试卷试题及答案2套_第4页
2022年《C++程序设计》试卷试题及答案2套_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

《C++程序设计》试卷第4页共25页姓名学号姓名学号学院专业座位号(密封线内不答题)……………………密………………封………线……线………_____________________…《C++程序设计试卷》注意事项:1.考前请将密封线内填写清楚;2.所有答案请答在试卷的答案栏上;3.考试形式:闭卷;4.本试卷共五大题,满分100分, 考试时间120分钟。题号一二三四五总分得分评卷人单项选择题:(每题2分,共20分)结构化程序设计的三种基本控制结构是()。A)输入、处理、输出B)树形、网形、环形C)顺序、选择、循环D)主程序、子程序、函数下列哪个是C++的合法变量名()?A)8d

B)ex3.12

C)1_2a

D)_int若整型变量inta=2,b=1,c=3,d=4;则条件表达式a<b?a:c<d?c:d的值为()。A)1 B)2 C)3 D)4for(intx=0,y=0;!x&&y<=5;y++)语句执行循环的次数是()。A)0B)5C)6D)无限循环若一个函数体中定义与全局变量相同名字的变量x,在函数体内对x赋值,修改的是()。A)局部变量和全局变量都被修改 B)全局变量xC)不确定 D)局部变量x设有如下定义语句:inta[5],*p=a;,则下列表达式错误的是()。A)p++B)a++C)p-aD)a+1设有变量定义:doublex;intm;函数原型声明:voidf(double*,int&);则正确的函数调用语句是()。A)f(&x,m); B)f(x,&m); C)f(*x,&m); D) f(x,*m);若用数组名作为调用函数的实参,则传递给形参的是()。A)数组存贮首地址 B)数组的第一个元素值C)数组中全部元素的值 D)数组元素的个数设有二维数组a[3][4],不等价的一对表达是()。A)*(a[0]+2)与a[0][2] B)a[0]+3与&a[0][3]C) *a[1]与a[1][0] D)a[0][2]与a[0]+2若有函数原型intmax(inta,intb);并且有:int(*p)(int,int)=max;调用max函数的正确方法是()。A)(*p)max(a,b); B)*pmax(a,b);C)(*p)(a,b); D)*p(a,b);答案栏:1、____2、____3、____4、____5、____6、____7、___8、____9、___10、____简答题:(共20分)语句cout<<”y\x42\\x\102\nx”的显示结果是什么?说明理由。(3分)答:以下程序的输出结果是什么?请说明原因。(2分)intmain(){unsignedshorta=65535;shortintb;b=a;cout<<”b=”<<b;return0;}答:设有说明chara[6],*b=a;sizeof(a),sizeof(b)的值各是多少?分析结果原因。(3分)答:设有说明inta[2*3];请写出两个表示数组a最后一个元素地址的表达式(2分)。答:设在主函数中有以下定义和函数调用语句,且fun函数为void类型;请写出fun函数的原型。(2分)main(){doubles[10][22];intn;┆fun(s);┆}答:设有如下定义:structperson{charname[10];intage;};personclass[10]={“Johu”,17,“Paul”,19“Mary”,18,“Adam16,};根据上述定义,写出能输出字母M语句。(3分)答:以下语句不能正确输出单链表head的数据元素值,请找出原因。(2分)structlink{intdata;link*next;};link*head,*p;……p=head;while(p!=NULL){cout<<p.data;p++;} ……答:设有函数调用语句array_max_min(a,n,max,min);功能是由参数max,min返回基本整型数组a的n个元素中的最大值和最小值。对应的函数原型是什么?(3分)(只需给出原型,不用写函数定义)答:阅读程序,写出运行结果:(每小题4分,共20分)#include<iostream>usingnamespacestd;intmain(){intx,n;x=n=5;x+=n++;cout<<x<<n<<endl;return0;}#include<iostream>usingnamespacestd;intmain(){chars[6]="abcde",*p=s;cout<<*p<<p<<endl;return0;}《C++程序设计》试卷第25页共25页#include<iostream>usingnamespacestd;intmain(){inti,j;for(i=1;i<=3;i++){j=1; while(j<i) {cout<<i<<','<<j<<endl; j++;} }return0;}以下程序的输出的结果是#include<iostream>usingnamespacestd;voidincre();intx=3;intmain(){inti;for(i=1;i<x;i++)incre();}voidincre(){staticintx=1;x*=x+1;cout<<x;}#include<iostream>usingnamespacestd;voidfun(int,int,int*);intmain(){intx,y,z;fun(5,6,&x);fun(7,x,&y);fun(x,y,&z);cout<<x<<","<<y<<","<<z;return0;}voidfun(inta,intb,int*c){b+=a;*c=b-a;} 答案栏:1、__________________________ 2、__________________________3、__________________________ 4、__________________________5、__________________________ 程序填空题:(每空2分,共22分)下面程序的功能是:输入三角形的三条边存放在变量a,b和c中,判别它们能否构成三角形,若能,则判断是等边、等腰、还是其它三角形,在横线上填上适当内容。#include<iostream>usingnamespacestd;intmain(){floata,b,c;cout<<"a,b,c=";cin>>a>>b>>c;if(a+b>c&&b+c>a&&c+a>b) { if(【1】) cout<<"等边三角形!\n"; elseif(【2】) cout<<"等腰三角形!\n"; elsecout<<"其它三角形!\n"; }elsecout<<"不能构成三角形!\n";return0;}以下程序功能是打印100以内个位数为6且能被3整除的所有数。#include<iostream>usingnamespacestd;intmain(){inti,j;for(i=0;___【3】___;i++) {j=i*10+6;if(___【4】____)continue; cout<<j<<””;}return0;} 下列程序实现两个变量的值互换。#include<iostream>usingnamespacestd;voidswap(int*,int*);intmain(){inta=3,b=8;swap(【5】);cout<<"a="<<a<<"b="<<b<<endl;return0;}voidswap(int*x,int*y){inttemp=【6】;*x=*y;*y=temp;}求n(n≥6)内的所有偶数表示为两个素数之和,下图为输入16的运行结果。补充完整以下程序。[提示:一个偶数n(n≥6)可以表示为1+(n-1),2+(n-2),3+(n-3),…]#include<iostream>usingnamespacestd;#include<cmath>#include<iomanip>intisprime(int);intmain(){intnum,i,n;cout<<"请输入一个偶数N(N>=6):";cin>>num;for(n=6;n<=num;n+=2) for(i=3;i<=n/2;i+=2) if(____【7】_________) {cout<<setw(3)<<n<<"="<<setw(3)<<i<<"+"<<setw(3)<<(n-i)<<endl; break;}return0;}intisprime(intm){inti,k=sqrt(m);for(i=2;i<=k;i++) if(____【8】_________)return0; ____【9】_________}下面是一个类的测试程序,其执行结果为:50-12=38请将程序补充完整。#include<iostream>usingnamespacestd;classTest{intm,n;public:voidinit(int,int);voidprint();};voidTest::init(inti,intj){______【10】_______________}voidTest::print(){________【11】__________________}intmain(){Testa;a.init(50,12);a.print();return0;}答案栏:(1)__________________________ (2)__________________________(3)__________________________ (4)__________________________(5)__________________________ (6)__________________________(7)__________________________ (8)__________________________(9)__________________________ (10)_________________________(11)_____________________________________ 编程题:(18分)(6分)编写程序,打印正整数的平方和立方值。程序运行后显示相应的提示信息,要求输入2个正整数,然后显示这个范围的数据的平方和立方值。例如,分别输入整数1和10,执行效果如下图所示。答:(6分)以下程序求一维数组元素的最大值,并返回此值。请依题意编写函数f及填写函数原型。#include<iostream>usingnamespacestd;constintn=10;__________//f函数原型intmain(){inta[n],i,max;for(i=0;i<n;i++)cin>>a[i];max=f(a,n);cout<<"max="<<max;return0;}答:(6分)以下程序的功能是分离一个浮点数的整数部分和小数部分。程序用字符串存放输入数据,执行效果如图所示。根据main函数,请写出separate函数的原型和实现定义。#include<iostream>usingnamespacestd;____________________________________________//separate函数原型intmain(){chars[20];inti=0,d=0;cout<<"请输入一个浮点数:";cin>>s;separate(s,i,d); //调用函数cout<<s<<"整数部分是:"<<i<<endl;cout<<s<<"小数部分是:"<<d<<endl;return0;}答:姓名学号姓名学号学院专业座位号(密封线内不答题)……………………密………………封………线……线………_____________________…《C++程序设计试卷》参考答案注意事项:1.考前请将密封线内填写清楚;2.所有答案请答在试卷的答案栏上;3.考试形式:闭卷;4.本试卷共五大题,满分100分, 考试时间120分钟。题号一二三四五总分得分评卷人单项选择题:(每题2分,共20分)答案栏:1、__C__2、_D_3、_C__4、_C__5、_D_6、__B_7、_A_8、A__9、D_10、__C__简答题:(共17分)yB\xBxb=-16,4&a[5],a+5voidfun(double(*p)[22]);class[2].name[0]p->data;p=p->next;voidarray_max_min(int*,int,int*,int*);

阅读程序,写出运行结果:(每小题4分,共20分)106aabcde2,13,13,22,66,6,6程序填空题:(每空2分,共22分)a==b&&b==ca==b||a==c||b==ci<10j%3&a,&b*xisprime(i)&&isprime(n-i)!(m%i)return1;m=i;n=j;cout<<m<<"-"<<n<<"="<<m-n<<endl;编程题:(18分)#include<iostream>usingnamespacestd;#include<iomanip>intmain(){inta,b,i;cout<<"请输入第一个整数(>=0):";cin>>a;cout<<"请输入第二个整数(>第一个整数):";cin>>b;cout<<setw(10)<<"N"<<setw(10)<<"平方"<<setw(10)<<"立方"<<endl;for(i=a;i<=b;i++) cout<<setw(10)<<i<<setw(10)<<i*i<<setw(10)<<i*i*i<<endl; return0;}#include<iostream>usingnamespacestd;constintn=10;intf(int*,int);//f函数原型intmain(){inta[n],i,max;for(i=0;i<n;i++)cin>>a[i];max=f(a,n);cout<<"max="<<max;return0;}intf(int*a,intn){inti,max;max=a[0];for(i=1;i<n;i++) if(a[i]>max)max=a[i];returnmax;}#include<iostream>usingnamespacestd;voidseparate(char*,int&,int&);//separate函数原型intmain(){chars[20]={'\0'};inti=0,d=0;cout<<"请输入一个浮点数:";cin>>s;separate(s,i,d); //调用函数cout<<s<<"整数部分是:"<<i<<endl;cout<<s<<"小数部分是:"<<d<<endl;return0;}voidseparate(char*s,int&a,int&b){inti;for(i=0;s[i]!='.';i++)a=a*10+s[i]-48;for(i++;s[i]!=0;i++) b=b*10+s[i]-48;}姓名学号姓名学号学院专业座位号(密封线内不答题)……………………密………………封………线……线………_____________________…期末考试《C++程序设计》试卷注意事项:1.考前请将密封线内填写清楚;2.所有答案请答在试卷的答案栏上;3.考试形式:闭卷;4.本试卷共五大题,满分100分, 考试时间120分钟。题号一二三四五总分得分评卷人单项选择题:(每小题2分,共20分)一个C++程序从编写源程序到得到运行结果要经历的四个步骤是( )。 A)编译、编辑、连接、运行 B)编辑、编译、汇编、运行 C)编辑、编译、连接、运行 D)编译、连接、汇编、运行下列选项中,哪个是C++语言的合法变量名( )? A)file.cpp B)_123 C)9abc D)new对于语句序列:intx=5,y=6,z;floata=2.5;z=y/x+y/a+a;执行后z的值为( )。 A)5 B)6 C)6.1 D)5.9以下选项中可作为C语言合法常量的是( )。 A)-8e1.0 B)-080 C)-80. D)-80.0e设有inta=1,b=2,c=3,d=4;则条件表达式a<b?a:c<d?c:d的值为( )。 A)1 B)2 C)3 D)4以下程序的运行结果是( )。intmain(){unsignedshorta=65535;shortb;b=a;cout<<b;return0;} A)-32768 B)32767 C)65535 D)-1设有定义语句:inta[6]={2,4,6,8,5,7},*p=a,i;要求依次输出a数组6个元素的值,不能完成此操作的语句是( )。 A)for(i=0;i<6;i++)cout<<*(p++)<<endl; B)for(i=0;i<6;i++)cout<<*(p+i)<<endl; C)for(i=0;i<6;i++)cout<<*p++<<endl; D)for(i=0;i<6;i++)cout<<(*p)++<<endl;设有定义语句:chara[10],*p=a;以下赋值语句中,正确的是( )。 A)a="hello"; B)a[10]="hello"; C)strcpy(a,"hello"); D)*p="hello";下列带有默认参数的函数原型声明中,正确的是()。 A)floatfun(inta=5,intb=5,intc,intd); B)floatfun(inta=5,intb=5,intc,intd=5); C)floatfun(inta=5,intb,intc,intd); D)floatfun(inta,intb,intc=5,intd=5);设有定义语句:structpoint{intx;inty; }v1;则以下语句中正确的是( )。 A)point.x=10; B)pointv2;v2.x=10; C)structv2;v2.x=10; D)v1v2;v2.x=10;答案栏:1、____2、____3、____4、____5、____6、____7、___8、____9、___10、____二、程序填空题(每空2分,共20分)答案栏:1、___________________________________2、___________________________________3、___________________________________4、__________;___________;____________;_5、__________________;_______________;_6、___________________________________7、___________________________________8、___________________________________9、___________________________________10、___________________________________1、以下函数的功能是:用递归法将一个整数n转换成字符串。例如:输入整数1635,应输出字符串"1635"。n的位数不确定,可以是任意位数的整数。请填空。voidfun(intn){ if(n<10)【1】//递归出口 else { 【2】//递归体 putchar(n%10+48); }}2、以下程序的功能是:用起泡法对6个整数排序(按从小到大顺序)。请填空。#include<iostream>usingnamespacestd;voidmain(){ inta[6],i,j,t; for(i=0;i<6;i++) cin>>a[i]; for(j=0;j<5;j++) for(i=0;【3】;i++) if(a[i]>a[i+1]) { 【4】//交换两个数的位置,使小数上浮 } for(i=0;i<6;i++) cout<<a[i]<<"";}3、以下程序的功能是:定义一个结构体类型,内含学生学号和一门课的成绩,并开辟动态内存存放一个学生的数据:学号1001,成绩90。执行该程序后运行结果如下:1001,90↙请填空。#include<iostream>usingnamespacestd;structStudent{intn;//学号doubles;//成绩};voidmain(){ Student*p; p=newStudent; 【5】//赋值 【6】//输出 deletep;}4、以下程序的功能是:执行该程序后运行结果如下:43↙请填空。#include<iostream>usingnamespacestd;voidf1(【7】){ x=x+2;y=y+2;}voidmain(){ inta=2,b=3; f1(a,b); cout<<a<<b<<endl;}5、以下程序的功能是:输出二维数组各元素值。请填空。#include<iostream>usingnamespacestd;voidmain(){ voidoutput(int(*)[3]); inta[2][3]={1,2,3,4,5,6}; output(【8】);}voidoutput(int(*p)[3]){ inti,j; for(i=0;i<2;i++) { for(j=0;j<3;j++) cout<<【9】<<""; cout<<endl; }}6、以下函数的功能是:判断一个数是否为素数。请填空。boolprime(intm){ inti; boolprime1; prime1=true; for(i=2;i<=sqrt(m);i++) if(m%i==0) 【10】 returnprime1;}三、阅读程序,写出运行结果。(每小题3分,共24分)答案栏:1、_____________________________2、_____________________________3、_____________________________4、_____________________________5、_____________________________6、_____________________________7、_____________________________8、_____________________________1、#include<iostream>usingnamespacestd;voidmain(){ inti=3,j=6,m,n; m=i++-++j; n=++i+j--; cout<<m<<''<<n<<''<<i<<''<<j;}2、#include<iostream>usingnamespacestd;voidmain(){doublex=-0.5,y;if(x<1) if(x<-1)y=x+1; elseif(x>0)y=x+2; elsey=x+4; elsey=x+5; cout<<"x="<<x<<",y="<<y;}3、#include<iostream>usingnamespacestd;voidmain(){ intx=2,y=1; while(x<4) switch(x++) { case3:y++; case1:y+=3;break; case2:y--; } cout<<y;}4、#include<iostream>usingnamespacestd;voidp(floatf){ cout<<"float"<<f;}voidp(doubled){ cout<<"double"<<d;}voidp(inti){ cout<<"int"<<i;}voidmain(){ p(2); p('A'); p(2.1);}5.#include<iostream>usingnamespacestd;intx,y;voidfun(inta){inty,b;b=a+2;x=x+a;y=x-b;cout<<x<<""<<y<<""<<a<<""<<b<<endl;}intmain(){inta=1,b=2;x=3,y=4;fun(b);cout<<x<<""<<y<<""<<a<<""<<b<<endl;return0;}6.#include<iostream>usingnamespacestd;intf(inta){intb=0;staticintc=3;b++;c++;return(a+b+c);}intmain(){for(inti=0;i<3;i++)cout<<f(i)<<"";return0;}7.#include<iostream>usingnamespacestd;intmain(){charch[]="STUDY";cout<<ch<<endl<<ch[2]<<endl<<ch+1<<endl;return0;}8.#include<iostream>usingnamespacestd;intmain(){inta=12,b=34,*p,*q,*r;p=&a;q=&b;if(*p<*q){r=p;p=q;q=r;}cout<<*p<<""<<*q<<endl;*q=*p+*q;cout<<a<<""<<b<<endl;return0;}四、简答题(每小题4分,共12分)1.试分析字符串常量"abc\n\\efg\101"由哪几个字符构成?该字符串占用多少个字节?若用cout<<"abc\n\\efg\101";会看到的输出结果是什么?2.若有如下定义:unionctype{floaty;shortintm;charcode[3];};ctypecdat;试画出变量cdat的内存构造图(示意图),并指出该变量占用内存的字节数。3.下面程序有错误:#include<iostream>usingnamespacestd;voidfun(inta[]){for(inti=0;i<5;i++)cout<<*a++<<"";//(1)cout<<endl;}intmain(){inta[5]={10,20,30,40,50};for(inti=0;i<5;i++)cout<<*a++<<"";//(2)cout<<endl;fun(a);return0;}源程序中(1)和(2)之处写法一样,但编译时(2)处出错而(1)处正确,试指出原因,并将(2)处改正。五、程序设计题(每小题8分,共24分)1.设计程序输出数列{An}的前50个数,输出时要求每行输出5个数。数列有下列规律:2.众数是指一组数据中出现次数最多的那个数据。例如:{1,2,2,3,3,2,,4}的众数是2。试设计一个求众数的函数mode,其形式参数有2个:数组(该数组存放一组数据)、数据个数。函数的返回值是众数。在主函数中输入一组数据存放在数组中,然后调用函数mode求得众数,最后在主函数中显示出众数。

3.需要求2个不同的圆柱体的表面积,设计一个面向对象的程序。数据成员包括:radius(半径),height(高);还可根据需要定义其它数据成员。要求分别用成员函数实现以下功能:(1)由键盘输入圆柱体的半径、高;(2)计算圆柱体的表面积;(3)输出圆柱体的表面积。请编写程序。《C++程序设计》试卷参考答案单项选择题:(每题2分,共20分)1、_C__2、_B__3、_A__4、_C__5、_A__6、_D__7、_D_8、C_9、D10、_B__二、程序填空题(每空2分,共20分)1、putchar(n+48);2、fun(n/10);3、i<5-j4、t=a[i];a[i]=a[i+1];a[i+1]=t;5、p->n=1001; p->s=90;6、cout<<p->n<<","<<p->s<<endl;7、int&x,inty8、a9、*(*(p+i)+j)10、prime1=false;三、阅读程序,写出运行结果。(每题3分,共24分)1、-412562、x=-0.5,y=3.53、44、int2int65double2.15、5124

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论