




已阅读5页,还剩7页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1概念填空题1.1 数组定义时有3个要素:数组名、数组元素的 类型 和数组元素的 个数 。按元素在数组中的位置进行访问,是通过 下标 进行的,称为 直接 或 索引 访问。1.2 C+中的多维数组是 嵌套 定义的,即多维数组的基本定义是 数组 构成的数组,三维数组的元素是 二维数组 。1.3 计算机内存是一维编址的,多维数组在内存中的存储 必须转换为一维方式 ,C+多维数组在内存中的排列是 行 方式,即越 低 的下标变化 快 。设数组a有m行n列,每个元素占内存u个字节,则aij的首地址为 a00的地址 + (i*n+j)*u 。1.4数组名是 整型 常量,数组名赋给同类型的指针后,该指针是指向数组 首元素 的指针。数组名在表达式中被转换为指向 数组首元素 的指针常量。1.5每个对象都有一个指向自身的指针,称为 this 指针,通过使用它来确定其自身的地址。该指针只能 读 ,不能写。1.6在C+中,对象访问成员所用的运算符是 . ,通过指针访问对象的成员所用的运算符是 -。1.7 当动态分配失败时,系统采用 返回NULL 来表示发生了异常。如果new返回的指针丢失,则所分配的自由存储区空间将无法收回,称为 内存泄漏 。这部分空间必须在 计算机重启 才能找回,这是因为无名对象的生命期 为整个程序 。1.8 默认复制构造函数只能完成 对象成员的赋值 ,可能会造成 重复释放 ,默认的析构函数可能会产生 内存泄漏 。“=”运算也会产生对象 重复释放 。因此我们需要自定义复制构造函数完成对象的 深复制 。1.9 在用new运算符建立一个三维数组int 4*5*6,使用了 3 个下标运算符,用delete运算符释放该数组时使用了 1 个下标运算符。new返回的指针类型是 int (*) 56 。2 简答题2.1 用一维数组名作函数参数和用一维数组元素函数参数的含义是否相同?为什么2.2 指针变量与整型量的加减运算代表什么意义?2.3个指向普通变量的指针进行减运算是否有意义?为什么2.4什么是浅拷贝?什么是深拷贝?二者有何异同?何时必须自定义复制构造函数、析构函数,何时必须自定义=运算符中在函数, 自定义的复制构造函数、析构函数应该怎样设计?2.5从右往左解释int *(*(*pf)5)(double *)中4个*的含义。2.6 为什么动态建立类对象数组时,类的定义中一定要有默认的构造函数?3选择题3.1以下对一维数组a的正确定义是(C )。 A.int n=5, an; B.int a (5); C.const int N=5;int aN; D.int n; cinn; int an;3.2己知int a10=0,1,2,3,4,5,6,7,8,9,*p=a;则不能表示数组a中元素的选项是( C )。 A.*a B.*p C.a D.a p-a3.3 己知int a=0,2,4,6,8,10,*p=a+1;其值等于0的表达式是(D )。 A.*(p+) B.*(+p) C.*(p-) D.*(-p)3.4已知char *a=( fortran,” basic, pascal, Java,”c+”;则语句couta3;的显示结果是( C )。 A.t B.一个地址值 C.java D.javac+3.5 下列关于this指针的叙述中,正确的是( D)。 A任何与类相关的函数都有this指针 B类的成员函数都有this指针 C类的友元函数都有this指针 D类的非静态成员函数才有this指针3.6对于类型相同的两个指针变量之间,不能进行的运算是( C )。AP=5;CS.*P=5;D*S.P=5;3.12下面程序段的运行结果是( D )。char *p=”abcdefgh”;p+=3;coutstrlen(strcpy(p,”ABCD”);A8 B12 C4 D出错3.13 当定义const char *p=”ABC”;时,下列语句正确的是(D )Achar *q=p;Bp0=B; C*p=0;Dp=NULL;3.14 s0是一个string类串,定义串sl错误的是(A)。Astring s1(3,”A”);Bstring s1(s0,0,3);Cstring s1(“ABC”,0,3);Dstring s1=”ABC”;4写出程序运行结果4.1#includeusing namespace std;class Locationint X,Y;public:Location(int initX,int initY)init(initX,initY);void init (int initX,int initY)X=initX,Y=initY;int GetX()return X;int GetY()return Y;void display(Location& rL)coutrL.GetX( ) rL.GetY( )init(7,8);for(int i=0;i5;i+)display(*(rA+);78112253444.2#include using namespace std;int main() char w 10=“ABCD”,”EFGH”,”IJKL”,”MNOP”,k; for(k=1;k3;k+) coutwkendl;EFGHIJKL5. 编程题5.1已知求成绩的平均值和均方差公式:ave=,dev=其中n为学生人数,为第i个学生成绩。求某班学生的平均成绩和均方差。#include #include #include #include /using namespace std;double ave(int *,int);double dev(int *,double,int);void create(int *,int);const int N=10;void main()int aN,i;double s,d; srand(time(0);create(a,N);for(i=0;iN;i+)coutai, ;s=ave(a,N);coutave= s;d=dev(a,s,N);cout dev= dendl;double ave(int *a,int N)double s=0;int i;for(i=0;iN;i+)s+=ai;return s/N;double dev(int *a,double s,int N)int i;double d=0;for(i=0;iN;i+)d+=(ai-s)*(ai-s);return sqrt(d/N);void create(int *c,int N)int i;for(i=0;iN;i+)ci=rand()%100; 5.2用随机函数产生10个互不相同的两位整数,存放至一维数组中,并输出其中的素数。#include #include #include #include /using namespace std;void create(int *,int);void prime(int *,int);const int N=10;void main()int aN,i;srand(time(0);create(a,N);for(i=0;iN;i+)coutai ;coutendl;prime(a,N);void prime(int *p,int N)int i,j,k;for(i=0;iN;i+)if(pi2)continue;k=sqrt(pi);for(j=2;jk)coutpi ;coutendl;void create(int *c,int N)int i,d;int f100=0;for(i=0;iN;i+)dod=rand()%100;while(fd);ci=d;fd=1;5.3设计一个函数,将一个整型数组按升序排序。#include #include #include #include /using namespace std;void create(int *,int);void bubblesort1(int *,int);void print(int *,int);const int N=10;void main()int aN;srand(time(0);create(a,N);print(a,N);bubblesort1(a,N);print(a,N);void bubblesort1(int r,int n)int i,j,temp;bool changflag;for(i=n-1;i0;i-)changflag=false;for(j=0;jrj+1)temp=rj;rj=rj+1;rj+1=temp;changflag=true;if(!changflag)break;void create(int *c,int N)int i,d;int f100=0;for(i=0;iN;i+)dod=rand()%100;while(fd);ci=d;fd=1;void print(int *a,int N)int i;for(i=0;iN;i+)coutai ;coutendl;5.4在一个二维数组中形成如以下形式的n阶矩阵: (1)去掉靠边元素,生成新的n-2阶矩阵;(2)求矩阵主对角线下元素之和; (3)以方阵形式输出数组。#include using namespace std;void main()int a55,b33;int i,j,s=0;for(i=0;i5;i+)for(j=0;j=i;j+)aij=i+1-j;for(j=i+1;j5;j+)aij=1;for(i=0;i5;i+)for(j=0;j5;j+)coutaij ;coutendl;for(i=1;i4;i+)for(j=1;j4;j+)bi-1j-1=aij;for(i=0;i3;i+)for(j=0;j3;j+)coutbij ;coutendl;for(i=1;i5;i+)s+=aii-1;coutsendl;5.5 输入一个表示星期几的数,然后输出相应的英文单词。要求使用指针数组实现。在main函数中调用以上函数进行测试。#includeusing namespace std;long sum(int,int);int main()char *weekday7=Monday,Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday;int day;coutday;coutweekdayday-1endl;return 0;5.6设计一个递归函数,求整型数组的最大元素及小元素。在主函数中定义和初始化该整型数组,调用递归函数,并显示结果。#includeusing namespace std;const int N=10;int Max(int *,int,int);int Min(int *,int,int);int main()int aN=4,12,9,10,0,-4,3,20,8,-10;int max,min;max=Max(a,0,9);min=Min(a,0,9);coutMax= max, Min= mint? an:t;int Min(int *a,int n,int m)int t;if(n=m)return an;elset=Min(a,n+1,m);return ant? an:t;5.7编写程序,按照指定长度生成动态数组,用随机数对数组元素赋值,然后逆置该数组元素。输出逆置前、后的数组元素序列。#include #include #include /using namespace std;const int N=10;int main()int *pi=new intN;int i,j;srand(time(0);for(i=0;iN;i+)pii=rand();coutpii ;coutendl;for(i=0;iN/2;i+)j=pii;pii=piN-1-i;piN-1-i=j;for(i=0;iN;i+)coutpii ;coutendl;delete pi;return 0;5.8定义函数void insert(char *str1,char* str2, int pos),将字符串str1插入到字符串str2中pos指定的位置处。#include using namespace std;void insert(char *str1,char* str2, int pos);int main()char str110=C+;char str230=This is program;coutstr2endl;insert(str1,str2,8);coutstr2=p2);*(p2+)=*p1+;/str1的字符逐个插入p3+;5.9将一组C+关键字存放到一个二维数组中,并找出这些关键字的最小者。#include #include using namespace std;int main()char *s10=char,do,bool,return,long,double,auto,extern,int,public;int i;char *p=s;for(i=1;i=0)p=s+i;cout*pendl;return 0;或#include #include using namespace std;int main()char s10=char,do,bool,return,long,double,auto,extern,int,public;int i;char (*p)10=s;for(i=1;i=0)p=s+i;cout*pendl;return 0;5.10 定义函数int find(char *seareched,char* search, int pos)。函数的功能是从字符串search第pos位置开始寻找子串seareched,找到返回seareched在search的位置,找不到返回-1。#include using namespace std;/在s的pos位置开始寻找tint find(char* s,char* t,int pos)char* pshead=s+pos,*pthead=t;while(*pshead)while(*pshead=*pthead & *pshead & *pthead)pshead+;pthead+;if(*pthead=0) return pshead-s-strlen(t);if(*pshead=0) return -1;pshead=pshead-(pthead-t)+1;pthead=t;return -1;int main()char s100=This is C+ program;char t100=is;int pi=find(s,t,3);if(pi=-1)coutNo such substring!endl;else coutpiendl;return 0;5.11把某班学生的姓名和学号分别存放到两个数组中,从键盘上输入某一学生学号,查找该学生是否在该班;若找到该学生,则显示出相应的姓名。#include #include using namespace std;int main()char Name10=Zhang,Li,Wang,Qian,Zhao,Wu,Xu,Tang,Shen,Liang;char No10=08144201,08144204,08144209,08144212,08144215,08144219,08144222,08144227,08144230,08144234;char no9;int i;coutno;for(i=0;i10;i+)if(strcmp(no,Noi)=0)coutNamei=10)coutNO such stud
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 施工合同成本管理措施
- 建筑工地安全责任保险合同
- 领导力与文化塑造-洞察及研究
- 生态补偿效果评价-洞察及研究
- 疫情后品牌重塑-洞察及研究
- 材质化学成分分析-洞察及研究
- 复杂形状表面清洗-洞察及研究
- 餐厅饭馆转让合同协议书
- 餐饮店股东合作协议合同
- 智慧灌溉技术推广-洞察及研究
- 大象版五年级上册《科学》全一册全部课件(共25课时)
- 大学美术鉴赏(第2版)PPT完整全套教学课件
- 2023年放射科护理质量与安全管理计划汇编6篇
- 北师大版一年级数学上册全册教案及教学反思
- 简易施工方案模板范本
- 2023年青海省新华发行集团限公司招聘3人(共500题含答案解析)笔试历年难、易错考点试题含答案附详解
- 结算合同合同
- 中车南京浦镇车辆有限公司
- 领导干部经济责任审计
- 电子科技大学微积分上册
- 初一英语全册完形填空100题及详细答案解析
评论
0/150
提交评论