2023年在线笔试题语言及部分答案_第1页
2023年在线笔试题语言及部分答案_第2页
2023年在线笔试题语言及部分答案_第3页
2023年在线笔试题语言及部分答案_第4页
2023年在线笔试题语言及部分答案_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

C试题

类型:C试题|试题:55道试题(50道选择题,5道问答题)ﻫ注意:答题过程假如您不提交答案,或者关闭浏览器退出,我们将不再允许您再次答题。

谢谢!

试题选项

Question1.(单选)

在顺序表(3,6,8,10,12,15,16,18,21,25,30)中,用二分法查找关键码值11,所需的关键码比

较次数为(3)ﻫﻫ1.2ﻫ2.3

3.4

4.5ﻫ

Question2.(单选)

设散列表的存储空间大小为19,所用散列函数为h(key)=keymod19,用开地址线性探查法解ﻫ决碰撞。散列表的当前

状态如下:012345678910111213141516171819019476855958239

3208.现要将关键码

ﻫ值75插入到该散列表中,其地址应为(1)

ﻫ1.1

2.11ﻫ3.5ﻫ4.15ﻫ

Question3.(单选)ﻫ作业管理的重要任务涉及作业输入、作业解决和作业输出。其中作业解决的工作是Ⅰ.作业

调度Ⅱ.作业控制Ⅲ.

ﻫ作业后备(3)ﻫ

1.只有Ⅰ

2.只有Ⅱﻫ3.Ⅰ和Ⅱ

4.都是ﻫﻫQuestion4.(单选)

系统为了管理文献,设立了专门的数据结构----文献控制块(FCB。FCB是在执行下列哪一个系ﻫ统调用时建立的?(1)

1.createﻫ2.openﻫ3.readﻫ4.write

ﻫQuestion5.(单选)

下面关于通道的叙述中,对的的是Ⅰ.通道相称于一个功能简朴的解决机Ⅱ.通道完毕数据输

入输出工作Ⅲ.通道与

ﻫCPU共用一个内存(4)ﻫﻫ1.Ⅰ和Ⅱ

2.Ⅰ和Ⅲ

3.Ⅱ和Ⅲﻫ4.都是ﻫﻫQuestion6.(单选)

互操作性是指在不同环境下的应用程序可以互相操作,互换信息。要使采用不同数据格式的ﻫ各种计算机之间可以相

互理解,这一功能是由下面哪一层来实现的?(2)ﻫﻫ1.应用层

2.表达层ﻫ3.会话层ﻫ4.传输层ﻫﻫQuestion7.(单选)

在UNIX的Shell程序中,可以使用位置变量。若要指明Shell引用的最近后台进程的号码,可ﻫ以使用位置变量(2)

1.$$ﻫ2.$!

3.$#

4.$-ﻫﻫQuestion8.(单选)

设二叉树根结点的层次为0,一棵深度(高度)为k的满二叉树和同样深度的完全二叉树各有

f个结点和c个结点,下列

关系式不对的的是:(2)

ﻫ1.f>=c

2.c>f

3.f=2k+1-1

4.C>2k-1

ﻫQuestion9.(单选)

单链表的每个结点中涉及一个指针link,它指向该结点的后继结点。现要将指针q指向的新

结点插入到指针p指向的

ﻫ单链表结点之后,下面的操作序列中哪一个是对的的?(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.(单选)ﻫ某二叉树结点的对称序序列(中序列序列)为A、B、C、D、E、F、G,后序序列为B、D、C、A、F、G、E。

该二叉树结点的前序序ﻫﻫ列为(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.(单选)ﻫ某二叉树结点的对称序序列为A、B、C、D、E、F、G,后序序列为B、D、C、A、F、G、E。ﻫ该二叉树相应的树林包ﻫ

括多少棵树?(2)

ﻫ1.1

2.2ﻫ3.3

4.4ﻫ

Question12.(单选)ﻫ某二叉树结点的对称序序列为A、B、C、D、E、F、G,后序序列为B、D、C、A、F、G、E。

该二叉树相应的树林结

ﻫ点的层次顺序序列为(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.(单选)

假设就绪队列中有10个进程,系统将时间片设为200ms,CPU进行进程切换要花费10ms。则ﻫ系统开销所占的比率约ﻫ

为(2)

ﻫ1.1%ﻫ2.5%

3.10%ﻫ4.20%ﻫﻫyahoo在线笔试题(c语言)及部分答案

Question14.(单选)

长度相同但格式不同的2种浮点数,假设前者阶码长、尾数短,后者阶码短、尾数长,其它

规定均相同,则它们可ﻫ

表达的数的范围和精度为:(2)

1.两者可表达的数的范围和精度相同

2.前者可表达的数的范围大但精度低ﻫ3.后者可表达的数的范围大且精度高ﻫ4.前者可表达的数的范围大且精度高ﻫ

Question15.(单选)ﻫ所谓“变号操作”是指将一个整数变成绝对值相同但符号相反的另一个整数。假设使用补

码表达的8位整数ﻫﻫX=10010101,则通过变号操作后结果为:(4)ﻫﻫ1.1101010ﻫ2.10101

3.11101010ﻫ4.1101011

ﻫQuestion16.(单选)

设有一个用数组Q[1..m」表达的环形队列,约定f为当前队头元素在数组中的位置,r为队

尾元素的后一位置(按顺

时针方向),若队列非空,则计算队列中元素个数的公式应为:(2)ﻫ

1.r-f

2.(m+r-f)modmﻫ3.(m-r+f)modmﻫ4.(m-r-f)modm

Question17.(单选)ﻫ计算机最重要的工作特点是(2)

1.存储程序与自动控制

2.高速度与高精度

3.可靠性与可用性ﻫ4.有记忆能力

Question18.(单选)

计算机中数据的表达形式是(3)

1.八进制

2.十进制ﻫ3.二进制ﻫ4.十六进制ﻫ

Question19.(单选)ﻫ下面列出的四种存储器中,易失性存储器是(1)ﻫﻫ1.RAMﻫ2.ROM

3.PROMﻫ4.CD-ROMﻫﻫQuestion20.(单选)ﻫI/O接口位于(2)ﻫﻫ1.总线和设备之间ﻫ2.CPU和I/O设备之间

3.主机和总线之间ﻫ4.CPU和主存储器之间ﻫﻫQuestion21.(单选)ﻫ计算机硬件能直接辨认和执行的只有(4)

1.高级语言

2.符号语言ﻫ3.汇编语言

4.机器语言ﻫ

Question22.(单选)ﻫ具有多媒体功能的微型计算机系统中,常用的CD-ROM是(2)

1.只读型大容量软盘

2.只读型光盘ﻫ3.只读型硬盘ﻫ4.半导体只读存储器

Question23.(单选)

微机中1K字节表达的二进制位数是(4)ﻫﻫ1.1000ﻫ2.8x1000

3.1024ﻫ4.8x1024ﻫ

Question24.(单选)

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

1.aﻫ2.Aﻫ3.xﻫ4.YﻫﻫQuestion25.(单选)

OSI(开放系统互联)参考模型的最低层是(3)

ﻫ1.传输层

2.网络层ﻫ3.物理层

4.应用层

ﻫQuestion26.(单选)ﻫ在面向对象的系统中,系统责任的良好分派原则是(3)

1.在类之间均匀分派

2.集中分派在少数控制类中

3.根据交互图的消息进行分派

4.根据个人喜好进行分派ﻫﻫyahoo在线笔试题(c语言)及部分答案ﻫQuestion27.(单选)

在CMM模型中,对软件成熟度有以下5个级别,请从低到高排序ﻫa初始级:ﻫ软件过程的特点是无秩序的,偶尔甚至是混乱的。几乎没有什么过程是通过定义的,成功依ﻫ赖于个人的努力。

b优化级:ﻫ运用来自过程和来自新思想、新技术的先导性实验的定量反馈信息,使连续过程改善成为ﻫ也许。ﻫﻫc已定义级:

管理活动和工程活动两方面的软件过程均已文档化、标准化、并集成到组织的标准软件过ﻫ程。

d已管理级:

已采集具体的有关软件过程和产品质量的度量,无论软件过程还是产品均得到定量了解和控

制。ﻫ

e可反复级:

已建立基本的项目管理过程去跟踪成本、进度和功能性。必要的过程纪律已经就位,使具ﻫ有类似应用的项目。能重

ﻫ复以前的成功。

(3)ﻫﻫ1.acdbe

2.adcebﻫ3.aecdbﻫ4.abcde

Question28.(单选)

在下面所列举的逻辑测试覆盖中,测试覆盖最强的是(3)

ﻫ1.条件覆盖ﻫ2.条件组合覆盖ﻫ3.语句覆盖

4.条件及鉴定覆盖ﻫ

Question29.(单选)ﻫ一般来说,在软件维护过程中,大部分工作是由什么引起的(3)

ﻫ1.适应新的软件环境ﻫ2.适应新的硬件环境

3.用户的需求改变ﻫ4.程序的可靠性

ﻫQuestion30.(单选)(2)ﻫPSP是?ﻫﻫ1.团队软件过程

2.个体软件过程ﻫ3.过程改善过程

4.质量管理过程

Question31.(单选)ﻫ假定a和b为int型变量,则执行以下语句后b的值为(4)

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

1.9ﻫ2.-2ﻫ3.-1ﻫ4.8ﻫ

Question32.(单选)

设有以下宏定义:

#defineN3ﻫ#defineY(n)((N+1)*n)ﻫ则执行语句:z=2*(N+Y(5+1));后,z的值为(3)ﻫ

1.犯错

2.42ﻫ3.48

4.54

ﻫQuestion33.(单选)

执行以下程序段后,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));

}ﻫ输出结果是(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);ﻫ}ﻫ输出结果是(3)ﻫﻫ1.50,30

2.30,50ﻫ3.80,-20

4.80,20

Question36.(单选)ﻫ下述标记符中,合法的用户标记符是(4)ﻫ

1.A#Cﻫ2.getchﻫ3.void

4.sizeOf

yahoo在线笔试题(c语言)及部分答案ﻫQuestion37.(单选)

以下选项中合法的字符常量是(3)ﻫﻫ1.Aﻫ2.\'10\'

3.68ﻫ4.D

Question38.(单选)

以下叙述对的的是(3)

1.在C程序中,main函数必须位于程序的最前面ﻫ2.C程序的每行中只能写一条语句ﻫ3.C语言自身没有输入输出语句ﻫ4.在对一个C程序进行编译的过程中,可发现注释中的拼写错误

Question39.(单选)ﻫ以下叙述中不对的的是(4)

ﻫ1.在不同的函数中可以使用相同名字的变量

2.函数中的形式参数是局部变量ﻫ3.在一个函数内定义的变量只在本函数范围内有效

4.在一个函数内的复合语句中定义的变量在本函数范围内有效ﻫ

Question40.(单选)ﻫ设int类型的数据长度为2个字节,则unsignedint类型数据的取值范围是(2)

ﻫ1.0~255

2.0~65535ﻫ3.-32768~32767ﻫ4.-256~255

Question41.(单选)

某文献中定义的静态全局变量(或称静态外部变量)其作用域是(2)ﻫﻫ1.只限某个函数ﻫ2.本文献

3.跨文献

4.不限制作用域ﻫﻫQuestion42.(单选)ﻫ语句:printf(\"%dﻫ\",12&012);的输出结果是(3)

1.12

2.012

3.8ﻫ4.6ﻫﻫQuestion43.(单选)

设intx=4;则执行以下语句:x+=x-=x-x;后,x的值为(3)

1.0ﻫ2.4ﻫ3.8

4.12ﻫﻫQuestion44.(单选)ﻫwhile(!x)中的(!x)与下面条件等价。(4)

1.x==1

2.x!=1

3.x!=0ﻫ4.x==0ﻫ

Question45.(单选)

已知inti,a;执行语句:i=(a=2*3,a*5),a+6;后,变量i的值是(3)ﻫﻫ1.6

2.12

3.30ﻫ4.36ﻫQuestion46.(单选)ﻫ整型变量x和y的值相等、且为非0值,则以下选项中,结果为零的表达式是(4)

1.x||yﻫ2.x|yﻫ3.x&yﻫ4.x^y

Question47.(单选)ﻫx、y、z被定义为int型变量,若从键盘给x、y、z输入数据,对的的输入语句是(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.(单选)ﻫ以下各选项企图说明一种新的类型名,其中对的的是(2)

ﻫ1.typedefv1int;ﻫ2.typedefintv3;ﻫ3.typedefv4:int;ﻫ4.typedefv2=int;ﻫﻫQuestion49.(单选)

charx=3,y=6,z;

z=x^y<<2;

则z的二进制值是(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.(问答)ﻫ给定一个整型变量a,写两段代码,第一个设立a的bit3,第二个清除a的bit3。在以上两

个操作中,要保持其它

ﻫ位不变。ﻫﻫa|=0x4;

ﻫintb=a&0x7;

a>>=4;

a=(a<<4)|b;ﻫ

Question52.(问答)ﻫ有双向循环链表结点定义为:

structnodeﻫ{intdata;ﻫstructnode*front,*next;

};

有两个双向循环链表A,B,知道其头指针为:pHeadA,pHeadB,请写一函数将两链表中dat

a值相同的结点删除

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--)//否则,开始循环计算

{ﻫ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.写一个函数比较两个字符串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!的未尾有几个0(用素数相乘的方法来做,如72=2*2*2*3*3);ﻫ求出1->1000里,能被5整除的数的个数n1,能被25整除的数的个数n2,能被125整除的数的个数n3,ﻫ能被625整除的数的个数n4.

1000!末尾的零的个数=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.有双向循环链表结点定义为:

structnodeﻫ{intdata;

structnode*front,*next;

};ﻫ有两个双向循环链表A,B,知道其头指针为:pHeadA,pHeadB,请写一函数将两链表中data值相同的结点删除

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.编程实现:找出两个字符串中最大公共子字符串,如"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.编程实现:把十进制数(long型)分别以二进制和十六进制形式输出,不能使用printf系列库函数ﻫ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):第一个元素的坐标

*start:第一个元素的值

*n:矩阵的大小

*/

voidSetMatrix(intx,inty,intstart,intn){

inti,j;ﻫﻫif(n<=0)//递归结束条件ﻫreturn;

if(n==1){//矩阵大小为1时ﻫ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");

}

}

斐波拉契数列递归实现的方法如下:

intFunct(intn)ﻫ{ﻫif(n==0)return1;ﻫif(n==1)return1;

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

请问,如何不使用递归,来实现上述函数?ﻫ请教各位高手!

解答:intFunct(intn)//n为非负整数

inta=0;ﻫintb=1;

intc;

if(n==0)c=1;

elseif(n==1)c=1;ﻫelsefor(inti=2;i<=n;i++)//应当n从2开始算起ﻫ{

c=a+b;ﻫa=b;

b=c;ﻫ}ﻫreturnc;ﻫ}

解答:

现在大多数系统都是将低字位放在前面,而结构体中位域的申明一般是先声明高位。ﻫ100的二进制是001100100

低位在前高位在后

001----s3ﻫ100----s2

100----s1ﻫ所以结果应当是1

假如先申明的在低位则:

001----s1

100----s2

100----s3

结果是4ﻫ1、原题跟little-endian,big-endian没有关系

2、原题跟位域的存储空间分派有关,到底是从低字节分派还是从高字节分派,从DevC++和VC7.1上看,都是从低字节开始分派,并且连续分派,中间不空,不像谭的书那样会留空位ﻫ3、原题跟编译器有关,编译器在未用堆栈空间的默认值分派上有所不同,DevC++未用空间分派为

01110111b,VC7.1下为11001100b,所以在DevC++下的结果为5,在VC7.1下为1。

注:PC一般采用little-endian,即高高低低,但在网络传输上,一般采用big-endian,即高低低高,华为是做网络的,所以也许考虑big-endian模式,这样输出结果也许为4

ﻫ判断一个字符串是不是回文

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问题为:设编号为1,2,…n的n个人围坐一圈,约定编号为k(1<=k<=n)的人从1开始报数,数到m的那个人出列,它的下一位又从1开始报数,数到m的那个人又出列,依次类推,直到所有人出列为止,由此产生一个出队编号的序列。

数组实现:ﻫ#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个出局的人是:%4d号\n",i,j);ﻫ}

free(arr);ﻫreturnj;ﻫ}ﻫintmain()ﻫ{ﻫintn,m;

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

printf("最后胜利的是%d号!\n",Josephu(n,m));ﻫsystem("pause");

return0;

}

链表实现:

#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("第

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论