下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
①链如一个链表是这样的:1->2->3->4->5通过反转后成为5->4->3->2->1。structlinkaintlinka*voidreverse(linka*&head)if(headlinka*pre,*cur,ne=cur-cur->next=pre=cur=18.head->next=19.head=最后一个结点会形成一个环,所以必须将函数的返回的节点的next域置为NULL。因为要改变head指针,所以我用了。算法的源代码如下:linka*reverse(linka*p,linka*&{if(p==NULL||p->next=={return7.{linka*tmp=reverse(p-tmp->next=return②已知String类定class{String(constchar*strNULL);String(constString&another);~String();String&operater=(constString&rhs);char*m_data;String::String(constchar{ifstrNULL//strlenNULL{m_data=newchar[1];m_data[0]='\0';}{m_data=newchar[strlen(str)+1];}}String::String(constString{m_data=newchar[strlen(another.m_data)+1];}String&String::operator=(constString{if(this==&rhs)return*this;m_data=newchar[strlen(rhs.m_data)+1];return*this}{delete[]m_data}③网上流传的c++笔试题求下面函数的返回值(微软int{intcountx=0;{countxx=x&(x-}return}x9999答:就是某个目标变量的“别名”(alias),对应用的操作与对变量直接操 将“”作为函数参数有哪些特点率和所占空间。在什么时候需要使用“常如果既要利用提高程序的效率,又要保护传递给函数的数据不在函数中被改变,就应使用常。常方式:const类型标识符&名=目标变量例1intaconstint&ra=a;ra=1;//错误a=1;//正确stringfoo(voidbar(string&bar(foo( o原因在于foo()和"oworld"串都会产生一个临时对象,而在C++中,这些临时对象都是const上面的表达式就是试图将一个const类型的对象转换为非const类型,这是的。将“”作为函数返回值类型的格式、好处和需要遵守的规则&函数名(形参列表及类型说明)用也会失效,产生runtimeerror!不能返回局部变量的。这条可以参照EffectiveC++[1]的Item31。的Item31。虽然不存在局部变量的 new分配内存的),又 是作为一个临时变量出现,而没有被赋予一个实际的变量,那么这个 向的空间(由new分配)就无法释放,造成memoryleak。可以返回类成员的,但最好是const。这条原则可以参照Effective赋值操作封装在一个业务规则当中。如果其它对象可以获得该属性的非常量引endl;因此这两个操作符的返回值应该是一个仍然支持这两个操作符的流引回一个流对象,程序必须重新(拷贝)构造一个新的流对象,也就是说,连续的两个<<操作符实际上是针对不同对象的!这无法让人接受。对于返回一个流一选择很关键,它说明了的重要性以及无可替代性,也许这就是C++语言 可以连续使用的,例如:xj10;或者(x=10)=100;赋值操作符的返回值必须#iint&put(intn);intvals[10];interror=-1;voidmain(){put(0)=10;put(0)vals[0]=10;put(9)=20;put(9)vals[9]=20;int&put(int{if(n>=0&&n<=9)returnelse{cout<<"subscripterror";returnerror;}能返回,EffectiveC++[1]的Item23详细的讨论了这个问题。主要原因是new象的、返回一个静态对象。根据前面提到的作为返回值的三个规2、3两个方案都被否决了。静态对象的又因为((a+b)(c+d))会“”与多态的关系ClassA;ClassB:ClassA{...};Bb;A&ref=“”与指针的区别是什么ref和pointer什么时候需要“2-8{inti;void{a.x[0]=a.x[1]=}{union{/*定义一个联合intcharfirst;charnumber.i=0x4241;/*联合成员赋值printf("%c%c\n",number.half.first,mumber.half.second);number.half.first='a';/*联合中结构成员赋值*/}6261(number.i和number.half已知strcpy的函数原型:char*strcpy(char*strDest,constchar*strSrc)其中strDest是目的字符串,strSrc是源字符串。不调用C++/C的字符串库函数,请编写函数strcpy。char*strcpy(char*strDest,constchar{if(strDest==NULL||strSrc==NULL)returnNULL;if(strDest==strSrc)returnstrDest;char*tempptr=strDestwhile((*strDest++=*strSrc++)!=returntempptr}Stringclass{String(constchar*strNULL);String(constString&another);~String();String&operater=(constString&rhs);char*m_data;String::String(constchar{ifstrNULL//strlenNULL{m_data=newchar[1];m_data[0]='\0';}{m_data=newchar[strlen(str)+1];}}String::String(constString{m_data=newchar[strlen(another.m_data)+1];}String&String::operator=(constString{if(this==&rhs)return*this;m_data=newchar[strlen(rhs.m_data)+1];return*this}{delete[]m_data}.h头文件中的ifndef/define/ 的作用#include与#includefileh"的区别作路径搜寻并file.h。在C++程序中调用被C编译器编译后的函数,为什么要加externC/C++语言中表明函数和全局变量作用范围(可见性)的模块BA编译extern"C"是连接申明(linkagedeclaration),extern"C"修饰的变量和函voidfoo(intx,inty相同的机制,生成的新名字称为“mangledname”)。C++voidfoo(intx,intyvoidfoo(intx,floaty)编译生成的符号是不相同的,后者为_foo_int_float未加extern"C"时的连接方式//模块A头文件moduleA.h#ifndefMODULE_A_H#defineMODULE_A_Hintfoo(intx,inty);在模块B中该函数//模块B实现文 #include"moduleA.h"加extern"C"后的编译和连接方//模块A头文件moduleA.h#ifndefMODULE_A_H#defineMODULE_A_Hextern"C"intfoo(intx,inty);intfoo(intx,inty),则模块BA所以,可以用一句话概括extern“C”这个的真实目的(任何语言中的任是什么,这样我们可以更深入地理解许多问题)C++与C及其它语言明白了C++中extern"C"的设立,我们下面来具体分析extern"C"通常的extern"C"extern{#include}#ifndefC_EXAMPLE_H#defineexternintadd(intx,inty);/*c:cExample.c#include"cExample.h"intadd(intx,inty{returnx+}extern"C"{#include}intmain(intargc,char*{return}时,应加extern"C"{ 在C中C++语言中的函数和变量时,C++的头文件需添加extern"C",但是在C语言中不能直接 了extern"C"的该头文件,应该仅将C文件中将C++中定义的extern"C"函数 为extern类型。CC++函数例子工程中包含的三个文件的源代码如下#ifndefCPP_EXAMPLE_H#defineCPP_EXAMPLE_Hextern"C"intadd(intx,inty);//C++实现文件#include"cppExample.h"intadd(intx,inty){returnx+}/*C/*:#include"cExample.h*/externintadd(intx,inty);intmain(intargc,char*argv[]{add(2,3return}15题目的解答请参考《C++中extern“C”含义探索》注解关联、聚合(Aggregation)以及组合(Composition)涉及到UMLclassA{...}classB{A* classA{...}classB{A protection(private,(仅使用属性和方法,实现滞后到子类实现)。前两种(类继承)和后重载(overload)和重写(overried,有的书也叫做“覆盖”)的区functionfunc(p:integer):integerfunctionfunc(p:string):integer;。两个函数的调用,在编译器间就已经确定了,是静态的。也就是说,它们的地主要是两个:1.码重用;2.接口重用:为了类在继承和派生的时候,保证使用中任一类的AdoAdonet的相同与不同除了“能够让应用程序处理于DBMS中的数据“这一基本相似点外,两者没有太多共同AdoOLEDBCOMADO.NET拥有自己的ADO.NET接口并且基于微软的.NET体系架构。众所周知.NET体系不同于COM体系,ADO.NETADO和OLEDBADO.NETADO是两种数据方式。ADO.net提供对XML的支持。Newdeletemallocfree的联系与区别且不能初始化对象,new会自动调用对象的构造函数。deletedestructor,而#defineDOUBLE(x)x+x,i5*DOUBLE(5);i是多少答案:i30有哪几种情况只能用intializationlist而不能用C++main函数执行以前,还会执行什描述内存分配方式以及它们的区别行期间都存在。例如全局变量,static变量。mallocnew申请任意多少的struct和class的区答案:struct的成员默认是公有的,而类的成员默认是私有的。structclass在其他方面且有公有数据(!)struct关键字,否则,你应该使用class关键字。当一个类A中没有生命任何成员变量与成员函数,这时sizeof(A)的值是多少,如果不是请参考:,重点是dynamic_castreinterpret_castBOOL:if(!a)orif(a)int:if(a==0)float:constEXPRESSIONEXP=0.000001if(a<EXP&&a>-EXP)pointer:if(a!=NULL)orif(a==请说出const与#define答案:1)const常量有数据类型,而宏常量没有数据类型。编译器可以对前者进行类型安chara[]=“a[0]=char*pworld”;//pp[0]X’;//用运算符sizeof可以计算出数组的容量(字节数。sizeof(p),p为指针得到的是一个指p所指的内存容量。C++/C语言没有办法知道指针所指的内存容chara[]="oworld";char*p=a;coutsizeof(aendl12字节cout<<sizeof(p)<<endl;//4字节voidFunc(char{coutsizeof(aendl4100}irtualvirtual关键字,Therearetwointvariables:aandb,don’tuse“if”,“?:”,“switch”orotherjudgementstatements,findoutthebiggestoneofthetwonumbers.答案:ababsabcout<< cout<<LINE 和LINE 答案:可以,可以用_onexit一个函数,它会在main之后执行intfn1(void),fn3(void),fn4(void);voidmain(void){_onexit(fn1_onexit(fn2_onexit(fn3_onexit(fn4printf("Thisisexecutedfirst.\n"}int{printf("next.\n");return0;}int{printf("executed");return0;}int{printf("is");return0;}int{printf("This");return0;}The_onexitfunctionispassedtheaddressofafunction(func)tobecalledwhentheprogramterminatesnormally.Successivecallsto_onexitcreatearegisteroffunctionsthatareexecutedinLIFO(last-in-first-out)order.Thefunctionspassedto_onexitcannottakeparameters.C编译程序还是由C++#ifdefcplusplus#i#iusingnamespace{intcount=data.size()inttagfalse;//for(inti=0;i<count;{for(intj=0;j<count-i-1;{if(data[j]>{tag=trueinttemp=data[j];data[j+1]=temp;}}if(!tag)break;}}voidmain(void{ifstreamin("c:\\data.txt");if(!in){}int{}if(!out){ifif(head1->data<head2->data}for(i=0;i<data.size();out<40.struct{intdata;typedefstructNodeNode已知链表的头结点head,写一个函数把这个链表逆序(In Node*ReverseList(Node*head)//链表逆序{if(head==NULL||head->next==NULL)returnhead;Node*p1=head;Node*p2=p1->next;Node*p3=p2->next;p1->next=NULL;while(p3!=NULL){p2->next=p1;p1=p2;p2=p3p3=p3->next}p2->next=p1;head=p2;returnhead;}head1head2各自有序,请把它们合并成一个链表依然有序。(保留所有Node*Merge(Node*head1,Node{if(head1==NULL)returnhead2;if(head2==NULL)returnhead1;Node*head=NULL;Node*p1=NULL;Node*p2=NULL;{head=head1p1=head1->next;p2=head2;}{head=head2p2=head2->next;p1=head1;}Node*pcurrent=headwhile(p1!=NULL&&p2!={if(p1->data<=p2->data{pcurrent->next=p1;pcurrent=p1;p1=p1->next}{pcurrent->next=p2;pcurrent=p2;p2=p2->next}}if(p1!=NULLpcurrent->next=p1;if(p2!=NULL)pcurrent->next=p2;returnhead;}head1head2各自有序,请把它们合并成一个链表依然有序,这次要求用递归方法进行。(Autodesk)Node*MergeRecursive(Node*head1,Node{if(head1==NULL)returnhead2;if(head2==NULL)returnhead1;Node*head=
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 嘉善县招聘协管员面试题及答案
- 劳保协管员面试题及答案解析(2025版)
- 2025国家公务员国家税务总局富顺县税务局面试试题及答案
- 2025年东光辅警招聘真题及答案
- 定西市陇西县招聘城镇公益性岗位工作人员考试真题2024
- 2025 九年级语文下册戏剧人物性格特点分析课件
- 2025广西柳州市林业科学研究所招聘编外聘用人员1人备考核心题库及答案解析
- 北京市公安局辅警招聘245人考试核心试题及答案解析
- 北京市水利规划设计研究院2026年校园招聘备考题库及一套参考答案详解
- 2025年智能机器人手术系统发展报告
- LY/T 3408-2024林下经济术语
- 应急管理理论与实践 课件 第3、4章 应急预案编制与全面应急准备、应急响应启动与科学现场指挥
- 2025年常德职业技术学院高职单招职业技能测试近5年常考版参考题库含答案解析
- KCA数据库试题库
- 【MOOC】新媒体文化十二讲-暨南大学 中国大学慕课MOOC答案
- 仓库主管个人年终总结
- 2024年初中七年级英语上册单元写作范文(新人教版)
- DB11T 065-2022 电气防火检测技术规范
- 创新思维训练智慧树知到期末考试答案章节答案2024年江西理工大学
- AQ 1044-2007 矿井密闭防灭火技术规范(正式版)
- 国家开放大学电大《11377理工英语3》期末终考题库及答案
评论
0/150
提交评论