



下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、请定义一种宏,比较两个数a、b大小,不能使用不不大于、不大于、if语句2、如何输出源文献标题和当前执行行行数3、两个数相乘,小数点后位数没有限制,请写一种高精度算法4、写ー种病毒5、有A、B、C、D四个人,要在夜里过一座桥。她们通过这座桥分别需要耗时1、2、5、10分钟,只有一支手电,并且同步最多只能两个人ー起过桥。请问,如何安排,可以在17分钟内这四个人都过桥?.请定义一种宏,比较两个数a、b大小,不能使用不不大于、不大于、if语句/Z这样转向定义应当不算违规吧!ハ」#defineCmp(x,y)compare(x,y)intcompare(inta,intb)(aA=(l«31);bA=(l«31);inti=31;while((iA-l)&&!((a&(1«i))A(b&(1«i))))i—;return(iA-l)?(((a»i)&}#defineCOMPARE(a,b)((a)-(b))//<0:a<b=0:a==b>0:a>b.如何输出源文献标题和当前执行行行数cout«"Filename"«_FILE_«"Line"«_LINE_«endl;.两个数相乘,小数点后位数没有限制,请写ー种髙精度算法算法提示:输入stringa,stringb;计算stringc二a*b;返回c;1,纪录小数点在a,b中位置11,12,则需要小数点后移动位置数为l=length(a)+length(b)-l1-12-2;2,去掉a,b中小数点,(a,b小数点后移,使a,b变为整数)3,计算c=a*b;(同整数大数相乘算法)4,输出c,(注旨在输出倒数第1个数时,输出ー种小数点。若是输出数少于1个,就补0)du51(郁郁思扬)答案:变为整数求就行了.输入时候记一下,小数点位置..输出再做点文章就行了.下面是大整数运算.#include<iostream>usingnamespacestd:#defineMAX1000()structNode{intdata;Node*next;卜voidoutput(Node*head)(if(!head->next&&!head->data)retum;output(head->next);cout«head->data;voidMul(char*a,char*b,intpos)char*ap=a,*bp=b;Node*head=0;head=newNode;head->data=0,head->next=0;〃头Node來p,*q二head,*pl;inttemp=O,temp1,bbit;while(*bp)〃若乘数不为空,继续.(p=q->next;pl=q;bbit=*bp-48;〃把当前位转为整型while(*ap||temp)〃若被乘数不空,继续(if(!p)〃若要操作结点为空,申请之(p=newNode;p->data=0;p->next=0;pl->next=p;)if(*ap==O)temp1=temp;else{templ=(pl->data)+C,:ap-48):Hbbit+temp;ap++:}pl->data=templ%10I〃留当前位temp=tempi八〇:〃进位以int形式留下.pl=p;p=p->next;〃被乘数到下一位ap=a;bp++;q=q->next;〃q进下一位p=head;output(p);〃显不cout«endl;while(head)〃释放空间(p=head->next;deletehead;head=p;11intmain()(couivv”请输入两个数"vvendl;chartestl[MAX],test2[MAX];cin.getline(test1,MAX/\n*);cin.getline(test2,MAX,,\n,);Mul(strrev(test1),strrev(test2));system(nPAUSE");return0;)上面大整数已经写了.你加几种东西就行了.#include<iostream>usingnamespacestd;#defineMAX10000structNode{intdata;Node*next;卜voidoutput(Node*head,intpos)(if(!head->next&&!head->data)retum;output(head->next,pos-1);cout«head->data;if(!pos)cout«H.H;)voidMul(char*a,char*b,intpos)(char*ap=a,*bp=b;Node*head=0;head=newNode;head->data=0,head->next=0;〃头Node*p,*q=head,*pl;inttemp=O,temp1,bbit;while(*bp)〃若乘数不为空,继续.(p=q->next;pl=q;bbit二・bp-48;〃把当前位转为整型while(*ap||temp)〃若被乘数不空,继续if(!p)〃若要操作结点为空,申请之p=newNode;p->data=0;p->next=0;pl->next=p:)if(*ap==O)templ=temp;else{tempi=(pl->data)+(*ap-48):f:bbit+temp;ap++:(p1->data-templ%10;〃留当前位temp=templ/10:〃进位以int形式留下.pl=p;p=p->next:〃被乘数到下一位)ap=a;bp++;q=q->next;〃q进下一位)p二head;output(p,pos)I〃显ホcout«endl;while(head)〃释放空间(p=head->next;deletehead;head=p;coutvv”请输入两个数"Wendi;chartestl|MAX|,test2[MAX],*p;intpos=0;cin.getline(test1,MAXJVn*);cin.getline(test2,MAX,^*);if(p=strchr(testl;/))(pos+=strien(test1)-(p-test1)-1;do(p++;*(p-l)=*p;}while(*p);)if(p=strchr(test2,\,))(pos+=strlen(test2)-(p-test2)-l;do(p++;*(p-l)=*p;}while(*p);Mul(strrev(test1),strrev(test2),pos);systemCTAUSE1');return0;1.写ー种病毒cout«Hー种病毒"vvendl;(开玩笑,没搞过,ハーハ).让你在个浮点数中找出最大lOOOO个,规定期间复杂度优。〃本算法使用快排,O(n*lg(n))〃最低可以找到线性算法,使用预先区域记录划分!类试于构造QuadTrees!写起来代码会长些!#include<stdio.h>#include<stdlib.h>#defineMaxinta[Max+10];intcmp(constvoid*a,constvoid*b)(int*x=(int*)a;int*y=(int*)b:return*x-*y;intmain()intn=O:while(scanf(,,%d",&a[n])==l)n++;qsort(a,n,4,cmp);for(inti=O;i<3;i++)printf(n%dM,a);return1;}5,有A、B、C、D四个人,要在夜里过一座桥。她们通过这座桥分别需要耗时1、2、5、10分钟,只有一支手电,并且同步最多只能两个人一起过桥。请问,如何安排,可以在17分钟内这四个人都过桥?Solution:核心是时间最长两个人必要同步过桥TheFirstTime:A(l)和B⑵过桥,A(l)返回Cost:1+2TheSecondTime:C(5)和D(10)过桥,B(2)返回Cost:10+2TheThirdTimeA⑴和B(2)过桥Cost:2TotalTimeCost:(1+2)+(10+2)+2=17minutes.实现双向链表删除ー种节点p,在节点P后插入一种节点,写出这两个函数;答://假设线性表双向链表存储构造typedefstructDulNode{structDulNode*prior:〃前驱指针ElemTypedata; 〃数据structDulNode*next;〃后继指针}DulNode,*DuLinkList;〃删除操作StatusListDelete_DuL(DuLinkList&L,inti,ElemType&e)(if(!(p二GetElemP_DuL(L,i)))〃此处得到i位置节点指针,如果有需要也得写出详细函数实现returnERROR;e=p->data;p->prior->next=p->next;p->next->prior=p->pror;free(p);returnOK;)〃插入操作StatusListInsert_DuL(DuLinkList&L,inti,ElemType&e)(if(!(p=GetElemP_DuL(L,i)))returnERROR;if(!(s=(DuLinkList)malloc(sizeof(DuLNode))))returnERROR;s->data=e;s->prior=p->prior;p->prior->next=s;s->next=p;p->prior=s;returnOK;}.写一种函数,将其中\t都转换成4个空格。答:该函数命名为convert,参数意义为:♦strDest目字符串,*strSrc源字符串,length源字符串长度函数实现为:char*convert(char*strDest,constchar*strSrc,intlength)(char*cp=strDest;inti=0;while(*strSrc&&i<length)/Z跳出条件(if(*strSrc=='\t")〃将't转换成4个空格(for(intj=0;j<4;j++)*cp++='';)else〃否则直接拷贝*cp++=*strSrc;strSrc++;i++;returnstrDest;.Windows程序入口是哪里?写出Windows消息机制流程0答:Windows程序入口是WinMain函数消息机制:系统将会维护ー种或各种消息队列,所有产生消息都会被放入或是插入队列中。系统会在队列中取出每一条消息,依照消息接受句柄而将该消息发送给拥有该窗口程序消息循环。每ー种运营程序均有自己消息循环,在循环中得到属于自己消息并依照接受窗口句柄调用相应窗口过程。而在没有消息时消息循环就将控制权交给系统。.如何定义和实现ー种类成员函数为回调函数?答:所谓回调函数,就是预先在系统对函数进行注册,让系统懂得这个函数存在,后来,当某个事件发生时,再调用这个函数对事件进行响应。定义一种类成员函数时在该函数前加CALLBACK即将其定义为回调函数,函数实现和普通成员函数没有区别.C++里面是不是所有动作都是main。引起?如果不是,请举例。答:不是,例如中断引起中断解决不是直接由main。引起,而是由外部事件引起。.C++里面如何声明constvoidf(void)函数为C程序中库函数?答:在该函数前添加extern“C”声明.下列哪两个是等同intb;Aconstint*a=&b;Bconst*inta=&b;Cconstint*consta=&b;Dintconst*consta=&b;答:各式表达意思分别为:Aconstint*a=&b;//*a是const,但指针a可变Bconst*inta=&b:〃a是const,但・a可变Cconstint*consta=&b;//a和・a都是const,常量和指针值都不能变化Dintconst*consta=&b;//a和・a都是const,常量和指针值都不能变化因而C,D两者是相似。总结个技巧:如果const位于星号左侧,则const就是用来修饰指针所指向变量,即指针指向为常量;如果const位于星号右侧,const就是修饰指针自身,即指针自身是常量。.内联函数在编译时与否做参数类型检査?答:做类型检查,由于内联函数就是在程序编译时,编译器将程序中浮现内联函数调用表达式用内联函数函数体来代替。.写出判断ABCD四个表达式与否对的,若对的,写出通过表达式中a值(3分)inta=4;(A)a+=(a++);(B)a+=(++a);(C)(a++)+=a;(D)(++a)+=(a++);a=?答:C错误,左侧不是一种有效变量,不能赋值,可改为(++a)+=a;改后答案依次为9,10,10,11.某32位系统下,C++程序,请计算sizeof值(5分).charstr[]=".com"char*p=str;intn=10;请计算sizeof(str)=?(1)sizeof(p)=?(2)sizeof(n)=?(3)voidFoo(charstrllOO]){请计算sizeof(str)=?(4))void*p=malloc(100);请计算sizeof(p)=?(5)答:⑴17⑵4(3)4(4)4(5)4.回答下面问题.(4分)(1).头文献中ifndef/define/endif干什么用?预解决答:防止头文献被重复引用⑵.#include和#includeufilename.h"有什么区别?答:前者用来包括开发环境提供库头文献,后者用来包括自己编写头文献。⑶.在C++程序中调用被C编译器编译后函数,为什么要加extern“C”声明?答:函数和变量被C++编译后在符号库中名字与C语言不同,被extern"C"修饰变量和函数是按照C语言方式编译和连接。由于编译后名字不同,C++程序不能直接调用C函数。C++提供了一种C连接互换指定符号extern“C”来解决这个问题。(4).switch。中不容许数据类型是?答:实型4.回答下面问题(6分).VoidGetMemory(char**p,intnum){*p=(char*)malloc(num);}voidTest(void){char*str=NULL;GetMemory(&str,100);strcpy(str,nhello");printf(str);1请问运营Test函数会有什么样成果?答:输出“hello”.voidTest(void){char*str=(char*)malloc(lOO);strcpy(str,"hello");free(str);if(str!=NULL){strcpy(str»"world");printf(str);请问运营Tesl函数会有什么样成果?答:输出“world”,由于fYee(str)后并未变化str所指内存内容。.char*GetMemory(void){charp[]="helloworld";returnp;}voidTest(void){char*str=NULL;str=GetMemoryO;printf(str);1请问运营Test函数会有什么样成果?答:无效指针,输出不拟定5.编写strcat函数(6分)已知strcat函数原型是char*strcat(char*strDest,constchar*strSrc);其中strDest是目字符串,strSrc是源字符串。(1)不调用C++/C字符串库函数,请编写函数strcat答:VC源码:char*_cdeclstrcat(char*dst,constchar*src)
char*cp=dst;while(*cp)cp++;char*cp=dst;while(*cp)cp++;/*findendofdst*/while(*cp++=*src++);/*Copysrctoendofdst*/return(dst);/*returndstreturn(dst);(2)strcat能把strSrc内容连接到strDest,为什么还要char・类型返回值?答:以便赋值给其她变量.MFC中CString是类型安全类么?答:不是,其他数据类型转换到CString可以使用CString成员函数Format来转换.C++中为什么用模板类。答:(1)可用来创立动态增长和减小数据构造(2)它是类型无关,因而具备很高可复用性。(3)它在编译时而不是运营时检查数据类型,保证了类型安全(4)它是平台无关,可移植性(5)可用于基本数据类型.CSingleLock是干什么。答:同步各种线程对ー种数据类同步访问.NEWTEXTMETRIC是什么。答:物理字体构造,用来设立字体高宽敞小.程序什么时候应当使用线程,什么时候单线程效率髙。答:1.耗时操作使用线程,提高应用程序响应.并行操作时使用线程,如C/S架构服务器端并发线程响应顾客祈求。.多CPU系统中,使用线程提高CPU运用率.改进程序构造。ー种既长又复杂进程可以考虑分为各种线程,成为几种独立或半独立运营某些,这样程序会利于理解和修改。其她状况都使用单线程。ll.Windows是内核级线程么。答:见下ー题U.Linux有内核级线程么。答:线程普通被定义为一种进程中代码不同执行路线。从实现方式上划分,线程有两种类型:“顾客级线程”和“内核级线程”。顾客线程指不需要内核支持而在顾客程序中实现线程,其不依赖于操作系统核心,应用进程运用线程库提供创立、同步、调度和管理线程函数来控制顾客线程。这种线程甚至在象DOS这样操作系统中也可实现,但线程调度需要顾客程序完毕,这有些类似Windows3.x协作式多任务。此外一种则需要内核参加,由内核完毕线程调度。其依赖于操作系统核心,由内核内部需求进行创立和撤销,这两种模型各有其好处和缺陷。顾客线程不需要额外内核开支,并且顾客态线程实现方式可以被定制或修改以适应特殊应用规定,但是当ー种线程因I/O而处在等待状态时,整个进程就会被调度程序切换为等待状态,其她线程得不到运营机会;而内核线程则没有各个限制,有助于发挥多解决器并发优势,但却占用了更多系统开支。WindowsNT和OS/2支持内核线程。Linux支持内核级多线程.C++中什么数据分派在栈或堆中,New分派数据是在近堆还是远堆中?答:栈:存储局部变量,函数调用参数,函数返回值,函数返回地址。由系统管理堆:程序运营时动态申请,new和malloc申请内存就在堆上近堆还是远堆不是很清晰。.使用线程是如何防止浮现大波峰。答:意思是如何防止同步产生大量线程,办法是使用线程池,线程池具备可以同步提髙调度效率和限制资源使用好处,线程池中线程达到最大数时,其她线程就会排队等待。15函数模板与类模板有什么区别?答:函数模板实例化是由编译程序在解决函数调用时自动完毕,而类模板实例化必要由程序员在程序中显式地指定。16普通数据库若浮现日记满了,会浮现什么状况,与否还能使用?答:只能执行查询等读操作,不能执行更改,备份等写操作,因素是任何写操作都要记录日记。也就是说基本上处在不能使用状态。17SQLServer与否支持行级锁,有什么好处?答:支持,设立封锁机制重要是为了对并发操作进行控制,对干扰进行封锁,保证数据一致性和精确性,行级封锁保证在顾客获得被更新行到该行进行更新这段时间内不被其他顾客所修改。因而行级锁即可保证数据一致性又能提高数据操作迸发性。18如果数据库满了会浮现什么状况,与否还能使用?答:见1619关于内存对齐问题以及sizof()输出答:编译器自动对齐因素:为了提高程序性能,数据构造(特别是栈)应当尽量地在自然边界上对齐。因素在于,为了访问未对齐内存,解决器需要作两次内存访问;然而,对齐内存访问仅需要一次访问。20inti=10,j=10,k=3;k*=i+j;k最后值是?答:60,此题考察优先级,实际写成:k*=(i+j);,赋值运算符优先级最低.对数据库ー张表进行操作,同步要对另ー张表进行操作,如何实现?答:将操作各种表操作放入到事务中进行解决.TCP/IP建立连接过程?(3-wayshake)答:在TCP/IP合同中,TCP合同提供可靠连接服务,采用三次握手建立一种连接。第一次握手:建立连接时,客户端发送syn包(syn可)到服务器,并进入SYN-SEND状态,等待服务器确认;第二次握手:服务器收到syn包,必要确认客户SYN(ack=j+l),同步自己也发送ー种SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN一RECV状态;第三次握手:客户端收到服务器SYN+ACK包,向服务器发送确认包ACK(ack=k+l),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完毕三次握手。ICMP是什么合同,处在哪ー层?答:Internet控制报文合同,处在网络层(1P层).触发器怎么工作?答:触发器重要是通过事件进行触发而被执行,当对某ー表进行诸如UPDATE、INSERT、DELETE这些操作时,数据库就会自动执行触发器所定义SQL语句,从而保证对数据解决必要符合由这些SQL语句所定义规则。.winsock建立连接重要实现环节?答:服务器端:socker()建立套接字,绑定(bind)并监听(listen),用accept()等待客户端连接。客户端:socker()建立套接字,连接(connect)服务器,连接上后使用send。和recv(),在套接字上写读数据,直至数据互换完毕,closesocket。关闭套接字。服务器端:accept()发既有客户端连接,建立一种新套接字,自身重新开始等待连接。该新产生套接字使用send。和recv()写读数据,直至数据互换完毕,closesocket。关闭套接字。.动态连接库两种方式?答:调用ー种DLL中函数有两种办法:.载入时动态链接(load-timedynamiclinking),模块非常明确调用某个导出函数,使得她们就像本地函数同样。这需要链接时链接那些函数所在DLL导入库,导入库向系统提供了载入DLL时所需信息及DLL函数定位。.运营时动态链接(run-timedynamiclinking),运营时可以通过LoadLibrary或LoadLibraryEx函数载入DLL。DLL载入后,模块可以通过调用GetProcAddress获取DLL函数出口地址,然后就可以通过返回函数指针调用DLL函数了。如此即可避免导入库文献了。27.IP组播有那些好处?答:Internet上产生许多新应用,特别是髙带宽多媒体应用,带来了带宽急剧消耗和网络拥挤问题。组播是ー种容许ー种或各种发送者(组播源)发送单ー数据包到各种接受者(一次,同步)网络技术。组播可以大大节约网络带宽,由于无论有多少个目的地址,在整个网络任何一条链路上只传送单ー数据包。因此说组播技术核心就是针对如何节约网络资源前提下保证服务质量。1、请用原则C语言实现ー种双向循环链表查找与删除。typedefstructdoublecyclelink{intkey;structdoublecyclelink*prev;structdoublecyclelink*next;}DoubleCycleLinkT;DoubleCycleLinkT*findKey(DoubleCycleLinkT*link,intkey);遍历整个双向循环链表,将第一种与key值相似结点移出链表,并返回。若没有找到则返回NULL。答:函数为DoubleCycleLinkT*findKey(DoubleCycleLinkT*link,intkey)(DoubleCycleLinkT*p;p=link->next;while(p->next!=link)/Z链表结尾(if(p->key==key)/Z查找到key值相似,册リ除该节点,并返回(p->prev->next=p->next;p->next->prev=p->prev;free(p);returnlink;)elsep=p->next;/Z否则查找下ー节点}if(p->next==link)returnNULL;〃没找到,返回NULL2、请用程序打印下列图型****voidprintTriangle(constunsignedcharline);输入行数,打印三角形。答:函数为voidprintTriangle(constunsignedcharline)(for(inti=l;i<=line;i++)(for(intj=0;j<(line*2-l);j++)//5行每行需打印9个字符(if(i%2==l)/Z奇数行(if(j%2==(line-l)%2&&j>=(line-l-i/2*2)&&j<=(line-l+i/2*2))printf(,,*n);/Z列从0计数elseprintf("”);)elseif(j%2==(line)%2&&j>=(line-2-(i/2-l)*2)&&j<=(line+(i/2-l)*2))printf(',*n);elseprintf(nn);3、请用原则C语言实现下列原则库函数,设计中不得使用其她库函数。char*strstr(char*str1,char*str2);在字符串strl中,寻找字串str2,若找到返回找到位置,否则返回NULL。答:函数为char*strstr(constchar*strl»constchar*str2)(char*cp=(char*)strl;char*sl,*s2;if(!*str2)return((char*)strl);while(*cp)(si=cp;s2=(char*)str2;while(*sl&&*s2&&!(*sl-*s2))sl++,s2++;if(!*s2)retum(cp);cp++;)return(NULL);)4、请问这段代码循环多少次?main()(chari=0;while(i<10)|if(i<l)continue;if(i==5)break;i++;)答:是个死循环,无限次啊,无限次。5,用预解决指令#define声明一种常数,用以表白1年中有多少秒(忽视闰年问题)答:#defineMIN(365*24*60*60)6、请问运营main函数会有什么样成果?main()intx=10,y=3;printf(',%d\n',,y=x/y);}答:成果为3,考察强制类型转换7、有如下程序#defineP3intF(intx)(retum(P*x*x);)main()(printf("%d\n",F(3+5));}程序运营成果为:?答:程序运营后输出成果是!92.此题为故意混淆概念,直接用F(8)计算得答案,而非计算3*3+5*3+5;8、若int占2个字节,char占1个字节,float占4个字节,则定义如下:structstuunion{charbj[5];intbh[2];}class;charxm[8];floatcj;}xc;则sizeof(xc)值为?答:17,一道边界对齐题目,诸多地方有讲,此处注意下联合内存大小取决于其中字节数最多成员就可。请问traceroute工作原理答:主机先发出ー种TTL(TimeToLive,生存时间)为1ICMP数据包。这个数据包到达ー种路由器后,路由器将TTL减1到〇,并将并送回ー种FICMPtimeexceededJ消息、,以阐明这个数据包不能继续向前传送,由于其TTL已通过期了。traceroute收到这个消息后,便懂得这个路由器存在于这个途径上,接着traceroute再送出另ー种TTL是2数据包,发现第2个路由器……这个重复动作始终持续到某个datagram到达目地。1.打印如下图案,共19行,只能有一种for循环(题目已经提供)******❖for(i=0;i<19;i++)(I答:#include<stdio.h>intmain()[intmaxsize=19;charch=***;char*tmp=newchar[3J;char*format=newchar[30];char*stars=newchar[30];strcpy(stars,,,H);for(inti=0;i<maxsize;++i)(if(i<=maxsize/2)(intk=(maxsize+1-2*i)/2;itoa(k,tmp,10);strcpy(format,',%^^);strcat(format,tmp);strcat(format,1'c");if(i>0)〃前10行每次较前一行多・*,输出位置比前一行减1(strcat(stars,"**");strcat(format,stars);)printf(format,ch);printf("\n");)else{〃后9行每次较前一行少・*,输出位置比前一行加1stars[maxsize-1-(2*(i+1)-maxsize-1)]=0;intk=(2*(i+2)-maxsize-1)/2;itoa(k,tmp,10);strcpy(format,',%H);strcat(format,tmp);strcat(format,"c");strcat(format,stars);printf(format,ch);printf(M\nM);))delete[]tmp;delete[]format;delete[]stars;tmp=NULL;format=NULL;stars=NULL;return0;voidfun(intx)(if(x/2>0)fun(x/2);printf(M%dM,x);答:依次输出fun(l),fun(2),fun(5),fun(10),得到成果12510.#definefl(n)(n)*(n)inti=5;intk=0;k=fl(i++);printf(M%d%dn,i,k);输出成果:答:725.下面那个for循环是无限循环for(inti=010;i==10;i+=0)for(inti=10;(i++A-i)==0;i+=0)尚有几种忘了答:第一不是,由于010表达8进制,i=8;第二是,由于i++ハーi表达数字9与9进行异或运算,的确为〇.Emailrelay和Emailaccess分别用了什么合同?(其她尚有诸多,略)答:SMTRPOP3.stackdata(栈)存在于A.rom,B.flashC.eepromD.ramE.noneoftheabove答:D.ramo这题稍微涉及到ー点硬件知识,ROM全称是ReadOnlyMemory,即只读存储器,flash,eeprom都是ROM家族ー员,RAM是RandomAccessMemory简称,意为随机存取存储器,也就是内存了。不论是堆还是栈都是放在内存里。inti;intx=Ox12345678;unsignedchar*p=(unsignedchar*)&x;for(i=0;i<sizeof(x);i++)printf(M%2xH,*(p+i));在80x86pc机器上运营成果?答:x在PC机上内存存储顺序为78563412,髙字节在前,低字节在后,因而输出78563412(参见bigendian和littleendian)SunSparcUnix上运营成果?答:说实话,我不懂得chara[2][2][3]={{{l,6,3}45,4,15}},{{3,5,33},{23,12,7}});for(inti=0;i<12;i++)printf(M%d”,);在空格处填上适当语句,顺序打印出a中数字答:*(*(*(a+i/6)+(i/3%2))+i%3)这题重要是要将输出序号依次写出某些,如000,001,002,010,011,012/00/01...然后找序号变化规律voidfun(char*a,char*b)a=b;(*a)++;}voidmain()(charsl=,A,,s2=,a,;char*pl=&sl;char*p2=&s2;fun(php2);printf(M%c%cM,sl,s2);}输出成果:?答:输出成果为:Ab,由于在fun函数里,指针a指向s2存储区(a=b),接着让s2存储区值加1得ガ((*a)++),因此s2等于b,si不变。写ー种strstr。函数答:中磊笔试题第三题也是这个,就不多写了,可翻到下篇看解答。(参见C++笔试题五)1.改错#include<stdio.h>#include<String.h>classCBuffer(char*m_pBuffer;intm_slze;public:CBufferOm_pBuffer=NULL;}-CBufferO(Free();)voidAllocte(intsize)(3) {m_size=size;m_pBufTer=newchar|size];)private:voidFree()(if(m_pBuffer!=NULL){deletem_pBuffer;m_pBuffer=NULL;))public:voidSaveString(constchar*pText)conststrcpy(m_pBuffer,pText);char*GetBufferOconstreturnm_pBuffer;});voidmain(intargc,char*argv[])(CBufferbuffer1;bufferl.SaveString(MMicrosoftM);printf(bufferl.GetBufferO);}答:改正后重要改正SaveString函数将voidSaveString(constchar*pText)const(strcpy(m_pBuffer»pText);)改为voidSaveString(constchar*pText)(1)(if(m_pBuffer!=NULL)Free();Allocte(strlen(pText)+1);(2)strcpy(m_pBuffer,pText);因素:const成员函数表达不会修改数据成员,而SaveString做不到,去掉const声明m_pBuffer指向NULL,必要用Allocte分派空间オ干赋值。(3)此外需要将Allocte成员函数声明为私有成员函数更符合实际2.下来程序想打印“WelcomeMSRAsia”,改正错误#include<stdio.h>#include<string.h>char*GetName(void){//ToreturnUMSRAsia”Stringcharnameロメ’MSRAsia";returnname;}voidmain(intargc,char*argv[])(charname[32];//Fillinzerosintonamefor(inti=0;i<=32;i++){name[i]ゴ、0’;}//copy"Welcome”tonamename="Welcome";//Appendablankcharname[8]=nM;//Appendstringtonamestrcat(name,GetName());//printoutprintf(name);}答:改正后为#include<stdio.h>#include<string.h>#include<malloc.h>//malloc函数头文献char*GetName(void)(//Toreturn“MSRAsia”String//charnameロゴMSRAsia”;char*name=(char*)malloc(strlen(nMSRAsia")+1); 〃在函数内部定义变量在函数结束时就清空了,必要动态分派内存strcpy(name,HMSRAsia");returnname;)voidmain(intargc»char*argv[])(charname[32];//Fillinzerosintoname//for(inti=0;i<=32;i++)for(inti=0;iv=31;i++)〃数组越界(name[i]='\0,;)//copy“Welcome“toname//name="Welcome";strcat(name,“Welcome");〃字符串赋值语句错误,应当用strcat//Appendablankchar//name[8]="";strcat(name»い);〃或者name[8]=**;name[9]='VO1;//Appendstringtonamechar*p=GetName(); 〃定义ーー种指针指向动态分派内存,用完后需用free语句释放strcat(name,p);free(p);//printoutprintf(name);13.写出下面程序输出成果#include<stdio.h>classApublic:voidFuncA()printf(MFuncAcalled\nH);}virtualvoidFuncB(){printf(MFuncBcalled\nM);}};classB:publicA{public:voidFuncA()(A::FuncA();printf(MFuncABcalled\nM);}virtualvoidFuncB()(printf(MFuncBBcalled\nH);}};voidmain(void)Bb;A*pa;pa=&b;A*pa2=newA;b.FuncA(); (1)b.FuncBO; (2)pa->FuncA();(3)pa->FuncB();(4)pa2->FuncA();(5)pa2->FuncB();deletepa2;}答:b.FuncA():输出FuncAcalledFuncABcalledb.FuncBO;输出FuncBBcalled上两者好理解,直接调用类B相应成员函数pa->FuncA();输出FuncAcalled调用类AFuncA()pa・>FuncB();输出FuncBBcalled调用类BFuncB(),因素是C++动态决策机制,当基类函数声明为virtual时,指向派生类对象基类指针来调用该函数会选取派生类实现,除非派生类没有オ调用基类虚函数。尚有一点注意是:指向基类类型指针可以指向基类对象也可以指向派生类对象,如pa=&b;pa2->FuncA();pa2・>FuncB();输出FuncAcalledFuncBcalled这也好理解,直接调用类A相应成员函数4.Inthemain()functionyafterModifyString(text)iscalledywhat'sthevalueof'text'?#include<stdio.h>#include<string.h>intFindSubString(char*pch)(intcount=0;char*pl=pch;while(*pl!=*\0*)(if(*pl==pl[l]-l){pl++;count++;}elsebreak;}intcount2=count;wMle(*pl!=,\O,)(if(*pl==pl[l]+l)(pl++;count2-;)els
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年产品售后服务策划合作协议书标准格式
- 2025年租约提前解除协议示例
- 2025年商品混凝土运输合作协议模板
- 2025年企业员工伤亡赔偿策划谅解协议指南
- 产教深度融合对人才培养模式的影响
- 精准农业技术提升油菜种植效益
- 构建语文教学新形态的面临的问题、机遇与挑战
- 社交媒体时代出版行业的用户体验升级
- 校企协同育人的探索与实践
- 影视产业对区域创新生态的驱动
- 萃智创新方法理论考试题库(含答案)
- 洁净室操作规程及管理制度
- 中国高血压防治指南(2024年修订版)解读课件
- 2024年浙江省中考科学试卷
- GB/T 44538-2024碳基薄膜椭偏光谱法测定非晶态碳基薄膜的光学性能
- 平房区全面推进信访工作法治化测试练习试卷附答案
- 湖北省黄冈市(2024年-2025年小学三年级语文)人教版随堂测试(下学期)试卷(含答案)
- 医院培训课件:《紧急情况下口头医嘱制度与执行流程》
- 硬核赢创新智慧树知到答案2024年山东大学
- 土木工程施工设计报告
- 四川省泸州市2024年中考物理试题(含答案)
评论
0/150
提交评论