



下載本文檔
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 教育創新實踐以跨文化交流推動傳統服飾教育的變革
- 燕山大學里仁學院《文化創意學》2023-2024學年第二學期期末試卷
- 中央司法警官學院《西班牙語》2023-2024學年第二學期期末試卷
- 重慶電力高等??茖W校《現代文學下》2023-2024學年第二學期期末試卷
- 心理健康在醫療康復中的重要作用研究
- 山東師范大學《園林植物病理學》2023-2024學年第二學期期末試卷
- 益陽職業技術學院《水產學導論》2023-2024學年第二學期期末試卷
- 贛南衛生健康職業學院《白描花卉臨摹與寫生》2023-2024學年第二學期期末試卷
- 鄭州財經學院《環境科學》2023-2024學年第二學期期末試卷
- 廣東酒店管理職業技術學院《EP操作訓練》2023-2024學年第二學期期末試卷
- 熱電廠汽輪機安全培訓
- 2025行政執法人員政治理論和法律知識考試試題及參考答案
- uni-app移動應用開發課件 7-智慧環保項目
- 2025年廈門大學嘉庚學院圖書館員招考高頻重點提升(共500題)附帶答案詳解
- 《oracle性能優化》課件
- 小學生手工剪紙課件
- 中藥結腸透析治療慢性腎衰竭的技術規范
- 2024年廣東省廣州市中考英語真題卷及答案解析
- 化工設備機械基礎習題及參考答案
- 《課件旅游法培訓》課件
- 高中生物(部編版)選擇性必修3知識清單(問答版)
評論
0/150
提交評論