VC试卷(含参考答案)_第1页
VC试卷(含参考答案)_第2页
VC试卷(含参考答案)_第3页
VC试卷(含参考答案)_第4页
VC试卷(含参考答案)_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

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

文档简介

PAGE1共7页,第7页使用前注意保密江苏科技大学非计算机专业学生VisualC++程序设计语言期末考试试卷代号:VC09说明:本试卷为笔试题,含选择、填空、及编程三部分。本试卷满分为100分,考试时间为120分钟。3、所有答案必须写在答题纸上,否则不计成绩。填写答案时,注意题号;特别是填空题,做到答案、填空号与试题对应。答题纸上必须写明学号(含班级号)、姓名。

选择题(10x2=20)1、设a,b为整型变量,且均不为0,以下关系表达式中恒成立的是。:A、a*b/a*b==1 B、a/b*b/a==1C、a/b*b==a D、a/b*b+a%b==a2、在C++中,判断char型变量ch是否为大写字母的正确表达式是。:A、’A’<=ch<=’Z’ B、(ch>=’A’)&(ch<=’Z’)C、(ch>=’A’)&&(ch<=’Z’) D、(‘A’<=ch)AND(‘z’>=ch)3、设有说明语句:charstr[]="abcde";inta[5];下列选项中,存在语法错误的是:A.cout<<str; B.cin>>str; C.cin>>a; D.cin>>a[0];4、下列二维数组的定义中,不正确的是:A、inti[][4]={{1,2,3},4,5}; B、inti[4][]={1,2,3,4,5,6};C、inti[][4]={1,2}; D、inti[4][4]={{1},{2},{3},{4}};5、设有宏定义如下,则变量x的值为:#defineA4#defineBA+6#defineC(x)x*B/2 intx=C(2+8);A、50 B、43 C、42 D、376、设有说明语句:voidfun(int*t1,int&t2);inta=5,b=10;以下对函数fun的调用语句中,正确的是:A.f(a,b); B.f(&x,&y); C.f(a,&b); D.f(&a,b);7、设有说明:inta=5,b=5,c;执行语句:c=a>b&&(c=b)&&(b*=a++);则a、b、c的值分别为:A.6,25,0 B.5,5,0 C.5,5,5 D.6,25,58、关于类的访问特性的说明,下列说法正确的是()A在同一个类中,说明访问特性的关键字可以多次使用B成员数据必须说明为私有的C必须在每一个成员前单独标明访问特性D必须首先说明私有特性的成员9、用友元函数进行单目运算符重载时,该友元函数的参数表中参数的个数为:A.0 B.1 C.2 D.1或210、以下有关this指针的叙述中,不正确的是:A.类的非静态成员函数中存在一个this指针 B.this指针缺省的初值为0C.类的非静态成员函数中可直接使用this指针 D.this指针指向当前对象填空题(30x2=60)1、设有inta,b;执行语句:b=(a=2+3,a*4),a+5;后,a+b的值为(1)。2、设指针p指向单向链表的某节点,p->next指向p节点的下一个节点。节点p是链表的倒数第三个节点的条件是:(2)。3、执行下列语句序列后,变量i的值为(3),变量j的值为(4)。 chars[20]=”123\0abc”; inti=strlen(s),j=sizeof(s);4、下列程序的运行结果是(5)。#include<iostream.h>voidsub(int*x,intn,intk){ if(k<=n)sub(x,n,3*k); *x+=k;}voidmain(){intx=0;sub(&x,6,2);cout<<x<<endl;}5、下列程序输出的第1行为(6),第2行为(7),第3行为(8)。#include<iostream.h>inta,b=5;voidfun(inta,intc){ staticx; x+=a+c; inty=10; y+=b+c; cout<<x<<'\t'<<y<<'\n';}voidmain(){ inta=10,b=20; fun(a,b); { inta=30; fun(a,b); } cout<<a<<'\t'<<::a<<'\n';}6.下列程序的输出是(9)。#include<iostream.h>voidmain(void){ inta[4][6]={0},i,j,s; for(i=0;i<4;i++){if(i>3)break;for(j=0;j<6;j++){ if(j%2)continue;a[i][j]++; }}for(s=0,i=0;i<4;i++)for(j=0;j<6;j++)s+=a[i][j];cout<<s<<endl;}7.程序输出的第一行是(10),第二行是(11)。#include<iostream.h>intfun(inta,int&b){ a=a>b?a:b; b+=a; return(a+b);}voidmain(void){ inta=5,b=2,c; c=fun(a,b); cout<<a<<'\t'<<b<<'\t'<<c<<endl; c=fun(a,b); cout<<a<<'\t'<<b<<'\t'<<c<<endl;}8.下列程序的输出是(12)。#include<iostream.h>intfun2(int);intfun1(intn){ if(n==1)return1; elsereturnn+fun2(n-1);}intfun2(intn){ intt=1; if(n==1)t=1; elset=n*fun1(n-1); returnt;}voidmain(void){ cout<<fun2(4)<<endl;}9.下列程序的输出是(13)。#include<iostream.h>char*str(char*p1,char*p2){ char*p=p1; while(*p)p++; while(*p++=*p2++); *p++='\0'; returnp1;}voidmain(void){ chars1[50]={"abc"}; chars2[200]={"ABC"}; cout<<str(s1,str(s2,s1))<<'\n';}10.下列程序输出的第一行是(14),第二行是(15)。#include<iostream.h>classA{ inta,b;public: A(intt1,intt2){a=t1;b=t2;} virtualvoidfun(){cout<<a+b<<"\n";}};classB:publicA{ intc,d;public: B(inta,intb):A(2*a,2*b){c=a;d=b;} voidfun(){cout<<c+d<<"\n";}};voidmain(void){ A*pa=newB(3,5),&a1=*newB(1,1); pa->fun(); a1.fun();deletepa;delete&a1;}11、下列程序通过调用sort函数对具有n个元素的一维数组排序,sort函数采用间接选择排序法实现数组的降序排列,其算法是:(1)第1趟,找出数组中的最大元素放在第1位;第2趟,找出数组剩余元素中的最大者放在第2位;以此类推,直至排好数组的前n-1个元素;(2)每趟排序,找到当前数组中最大元素的位置,并把该位置的元素放到对应位置。请完善程序。[程序]#include<iostream.h>voidsort(intd[],intn){ for(inti=0;i<n-1;i++) { for(intj= (16) ,k=i;j<n;j++) if(d[j]>d[k])k=j; if(k!=i) {inttmp=d[i];(17); (18) ; }}voidmain(){ intt[10]={2,5,6,1,8,4,7,3,9,6}; sort( (19) ); for(inti=0;i<10;i++) cout<<t[i]<<'\t'; cout<<'\n';}12、以下程序找出二维数组a中每列的最大值,并按一一对应的顺序放入一维数组b中。即第0列的最大值放入b[0],第1行的最大值放入b[1]…然后输出数组a和每列的最大值。请完善程序。[程序]#include<iostream.h>voidfun(intp[][5],intn,inta[]){for(inti=0;i<5;i++){a[i]=(20);for(intj=0;j<(21);j++) if(p[j][i]>a[i])a[i]=p[j][i];}}voidmain(){intb[5],a[3][5]={23,4,45,65,5,65,8,87,3,26,7,68,4,97,243};(22);for(inti=0;i<3;i++){ for(intj=0;j<5;j++) cout<<a[i][j]<<'\t'; cout<<'\n';}cout<<"该列最大值:"<<'\n';for(i=0;i<5;i++) cout<<(23)<<'\t';cout<<'\n';}13、以下程序的功能是:求满足以下条件的所有三位数:(1)该三位数是某一个二位数的平方;(2)该三位数的各位数字中至少含有一个数字5。请完善程序#include<iostream.h>intf(inty) //y若满足条件,返回1;否则返回0{ inti,j,k; i=(24);//取出y的个位上的数字 j=(25);//取出y的十位上的数字 k=(26);//取出y的百位上的数字 if((27)) //判断y的各位数字中是否有数字5 return0; for(i=10;;i++){if(i*i>999)return0;if((28))return(29);} return(30);}voidmain(void){ for(inti=105;i<=995;i++) if(f(i)) cout<<i<<endl;}三、编程题(20分)试定义一个类STR,将一个字符串较大的m个字符取出构成另一个降序字符串(字符串中的字符按其ASCII值从大到小排列)。要求原字符串中的字符顺序保持不变。具体要求如下:(1)私有数据成员char*p;p为字符串的首地址。(2)公有成员函数STR(char*s);构造函数,用字符串s初始化数据成员p。voidfun(chart[],intm);将字符串p中ASCII值最大的m个元素提取出来按题意要求存放在参数t中。请使用如下算法:先将字符串p拷贝至一个临时数组中,然后在临时数组中按各字符的的大小排序,再从排好序的数组中依次取出m个元素放入数组t,注意最后的字符串结束标记。~STR();析构函数,撤销所占用的动态存储空间。voidprint();输出数组的所有元素。(3)在主函数中对类STR进行测试。用一个字符串生成一个STR类型的对象。再定义另一数组,用成员函数fun()按要求提取出相应的数据存放到该数组并在主函数中输出。

《C++程序设计》试题参考答案及评分标准(VC09)一、填空(2x10=20分)1.D 2.C 3.C 4.B 5.D 6.D 7.B 8.A 9.D 10.B二、填空(2x30=60分)25p->next->next==NULL3202630357.80358.100 9.12571211.5142112.2013.abcABCabc14.815.216.i+1;17.d[i]=d[k]18.d[k]=tmp 19.t,1020.p[0][i]21.nfun(a,3,b)b[i]24.y%1025.y/10%1026.y/10027.i!=5&&j!=5&&k!=528.y==i*i29.130.0三、编程题(20分)#include<iostream.h>//1'#include<string.h>//1'classSTR{ char*p;//1'public:STR(char*t)

温馨提示

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

评论

0/150

提交评论