在線筆試題語言及部分答案_第1頁
在線筆試題語言及部分答案_第2頁
在線筆試題語言及部分答案_第3頁
在線筆試題語言及部分答案_第4頁
在線筆試題語言及部分答案_第5頁
已閱讀5頁,還剩47頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

資料內(nèi)容僅供您學(xué)習(xí)參考,如有不當(dāng)或者侵權(quán),請(qǐng)聯(lián)系改正或者刪除。C試題

類型:C試題|試題:55道試題(50道選擇題,5道問答題)

注意:答題過程如果您不提交答案,或者關(guān)閉瀏覽器退出,我們將不再允許您再次答題。

謝謝!

試題選項(xiàng)

Question1.(單選)

在順序表(3,6,8,10,12,15,16,18,21,25,30)中,用二分法查找關(guān)鍵碼值11,所需的關(guān)鍵碼比

較次數(shù)為(3)

1.2

2.3

3.4

4.5

Question2.(單選)

設(shè)散列表的存儲(chǔ)空間大小為19,所用散列函數(shù)為h(key)=keymod19,用開地址線性探查法解

決碰撞。散列表的當(dāng)前

狀態(tài)如下:012345678910111213141516171819019476855958239

3208.現(xiàn)要將關(guān)鍵碼

值75插入到該散列表中,其地址應(yīng)為(1)

1.1

2.11

3.5

4.15

Question3.(單選)

作業(yè)管理的主要任務(wù)包括作業(yè)輸入、作業(yè)處理和作業(yè)輸出。其中作業(yè)處理的工作是Ⅰ.作業(yè)

調(diào)度Ⅱ.作業(yè)控制Ⅲ.

作業(yè)后備(3)

1.只有Ⅰ

2.只有Ⅱ

3.Ⅰ和Ⅱ

4.都是

Question4.(單選)

系統(tǒng)為了管理文件,設(shè)置了專門的數(shù)據(jù)結(jié)構(gòu)----文件控制塊(FCB。FCB是在執(zhí)行下列哪一個(gè)系

統(tǒng)調(diào)用時(shí)建立的?(1)

1.create

2.open

3.read

4.write

Question5.(單選)

下面關(guān)于通道的敘述中,正確的是Ⅰ.通道相當(dāng)于一個(gè)功能簡單的處理機(jī)Ⅱ.通道完成數(shù)據(jù)輸

入輸出工作Ⅲ.通道與

CPU共用一個(gè)內(nèi)存(4)

1.Ⅰ和Ⅱ

2.Ⅰ和Ⅲ

3.Ⅱ和Ⅲ

4.都是

Question6.(單選)

互操作性是指在不同環(huán)境下的應(yīng)用程序能夠相互操作,交換信息。要使采用不同數(shù)據(jù)格式的

各種計(jì)算機(jī)之間能夠相

互理解,這一功能是由下面哪一層來實(shí)現(xiàn)的?(2)

1.應(yīng)用層

2.表示層

3.會(huì)話層

4.傳輸層

Question7.(單選)

在UNIX的Shell程序中,能夠使用位置變量。若要指明Shell引用的最近后臺(tái)進(jìn)程的號(hào)碼,可

以使用位置變量(2)

1.$$

2.$!

3.$#

4.$-

Question8.(單選)

設(shè)二叉樹根結(jié)點(diǎn)的層次為0,一棵深度(高度)為k的滿二叉樹和同樣深度的完全二叉樹各有

f個(gè)結(jié)點(diǎn)和c個(gè)結(jié)點(diǎn),下列

關(guān)系式不正確的是:(2)

1.f>=c

2.c>f

3.f=2k+1-1

4.C>2k-1

Question9.(單選)

單鏈表的每個(gè)結(jié)點(diǎn)中包括一個(gè)指針link,它指向該結(jié)點(diǎn)的后繼結(jié)點(diǎn)?,F(xiàn)要將指針q指向的新

結(jié)點(diǎn)插入到指針p指向的

單鏈表結(jié)點(diǎn)之后,下面的操作序列中哪一個(gè)是正確的?(3)

1.q:=p^.link;p^.link:=q^.link

2.p^.link:=q^.link;q:=P^.link

3.q^.link:=p^.link;p^.link:=q;

4.p^.link:=q;q^.link:=p^,link

Question10.(單選)

某二叉樹結(jié)點(diǎn)的對(duì)稱序序列(中序列序列)為A、B、C、D、E、F、G,后序序列為B、D、C、A、F、G、E。

該二叉樹結(jié)點(diǎn)的前序序

列為(2)

1.E、G、F、A、C、D、B

2.E、A、C、B、D、G、F

3.E、A、G、C、F、B、D

4.E、G、A、C、D、F、B

Question11.(單選)

某二叉樹結(jié)點(diǎn)的對(duì)稱序序列為A、B、C、D、E、F、G,后序序列為B、D、C、A、F、G、E。

該二叉樹對(duì)應(yīng)的樹林包

括多少棵樹?(2)

1.1

2.2

3.3

4.4

Question12.(單選)

某二叉樹結(jié)點(diǎn)的對(duì)稱序序列為A、B、C、D、E、F、G,后序序列為B、D、C、A、F、G、E。

該二叉樹對(duì)應(yīng)的樹林結(jié)

點(diǎn)的層次次序序列為(1)

1.E、G、F、A、C、D、B

2.E、A、C、B、D、G、F

3.E、A、G、C、F、B、D

4.E、G、A、C、D、F、B

Question13.(單選)

假設(shè)就緒隊(duì)列中有10個(gè)進(jìn)程,系統(tǒng)將時(shí)間片設(shè)為200ms,CPU進(jìn)行進(jìn)程切換要花費(fèi)10ms。則

系統(tǒng)開銷所占的比率約

為(2)

1.1%

2.5%

3.10%

4.20%

yahoo在線筆試題(c語言)及部分答案

Question14.(單選)

長度相同但格式不同的2種浮點(diǎn)數(shù),假設(shè)前者階碼長、尾數(shù)短,后者階碼短、尾數(shù)長,其它

規(guī)定均相同,則它們可

表示的數(shù)的范圍和精度為:(2)

1.兩者可表示的數(shù)的范圍和精度相同

2.前者可表示的數(shù)的范圍大但精度低

3.后者可表示的數(shù)的范圍大且精度高

4.前者可表示的數(shù)的范圍大且精度高

Question15.(單選)

所謂”變號(hào)操作”是指將一個(gè)整數(shù)變成絕對(duì)值相同但符號(hào)相反的另一個(gè)整數(shù)。假設(shè)使用補(bǔ)

碼表示的8位整數(shù)

X=10010101,則經(jīng)過變號(hào)操作后結(jié)果為:(4)

1.1101010

2.10101

3.11101010

4.1101011

Question16.(單選)

設(shè)有一個(gè)用數(shù)組Q[1..m」表示的環(huán)形隊(duì)列,約定f為當(dāng)前隊(duì)頭元素在數(shù)組中的位置,r為隊(duì)

尾元素的后一位置(按順

時(shí)針方向),若隊(duì)列非空,則計(jì)算隊(duì)列中元素個(gè)數(shù)的公式應(yīng)為:(2)

1.r-f

2.(m+r-f)modm

3.(m-r+f)modm

4.(m-r-f)modm

Question17.(單選)

計(jì)算機(jī)最主要的工作特點(diǎn)是(2)

1.存儲(chǔ)程序與自動(dòng)控制

2.高速度與高精度

3.可靠性與可用性

4.有記憶能力

Question18.(單選)

計(jì)算機(jī)中數(shù)據(jù)的表示形式是(3)

1.八進(jìn)制

2.十進(jìn)制

3.二進(jìn)制

4.十六進(jìn)制

Question19.(單選)

下面列出的四種存儲(chǔ)器中,易失性存儲(chǔ)器是(1)

1.RAM

2.ROM

3.PROM

4.CD-ROM

Question20.(單選)

I/O接口位于(2)

1.總線和設(shè)備之間

2.CPU和I/O設(shè)備之間

3.主機(jī)和總線之間

4.CPU和主存儲(chǔ)器之間

Question21.(單選)

計(jì)算機(jī)硬件能直接識(shí)別和執(zhí)行的只有(4)

1.高級(jí)語言

2.符號(hào)語言

3.匯編語言

4.機(jī)器語言

Question22.(單選)

具有多媒體功能的微型計(jì)算機(jī)系統(tǒng)中,常見的CD-ROM是(2)

1.只讀型大容量軟盤

2.只讀型光盤

3.只讀型硬盤

4.半導(dǎo)體只讀存儲(chǔ)器

Question23.(單選)

微機(jī)中1K字節(jié)表示的二進(jìn)制位數(shù)是(4)

1.1000

2.8x1000

3.1024

4.8x1024

Question24.(單選)

下列字符中,ASCII碼值最小的是(2)

1.a

2.A

3.x

4.Y

Question25.(單選)

OSI(開放系統(tǒng)互聯(lián))參考模型的最低層是(3)

1.傳輸層

2.網(wǎng)絡(luò)層

3.物理層

4.應(yīng)用層

Question26.(單選)

在面向?qū)ο蟮南到y(tǒng)中,系統(tǒng)責(zé)任的良好分配原則是(3)

1.在類之間均勻分配

2.集中分配在少數(shù)控制類中

3.根據(jù)交互圖的消息進(jìn)行分配

4.根據(jù)個(gè)人喜好進(jìn)行分配

yahoo在線筆試題(c語言)及部分答案

Question27.(單選)

在CMM模型中,對(duì)軟件成熟度有以下5個(gè)級(jí)別,請(qǐng)從低到高排序

a初始級(jí):

軟件過程的特點(diǎn)是無秩序的,偶然甚至是混亂的。幾乎沒有什么過程是經(jīng)過定義的,成功依

賴于個(gè)人的努力。

b優(yōu)化級(jí):

利用來自過程和來自新思想、新技術(shù)的先導(dǎo)性試驗(yàn)的定量反饋信息,使持續(xù)過程改進(jìn)成為

可能。

c已定義級(jí):

管理活動(dòng)和工程活動(dòng)兩方面的軟件過程均已文檔化、標(biāo)準(zhǔn)化、并集成到組織的標(biāo)準(zhǔn)軟件過

程。

d已管理級(jí):

已采集詳細(xì)的有關(guān)軟件過程和產(chǎn)品質(zhì)量的度量,無論軟件過程還是產(chǎn)品均得到定量了解和控

制。

e可重復(fù)級(jí):

已建立基本的項(xiàng)目管理過程去跟蹤成本、進(jìn)度和功能性。必要的過程紀(jì)律已經(jīng)就位,使具

有類似應(yīng)用的項(xiàng)目。能重

復(fù)以前的成功。

(3)

1.acdbe

2.adceb

3.aecdb

4.abcde

Question28.(單選)

在下面所列舉的邏輯測試覆蓋中,測試覆蓋最強(qiáng)的是(3)

1.條件覆蓋

2.條件組合覆蓋

3.語句覆蓋

4.條件及判定覆蓋

Question29.(單選)

一般來說,在軟件維護(hù)過程中,大部分工作是由什么引起的(3)

1.適應(yīng)新的軟件環(huán)境

2.適應(yīng)新的硬件環(huán)境

3.用戶的需求改變

4.程序的可靠性

Question30.(單選)(2)

PSP是?

1.團(tuán)隊(duì)軟件過程

2.個(gè)體軟件過程

3.過程改進(jìn)過程

4.質(zhì)量管理過程

Question31.(單選)

假定a和b為int型變量,則執(zhí)行以下語句后b的值為(4)

a=1;b=10;

do{b-=a;a++;}while(b--<0);

1.9

2.-2

3.-1

4.8

Question32.(單選)

設(shè)有以下宏定義:

#defineN3

#defineY(n)((N+1)*n)

則執(zhí)行語句:z=2*(N+Y(5+1));后,z的值為(3)

1.出錯(cuò)

2.42

3.48

4.54

Question33.(單選)

執(zhí)行以下程序段后,m的值為(1)

inta[2][3]={{1,2,3},{4,5,6}};

intm,*p;

p=&a[0][0];

m=(*p)*(*(p+2))*(*(p+4));

1.15

2.14

3.13

4.12

Question34.(單選)

有以下程序

main()

{chara[]=\"programming\",b[]=\"language\";

char*p1,*p2;

inti;

p1=a;p2=b;

for(i=0;i<7;i++)

if(*(p1+i)==*(p2+i))printf(\"%c\",*(p1+i));

}

輸出結(jié)果是(4)

1.gm

2.rg

3.or

4.ga

Question35.(單選)

有以下程序

intfun(intx,inty,int*cp,int*dp)

{*cp=x+y;*dp=x-y;}

main()

{inta,b,c,d;

a=30;b=50;

fun(a,b,&c,&d);

printf(\"%d,%d

\",c,d);

}

輸出結(jié)果是(3)

1.50,30

2.30,50

3.80,-20

4.80,20

Question36.(單選)

下述標(biāo)識(shí)符中,合法的用戶標(biāo)識(shí)符是(4)

1.A#C

2.getch

3.void

4.sizeOf

yahoo在線筆試題(c語言)及部分答案

Question37.(單選)

以下選項(xiàng)中合法的字符常量是(3)

1.A

2.\'10\'

3.68

4.D

Question38.(單選)

以下敘述正確的是(3)

1.在C程序中,main函數(shù)必須位于程序的最前面

2.C程序的每行中只能寫一條語句

3.C語言本身沒有輸入輸出語句

4.在對(duì)一個(gè)C程序進(jìn)行編譯的過程中,可發(fā)現(xiàn)注釋中的拼寫錯(cuò)誤

Question39.(單選)

以下敘述中不正確的是(4)

1.在不同的函數(shù)中能夠使用相同名字的變量

2.函數(shù)中的形式參數(shù)是局部變量

3.在一個(gè)函數(shù)內(nèi)定義的變量只在本函數(shù)范圍內(nèi)有效

4.在一個(gè)函數(shù)內(nèi)的復(fù)合語句中定義的變量在本函數(shù)范圍內(nèi)有效

Question40.(單選)

設(shè)int類型的數(shù)據(jù)長度為2個(gè)字節(jié),則unsignedint類型數(shù)據(jù)的取值范圍是(2)

1.0~255

2.0~65535

3.-32768~32767

4.-256~255

Question41.(單選)

某文件中定義的靜態(tài)全局變量(或稱靜態(tài)外部變量)其作用域是(2)

1.只限某個(gè)函數(shù)

2.本文件

3.跨文件

4.不限制作用域

Question42.(單選)

語句:printf(\"%d

\",12&012);的輸出結(jié)果是(3)

1.12

2.012

3.8

4.6

Question43.(單選)

設(shè)intx=4;則執(zhí)行以下語句:x+=x-=x-x;后,x的值為(3)

1.0

2.4

3.8

4.12

Question44.(單選)

while(!x)中的(!x)與下面條件等價(jià)。(4)

1.x==1

2.x!=1

3.x!=0

4.x==0

Question45.(單選)

已知inti,a;執(zhí)行語句:i=(a=2*3,a*5),a+6;后,變量i的值是(3)

1.6

2.12

3.30

4.36

Question46.(單選)

整型變量x和y的值相等、且為非0值,則以下選項(xiàng)中,結(jié)果為零的表示式是(4)

1.x||y

2.x|y

3.x&y

4.x^y

Question47.(單選)

x、y、z被定義為int型變量,若從鍵盤給x、y、z輸入數(shù)據(jù),正確的輸入語句是(2)

1.INPUTx、y、z;

2.scanf(\"%d%d%d\",&x,&y,&z);

3.scanf(\"%d%d%d\",x,y,z);

4.read(\"%d%d%d\",x,y,z);

Question48.(單選)

以下各選項(xiàng)企圖說明一種新的類型名,其中正確的是(2)

1.typedefv1int;

2.typedefintv3;

3.typedefv4:int;

4.typedefv2=int;

Question49.(單選)

charx=3,y=6,z;

z=x^y<<2;

則z的二進(jìn)制值是(2)

1.10100

2.11011

3.11100

4.11000

Question50.(單選)

若有說明:inti,j=2,*p=&i;,則能完成i=j賦值功能的語句是(2)

1.i=*p;

2.*p=*&j;

3.i=&j;

4.i=**p;

Question51.(問答)

給定一個(gè)整型變量a,寫兩段代碼,第一個(gè)設(shè)置a的bit3,第二個(gè)清除a的bit3。在以上兩

個(gè)操作中,要保持其它

位不變。

a|=0x4;

intb=a&0x7;

a>>=4;

a=(a<<4)|b;

Question52.(問答)

有雙向循環(huán)鏈表結(jié)點(diǎn)定義為:

structnode

{intdata;

structnode*front,*next;

};

有兩個(gè)雙向循環(huán)鏈表A,B,知道其頭指針為:pHeadA,pHeadB,請(qǐng)寫一函數(shù)將兩鏈表中dat

a值相同的結(jié)點(diǎn)刪除

structnode

{intdata;

structnode*front,*next;

};

node*del(node*pHead){

if(pHead==pHead->next){

free(pHead);

returnNULL;

}

node*p=pHead;

pHead->next->front=pHead->front;

pHead->front給定字符串A和B,輸出A和B中的最大公共子串。

比如A="aocdfe"B="pmcdfa"則輸出"cdf"

*/

//Author:azhen

#include<stdio.h>

#include<stdlib.h>

#include<string.h>

char*commanstring(charshortstring[],charlongstring[])

{

inti,j;

char*substring=malloc(256);

if(strstr(longstring,shortstring)!=NULL)//如果……,那么返回shortstring

returnshortstring;

for(i=strlen(shortstring)-1;i>0;i--)//否則,開始循環(huán)計(jì)算

{

for(j=0;j<=strlen(shortstring)-i;j++){

memcpy(substring,&shortstring[j],i);

substring[i]='\0';

if(strstr(longstring,substring)!=NULL)

returnsubstring;

}

}

returnNULL;

}

main()

{

char*str1=malloc(256);

char*str2=malloc(256);

char*comman=NULL;

gets(str1);

gets(str2);

if(strlen(str1)>strlen(str2))//將短的字符串放前面

comman=commanstring(str2,str1);

else

comman=commanstring(str1,str2);

printf("thelongestcommanstringis:%s\n",comman);

}

11.寫一個(gè)函數(shù)比較兩個(gè)字符串str1和str2的大小,若相等返回0,若str1大于

str2返回1,若str1小于str2返回-1

intstrcmp(constchar*src,constchar*dst)

{

intret=0;

while(!(ret=*(unsignedchar*)src-*(unsignedchar*)dst)&&*dst)

{

++src;

++dst;

}

if(ret<0)

ret=-1;

elseif(ret>0)

ret=1;

return(ret);

}

3,求1000!的未尾有幾個(gè)0(用素?cái)?shù)相乘的方法來做,如72=2*2*2*3*3);

求出1->1000里,能被5整除的數(shù)的個(gè)數(shù)n1,能被25整除的數(shù)的個(gè)數(shù)n2,能被125整除的數(shù)的個(gè)數(shù)n3,

能被625整除的數(shù)的個(gè)數(shù)n4.

1000!末尾的零的個(gè)數(shù)=n1+n2+n3+n4;

#include<stdio.h>

#defineNUM1000

intfind5(intnum){

intret=0;

while(num%5==0){

num/=5;

ret++;

}

returnret;

}

intmain(){

intresult=0;

inti;

for(i=5;i<=NUM;i+=5)

{

result+=find5(i);

}

printf("thetotalzeronumberis%d\n",result);

return0;

}

1.有雙向循環(huán)鏈表結(jié)點(diǎn)定義為:

structnode

{intdata;

structnode*front,*next;

};

有兩個(gè)雙向循環(huán)鏈表A,B,知道其頭指針為:pHeadA,pHeadB,請(qǐng)寫一函數(shù)將兩鏈表中data值相同的結(jié)點(diǎn)刪除

BOOLDeteleNode(Node*pHeader,DataTypeValue)

{

if(pHeader==NULL)return;

BOOLbRet=FALSE;

Node*pNode=pHead;

while(pNode!=NULL)

{

if(pNode->data==Value)

{

if(pNode->front==NULL)

{

pHeader=pNode->next;

pHeader->front=NULL;

}

else

{

if(pNode->next!=NULL)

{

pNode->next->front=pNode->front;

}

pNode->front->next=pNode->next;

}

Node*pNextNode=pNode->next;

deletepNode;

pNode=pNextNode;

bRet=TRUE;

//不要break或return,刪除所有

}

else

{

pNode=pNode->next;

}

}

returnbRet;

}

voidDE(Node*pHeadA,Node*pHeadB)

{

if(pHeadA==NULL||pHeadB==NULL)

{

return;

}

Node*pNode=pHeadA;

while(pNode!=NULL)

{

if(DeteleNode(pHeadB,pNode->data))

{

if(pNode->front==NULL)

{

pHeadA=pNode->next;

pHeadA->front=NULL;

}

else

{

pNode->front->next=pNode->next;

if(pNode->next!=NULL)

{

pNode->next->front=pNode->front;

}

}

Node*pNextNode=pNode->next;

deletepNode;

pNode=pNextNode;

}

else

{

pNode=pNode->next;

}

}

}

2.編程實(shí)現(xiàn):找出兩個(gè)字符串中最大公共子字符串,如"abccade","dgcadde"的最大子串為"cad"

intGetCommon(char*s1,char*s2,char**r1,char**r2)

{

intlen1=strlen(s1);

intlen2=strlen(s2);

intmaxlen=0;

for(inti=0;i<len1;i++)

{

for(intj=0;j<len2;j++)

{

if(s1[i]==s2[j])

{

intas=i,bs=j,count=1;

while(as+1<len1&&bs+1<len2&&s1[++as]==s2[++bs])

count++;

if(count>maxlen)

{

maxlen=count;

*r1=s1+i;

*r2=s2+j;

}

}

}

}

3.編程實(shí)現(xiàn):把十進(jìn)制數(shù)(long型)分別以二進(jìn)制和十六進(jìn)制形式輸出,不能使用printf系列庫函數(shù)

char*test3(longnum){

char*buffer=(char*)malloc(11);

buffer[0]='0';

buffer[1]='x';

buffer[10]='\0';

char*temp=buffer+2;

for(inti=0;i<8;i++){

temp[i]=(char)(num<<4*i>>28);

temp[i]=temp[i]>=0?temp[i]:temp[i]+16;

temp[i]=temp[i]<10?temp[i]+48:temp[i]+55;

}

returnbuffer;

}

輸入N,打印N*N矩陣

比如N=3,打印:

123

894

765

N=4,打印:

1234

1213145

1116156

10987

解答:

1#defineN15

ints[N][N];

voidmain()

{

intk=0,i=0,j=0;

inta=1;

for(;k<(N+1)/2;k++)

{

while(j<N-k)s[i][j++]=a++;i++;j--;

while(i<N-k)s[i++][j]=a++;i--;j--;

while(j>k-1)s[i][j--]=a++;i--;j++;

while(i>k)s[i--][j]=a++;i++;j++;

}

for(i=0;i<N;i++)

{

for(j=0;j<N;j++)

cout<<s[i][j]<<'\t';

cout<<endl;

}

}

2defineMAX_N100

intmatrix[MAX_N][MAX_N];

/*

*(x,y):第一個(gè)元素的坐標(biāo)

*start:第一個(gè)元素的值

*n:矩陣的大小

*/

voidSetMatrix(intx,inty,intstart,intn){

inti,j;

if(n<=0)//遞歸結(jié)束條件

return;

if(n==1){//矩陣大小為1時(shí)

matrix[x][y]=start;

return;

}

for(i=x;i<x+n-1;i++)//矩陣上部

matrix[y][i]=start++;

for(j=y;j<y+n-1;j++)//右部

matrix[j][x+n-1]=start++;

for(i=x+n-1;i>x;i--)//底部

matrix[y+n-1][i]=start++;

for(j=y+n-1;j>y;j--)//左部

matrix[j][x]=start++;

SetMatrix(x+1,y+1,start,n-2);//遞歸

}

voidmain(){

inti,j;

intn;

scanf("%d",&n);

SetMatrix(0,0,1,n);

//打印螺旋矩陣

for(i=0;i<n;i++){

for(j=0;j<n;j++)

printf("%4d",matrix[i][j]);

printf("\n");

}

}

斐波拉契數(shù)列遞歸實(shí)現(xiàn)的方法如下:

intFunct(intn)

{

if(n==0)return1;

if(n==1)return1;

retrurnFunct(n-1)+Funct(n-2);

}

請(qǐng)問,如何不使用遞歸,來實(shí)現(xiàn)上述函數(shù)?

請(qǐng)教各位高手!

解答:intFunct(intn)//n為非負(fù)整數(shù)

{

inta=0;

intb=1;

intc;

if(n==0)c=1;

elseif(n==1)c=1;

elsefor(inti=2;i<=n;i++)//應(yīng)該n從2開始算起

{

c=a+b;

a=b;

b=c;

}

returnc;

}

解答:

現(xiàn)在大多數(shù)系統(tǒng)都是將低字位放在前面,而結(jié)構(gòu)體中位域的申明一般是先聲明高位。

100的二進(jìn)制是001100100

低位在前高位在后

001----s3

100----s2

100----s1

因此結(jié)果應(yīng)該是1

如果先申明的在低位則:

001----s1

100----s2

100----s3

結(jié)果是4

1、原題跟little-endian,big-endian沒有關(guān)系

2、原題跟位域的存儲(chǔ)空間分配有關(guān),到底是從低字節(jié)分配還是從高字節(jié)分配,從DevC++和VC7.1上看,都是從低字節(jié)開始分配,而且連續(xù)分配,中間不空,不像譚的書那樣會(huì)留空位

3、原題跟編譯器有關(guān),編譯器在未用堆棧空間的默認(rèn)值分配上有所不同,DevC++未用空間分配為

01110111b,VC7.1下為11001100b,因此在DevC++下的結(jié)果為5,在VC7.1下為1。

注:PC一般采用little-endian,即高高低低,但在網(wǎng)絡(luò)傳輸上,一般采用big-endian,即高低低高,華為是做網(wǎng)絡(luò)的,因此可能考慮big-endian模式,這樣輸出結(jié)果可能為4

判斷一個(gè)字符串是不是回文

intIsReverseStr(char*aStr)

{

inti,j;

intfound=1;

if(aStr==NULL)

return-1;

j=strlen(aStr);

for(i=0;i<j/2;i++)

if(*(aStr+i)!=*(aStr+j-i-1))

{

found=0;

break;

}

returnfound;

}

Josephu問題為:設(shè)編號(hào)為1,2,…n的n個(gè)人圍坐一圈,約定編號(hào)為k(1<=k<=n)的人從1開始報(bào)數(shù),數(shù)到m的那個(gè)人出列,它的下一位又從1開始報(bào)數(shù),數(shù)到m的那個(gè)人又出列,依次類推,直到所有人出列為止,由此產(chǎn)生一個(gè)出隊(duì)編號(hào)的序列。

數(shù)組實(shí)現(xiàn):

#include<stdio.h>

#include<malloc.h>

intJosephu(intn,intm)

{

intflag,i,j=0;

int*arr=(int*)malloc(n*sizeof(int));

for(i=0;i<n;++i)

arr[i]=1;

for(i=1;i<n;++i)

{

flag=0;

while(flag<m)

{

if(j==n)

j=0;

if(arr[j])

++flag;

++j;

}

arr[j-1]=0;

printf("第%4d個(gè)出局的人是:%4d號(hào)\n",i,j);

}

free(arr);

returnj;

}

intmain()

{

intn,m;

scanf("%d%d",&n,&m);

printf("最后勝利的是%d號(hào)!\n",Josephu(n,m));

system("pause");

return0;

}

鏈表實(shí)現(xiàn):

#include<stdio.h>

#include<malloc.h>

typedefstructNode

{

intindex;

structNode*next;

}JosephuNode;

intJosephu(intn,intm)

{

inti,j;

JosephuNode*head,*tail;

head=tail=(JosephuNode*)malloc(sizeof(JosephuNode));

for(i=1;i<n;++i)

{

tail->index=i;

tail->next=(JosephuNode*)malloc(sizeof(JosephuNode));

tail=tail->next;

}

tail->index=i;

tail->next=head;

for(i=1;tail!=head;++i)

{

for(j=1;j<m;++j)

{

tail=head;

head=head->next;

}

tail->next=head->next;

printf("第%4d個(gè)出局的人是

溫馨提示

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

評(píng)論

0/150

提交評(píng)論