虹軟筆試題目_第1頁
虹軟筆試題目_第2頁
虹軟筆試題目_第3頁
虹軟筆試題目_第4頁
虹軟筆試題目_第5頁
已閱讀5頁,還剩11頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

實用文檔選擇題1:以下屬于C語言保留字的是DA.fopenB.includeC.getD.unsigned2:設enumcolor{red,yellow=2,blue,white,black}r=white;,執(zhí)行printf("%d",r);后的輸出結(jié)果是DA.0B.1C.3D.43:對于while語句,錯誤的說法是BA.用條件控制循環(huán)體的執(zhí)行次數(shù)B.循環(huán)體至少要執(zhí)行一次C.循環(huán)體有可能一次也不執(zhí)行D.循環(huán)體中可以包含若干條語句4:在C語言中,′a′和″a″存儲所占用的字節(jié)數(shù)分別是BA.1,1B.1,2C.2,1D.2,25:設inta,*p;則語句p=&a;中的運算符“&”的含義是DA.位與運算B.邏輯與運算C.取指針內(nèi)容D.取變量地址6:編譯程序的功能是CA.將匯編語言程序轉(zhuǎn)換為目標程序B.將匯編語言程序轉(zhuǎn)換為高級語言程序C.將高級語言程序轉(zhuǎn)換為目標程序D.將高級語言程序轉(zhuǎn)換為匯編語言程序7:執(zhí)行語句“k=5|3;”后,變量k的當前值是CA.1B.8C.7D.28:設有變量說明語句inta=1,b=0;

則執(zhí)行以下程序段的輸出結(jié)果為()。B

switch(a)

{

case1:

switch(b)

{

case0:printf("**0**");break;

case1:printf("**1**");break;

}

case2:printf("**2**");break;

}

printf("\n");A.**0**B.**0****2**C.**0****1****2**D.有語法錯誤9:設int型變量x有初始值3,則表達式x++*5/10的值是BA.0B.1C.2D.3C10:在下述選項時,沒有構成死循環(huán)的程序是AA.inti=100while(1){i=i%100+1;if(i>100)break;}B.for(;;);C.intk=1000;do{++k;}while(k>=10000);D.ints=36;while(s);--s;A11:以下合法的數(shù)組說明是A.chara[6]="string";B.inta[5]={0,1,2,3,4,5};C.chara="string";D.INTa[]={0,12,3,4,5};D12:數(shù)組定義為“inta[4][5];”,下列哪一個引用是錯誤的A.*aB.*(*(a+2)+3)C.&a[2][3]D.++aB13:設intx=-1;執(zhí)行表達式++x||++x||++x后,x的值是DA.0B.1C.2D.314:若定義了char

ch[]={″abc\0def″},*p=ch;則執(zhí)行printf″%c″,*p+4;語

句的輸出結(jié)果是

CA.defB.dC.eD.015:設

struct

{shorta;

charb;

floatc;

}cs;

則sizeof(cs)的值是DA.4B.5C.6D.7簡答題16:找出32位數(shù)中是回文數(shù),且其開方為整數(shù)的數(shù)。17:Security公司的網(wǎng)絡管理工程師Mr.leak最近發(fā)現(xiàn)有不少來自公司外部IP的請求,試圖非法訪問公司內(nèi)部資源,為了不影響數(shù)據(jù)訪問流程。他不得不寫一個高效的程序——一個工作在Ipv4上的防火墻,如果請求來自非授權的ip地址,則將請求丟棄。為了便于管理,通過文本文件IP.TXT來配置授權的IP地址,文件格式為每行(’/n’)一個IP地址(或IP段),范圍不超過一個B類。例如:

63

55

55

限制:IP段的起止地址間以空格隔開。文件不超過10萬行,內(nèi)存不超過4M字節(jié)。

要求:請編寫一個程序,讀入IP.TXT文件。并從標準輸入接受一個IP地址。如果該地址在授權范圍內(nèi),則在標準輸出上打印Y,否則打印N.如果輸入為一個空行,程序結(jié)束。

請給出思路(文字描述),完成代碼,分析你采用算法的優(yōu)劣。請列舉測試方法和思路18:談談COM的線程模型。然后討論進程內(nèi)/外組件的差別。單線程(STA)一個對象只能由一個線程訪問多線程(MTA)對象可以被多線程訪問中立線程套間(na)一個線程可以被任何線程訪問,與MTA不同的是任何線程。COM只有兩種公寓,一種叫單線程公寓(Single-ThreadApartment),簡稱STA,一種叫多線程公寓(Multi-ThreadApartment),簡稱MTA,顧名思義,一種只能容納一個線程,另一種能容納多個線程。在一個進程中,MTA只有一個,而STA可以有很多。進程內(nèi)組件指DLL在客戶程序的進程空間內(nèi)運行,從你調(diào)用組件的時候起,DLL開始存在內(nèi)存中,當客戶端程序終止時,DLL也結(jié)束而進程外組件在客戶程序的外部進程空間運行!當客戶端程序終止時,DLL不結(jié)束,它所在進程與客戶進程不相關!他由服務器決定,這在DCOM中非常有用!19:假設現(xiàn)有一個單向的鏈表,但是只知道只有一個指向該節(jié)點的指針p,并且假設這個節(jié)點不是尾節(jié)點,試編程實現(xiàn)刪除此節(jié)點。voiddeleteItem(Node*p){While(NILL!=p->next){P->item=p->next->item;P=p->next;}Deletep;P=NULL;}20:定義一個結(jié)構體變量(包括年、月、日),計算該日在本年中為第幾天?(注意考慮閏年問題),要求寫一個函數(shù)days,實現(xiàn)上面的計算。由主函數(shù)將年月日傳遞給days函數(shù),計算后將日子傳遞回主函數(shù)輸出。typedefstructDATA{ intyear; intmonth; intday;}date;intleap_year(inta);intcal_day(datea);intleap_year(inta){ if((a%4==0&&a%100!=0)||a%400==0) return1; else return0;}intcal_day(datea){ intsum=0; intb[]={31,28,31,30,31,30,31,31,30,31,30,31};for(inti=0;i<a.month-1;i++) sum+=sum+b[i]; if(a.month>2) sum=sum+a.day+leap_year(a.year); else sum=sum+a.day; returnsum;}voidmain(){datea;intn;scanf("%d,%d,%d",&a.year,&a.month,&a.day);n=cal_day(a);printf("%d",n);}21:執(zhí)行下述程序的輸出結(jié)果是______3600__________。

#include

intw=3

main()

{

intw=10;

printf("%d\n",fun(5)*w);

}

intfun(intk)

{

if(k==0)

return(w);

return(fun(k-1)*k);

}22:設有一個順序表A,包含n個元素,要求寫出一個將該表逆置的算法,并只允許在原表的存儲空間少再加一個附加的工作單元。23:用預處理指令#define聲明一個常數(shù),用以表明1年中有多少秒(忽略閏年問題)#defineSECONDS_PER_YEAR(60*60*24*365)UL24:閱讀下列程序,將輸出結(jié)果寫到各題右側(cè)的空白處。20,4030,60

main()

{

intx=20,y=40,*p;

p=&x;printf(″%d,″,*p);

*p=x+10;

p=&y;printf(″%d\n″,*p);

*p=y+20;

printf(″%d,%d\n″,x,y);

}25:寫出不帶頭結(jié)點的雙向鏈表的插入排序算法。#include<iostream>usingnamespacestd;typedefstructnode{ floatdata; structnode*pre; structnode*next;}*DoubleNode;voidsort_DoubleNode(DoubleNode&head,floatdata){ DoubleNodenode=(DoubleNode)malloc(sizeof(structnode)); DoubleNodep,q; node->data=data; if(head==NULL) { head=node; head->next=NULL; head->pre=NULL; return; } p=head; while(p!=NULL&&p->data<data) { q=p; p=p->next; } if(p==head) { node->next=head; node->pre=NULL; head->pre=node; head=node; } else{ q->next=node; node->pre=q; node->next=p; if(p!=NULL)p->pre=node; }}voidout_DoubleNode(DoubleNode&head){ DoubleNodep=head; while(p!=NULL) { printf("%.4f",p->data); p=p->next; } printf("\n");}voidmain(){ intn; floatdata; inti; DoubleNodehead=NULL; scanf("%d",&n); for(i=0;i<n;++i) { scanf("%f",&data); sort_DoubleNode(head,data); } out_DoubleNode(head);}1:定義了intb[][3]={1,2,3,4,5,6,7};,則b數(shù)組第一維的長度是BA.2B.3C.4D.無確定值2:main()A

{intx,y;

x=y=1;

y=++x;

printf(″%d,%d\n″,x,y);

}

程序運行結(jié)果為A.2,2B.1,2C.2,1D.1,13:下列各語句定義了數(shù)組,其中一個不正確的是BA.staticinta[5],b[2][3];B.charno[30],rec[30,6];C.intx[]={2,4,6,8,10};D.intx[10]={1,2,3,4,5};4:設floatm=4.0,n=4.0;使m為10.0的表達式是DA.m-=n*2.5B.m/=n+9C.m*=n-6D.m+=n+25:下列各個錯誤中,屬于編譯錯誤的是DA.數(shù)組下標超界B.“==”誤寫為“!=”C.死循環(huán)D.括號不配對6:C語言程序編譯時,程序中的注釋部分DA.參加編譯,并會出現(xiàn)在目標程序中B.參加編譯,但不會出現(xiàn)在目標程序中C.不參加編譯,但會出現(xiàn)在目標程序中D.不參加編譯,也不會出現(xiàn)在目標程序中7:若定義了()B

union

{chara[10];

shortb[4][5];

longc[5];

}u;

則執(zhí)行printf(″%d\n″,sizeof(u));語句的輸出結(jié)果是A.10B.20C.40D.708:調(diào)用函數(shù)時,若實參是一個數(shù)組名,則向函數(shù)對應的形參傳送的是BA.數(shù)組的長度B.數(shù)組的首地址C.數(shù)組第一個元素的值D.整個數(shù)組元素的值9:對于如下定義的枚舉型enumlist1{x1,x2,x3,x4=6,x5,x6};

枚舉常數(shù)x2和x6的值分別是BA.1,6B.1,8C.2,6D.2,810:若變量已正確定義并且指針p已經(jīng)指向變量x,則*&x相當于AA.xB.pC.&xD.&*p11:在下述選項時,沒有構成死循環(huán)的程序是CA.inti=100while(1){i=i%100+1;if(i>100)break;}B.for(;;);C.intk=1000;do{++k;}while(k>=10000);D.ints=36;while(s);--s;B12:算術運算符,賦值運算符和關系運算符的運算優(yōu)先級按從高到低依次為A.算術運算、賦值運算、關系運算B.算術運算、關系運算、賦值運算C.關系運算、賦值運算、算術運算D.關系運算、算術運算、賦值運算13:執(zhí)行語句printf("|%9.4f|\n",12345.67);后的輸出結(jié)果是BA.|2345.6700|B.|12345.6700|C.|12345.670|D.|12345.67|14:設inta;,則表達式a=2,4,a+1的值是CA.1B.2C.3D.415:設#defineL(x)2*3.14*x,則L(x)是DA.函數(shù)名B.函數(shù)調(diào)用C.無參的宏名D.帶參的宏名16:C語言中,錯誤的int類型的常數(shù)是AA.1E5B.0C.037D.0xaf17:若main()函數(shù)帶參數(shù),參數(shù)個數(shù)最多是CA.0B.1C.2D.3簡答題18:#include

classValue

{

public:

Value(intnVal){m_nVal=nVal;printf(\"CallValue::Value(intnValue)n\");}

~Value(){printf(\"CallValue::~Value()n\");}

Value&operator=(intnVal)

{

m_nVal=nVal;

printf(\"CallValue::operator=n\");

return*this;

}

voidDump(){printf(\"Value::m_nVal=%dn\",m_nVal);}

protected:

intm_nVal;

};

classBase

{

public:Base(){Init();}

virtual~Base(){Release();}

virtualvoidInit(){printf(\"CallBase::Init()n\");}

virtualvoidRelease(){printf(\"CallBase::Release()n\");}

virtualvoidDump(){printf(\"CallBase::Dump()n\");}

};

classDerive:publicBase

{

public:Derive(){printf(\"CallDerive::Derive()n\");}

~Derive(){printf(\"CallDerive::~Derive()n\");}

virtualvoidInit(){m_Val=2;printf(\"CallDerive::Init()n\");}

virtualvoidRelease(){printf(\"CallDerive::Release()n\");}

virtualvoidDump(){m_Val.Dump();}

protected:

staticValuem_Val;

};

ValueDerive::m_Val=0;

voidDestroyObj(Base*pOb)

{

pOb->Dump();

deletepOb;

}

voidmain()

{

Derive*pOb=newDerive;

DestroyObj(pOb);

}

寫出結(jié)果19:假設你有一個用1001個整數(shù)組成的數(shù)組,這些整數(shù)是任意排列的,但是你知道所有的整數(shù)都在1到1000(包括1000)之間。此外,除一個數(shù)字出現(xiàn)兩次外,其他所有數(shù)字只出現(xiàn)一次。假設你只能對這個數(shù)組做一次處理,用一種算法找出重復的那個數(shù)字。如果你在運算中使用了輔助的存儲方式,那么你能找到不用這種方式的算法嗎?intsearch(intm[]){ intw[1001]; for(inti=0;i<=1001;i++) w[i]=-1; for(intj=0;j<=1000;j++) { if(w[m[j]]==-1) w[m[j]]=m[j]; else returnm[j]; } return0;}20:以下代碼中的輸出語句輸出0嗎,為什么?

structCLS

{

intm_i;

CLS(intI):m_i(i){}

CLS()

{

CLS(0);

}

};

CLSobj;

cout<<obj.m_i<<endl;輸出不是0,是一個隨機數(shù),

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論