首页
试卷库
试题库
当前位置:
X题卡
>
所有题目
>
题目详情
TCP/IP网络的体系结构分为应用层、传输层、网络互联层和网络接口层。属于传输层协议的是______。
查看本题答案
包含此试题的试卷
初级程序员《单选题》真题及答案
点击查看
你可能感兴趣的试题
简单网络管理协议SNMP处于网络体系结构的哪一层
互联层
传输层
应用层
逻辑链路控制层
简单网络管理协议SNMP处于网络体系结构的______层
互联层
传输层
应用层
逻辑链路控制层
TCP/IP体系结构中与ISO-OSI参考模型的12层对应的是哪一层
网络接口层
传输层
互联网层
应用层
从体系结构来看TCP/IP是ISO七层模型的简化它分为四层网络接口层网间网层IP应用层
简单网络管理协议SNMP处于网络体系结构的哪一层
互联层
传输层
应用层
逻辑链路控制层
TCP/IP网络的体系结构分为应用层传输层网络互连层和网络接口层属于传输层协议的是
TCP和ICMP
IP和FTP
TCP和UDP
ICMP和UDP
在TCP/IP体系结构中UDP协议属于
应用层
传输层
网络层
网络接口层
以下对TCP/IP体系结构与OSI参考模型层次关系的描述哪一个是错误的
TCP/IP的应用层与OSI应用层相对应
TCP/IP的传输层与OSI传输层相对应
TCP/IP的互联层与OSI网络层相对应
TCP/IP的主机一网络层与OSI数据链路层相对应
简单网络管理协议SNMP处于网络体系结构的______
互联层
传输层
应用层
逻辑链路控制层
从功能上分物联网的体系结构可分为三层
感知层,网络层,应用层
感知层,应用层,交互层
感知层,应用层,网络层
网络层,应用层,交互层
从体系结构来看TCP/IP是ISO七层模型的简化它分为四层网络接口层传输层TCP应用层
TCP/IP的参考模型将网络体系结构分为应用层表示层会话层传输层网络层数 据链路层和物理层
TCP/IP协议的体系结构分为应用层传输层网络互联层和其中传输层协议有TCP和TCP协议把作为
会话层
网络接口层
数据链路层
物理层
TCP/IP网络的体系结构分为应用层传输层网络互连层和网络接口层属于传输层协议的是
TCP 和ICMP
IP 和FTP
TCP 和UDP
ICMP 和UDP
热门试题
更多
对如图8-24所示的二叉树进行后序遍历左子树右子树根节点的结果是______
对图8-22所示的二叉树进行中序遍历左子树根右子树的结果是______
阅读以下说明和C代码将应填入n处的字句写在对应栏内 【说明】 在一图像处理系统中开发者定义了一个图像结构ImageCon其中定义了图像应该具有的属性当图像件的内容或状态发生变化时与之相关联的ImageView结构的值都需要发生改变一个ImageCon结构能够关联一组ImageView结构当ImageCon结构的内容或状态发生变化时所有与之相关联的ImageView结构都将被更新这种应用被称为观察者模式以下代码采用C语言实现能够正确编译通过 【C代码】#include<stdio.h>#define OBS_MAXNUM20/*一个ImageCon变量最多能够关联的ImageView变量的个数*/typedefvoid 1strucImageCon*structImageView* structImageView{funcupdate /*ImageView结构采用的更新函数*/ /*其他的结构字段省略*/} structImageCon{2 myObs[OBS_MAXNUM] /*存储所有与ImageCon相关联的ImageView结构指针*/intindex /*与ImageCon结构变量相关联的ImageView结构变量的个数*/}void attachstructImageCon*IMGstructImageView*ob{ /*关联Obersver结构ob与ImageCon结构IMG*/int loop=0 ifIMG→index>=OBS_MAXNUM||ob==NULLreturn forloop=0loop<IMG→indexloop++ ifIMG→myObs[loop]==obreturn IMG→myObs[IMG→index]=ob IMG→index++}voiddetachstructImageCon *IMGstructImageView*ob{ /*解除IMG结构与ob结构间的关系*/intloop ifob==NULLreturn forloop=0loop<IMG→indexloop++{ ifIMG→myObs[loop]==ob{ ifloop<=IMG→index-2 IMG→myObs[loop]=IMG→myObs[3] IMG→myObs[IMG→index-1]=NULL IMG→index-- breack }} }voidupdatelstructImageCon*IMGstructImageView *ob{/*更新ob结构的值更新代码省略*/}void update2structImageCon*IMGstructImageView*ob{ /*更新ob结构的值更新代码省略*/}void notifyObsstructImageCon*IMG{ /*当IMG结构的值发生变化时通知与之关联的所有ImageView结构变量*/int loopforloop=0loop<IMG→indexloop++{ IMG→myObs[loop]→update4 }} voidmain{structImageCon IMG/*定义一ImageCon变量*/structImageView explorer1explorer2/*定义两个ImageView变量*/ /*初始化与ImageCon变量相关的ImageView变量个数为0*/ IMG.index=0 explorer1.update=updatel/*设置explorerl变量的更新函数*/ explorer2.update=update2/*设置explorer2变量的更新函数*/ attach&IMG&explorer1/*关联explorer1与IMG对象*/ attach&IMG&explorer1/*关联explorer1与IMG对象*/ /*其他代码省略*/5 return}
设数组a[1..60..9]的元素以行为主序存放每个元素占用一个存储单元则数组元素a[33]的地址为______
试题三阅读以下说明和C函数回答问题 [说明] 计算机在处理算术表达式时首先将其转换为后缀表达式例如表达式46+5*120-37的后缀表达式形式为46512037-* + 计算后缀表达式时从左至右扫描后缀表达式若遇到运算对象则压入栈中遇到运算符则从栈中弹出相关运算对象进行计算并将运算结果压入栈中重复以上过程直到后缀表达式扫描结束例如后缀表达式46 512037-*+的汁算过程如下①依次将46512037压入栈中 ②遇到-取出37120计算120-37=83将其压入栈中 ③遇到*取出835计算5×83=415将其压入栈中 ④遇到+取出41546计算46+415=461将其压入栈中 ⑤表达式结束则计算过程完成函数computingcharexpt[]int *result的功能是基于栈计算后缀形式的表达式以串形式存入字符数组expr的值并通过参数result返回该值函数的返回值为-1/0分别表示表达式有/无错误假设表达式中仅包含数字空格和算术运算符号其中所有项均以空格分隔且运算符仅包含加+减-乘*除/ 函数computing中所用栈的基本操作的函数原型说明如下voidInitStackSTACK *s初始化栈voidPushSTACK*sinte将一个整数压栈栈中元素数目增1 voidPopSTACK*s栈顶元素出栈栈中元素数目减1intTopSTACK s返回非空栈的栈顶元素值栈中元素数目不变intIsEmptySTACK s若s是空栈则返回1否则返回0[C函数]intcomputingchar expr[]int*result{STACKs;inttnum ab;char*ptr;InitStack&s;ptr=expr;pstr /*字符指针指向后缀表达式串的第一个字符*/while *ptr!=’/0’{if*ptr==’’{ /*当前字符是空格*/1 ;/*字符指针指向下一字符*/ continue;} elseif isdigit*ptr{ /*当前字符是数字则将该数字开始的数字串转换为数值*/ tnum=2; while*ptr>=’0’&&*ptr<=’9’ { tnum=tnum*10+3; ptr++; } push4; }else /*当前字符是运算符或其他符号*/ if*ptr==’+’||*ptr==’-’||*ptr==’*’||*ptr==’/’{ if!IsEmptyS{ a=Tops;Pop&s;/*取运算符的第二个运算数*/ if!IsEmptyS{ b=Tops;Pop&s; /*取运算符的第一个运算数*/ }elsereturn-1; } elsereturn-1;switch*ptr{ case’+’:Push&Sb+a;break; case’-’:Push&sb-a;break; case’+’:Push&sb*a;break; case’/’:Push&sb/a;break; }else return-1;ptr++; /*字符指针指向下一字符*/}/*while*/ifIsEmptys return-1;else{ 5=Tops;Pop&s;/*取运算结果*/ if!IsEmptysreturn-1; return0;}}
若原始数据序列2344567128197采用直接插入排序法顺序地将每个元素插入到它之前的适当位置排序则进行完第4趟后的排序结果是______
满二叉树的特点是每层上的节点数都达到最大值因此对于高度为hh>1的满二叉树其节点总数为 18 对非空满二叉树由根节点开始按照先根后子树先左子树后右子树的次序从123依次编号则对于树中编号为i的非叶子节点其右子树的编号为 19高度为3的满二叉树如图8-20所示
阅读以下说明和C程序将应填入n处的字句写在对应栏内 【说明】 并行计算中需要将N个作业分配给N个处理器同时去完成每个处理器都能承担这N个作业但耗时不同下面的程序用回溯法计算总耗时最小的一种作业分配方案在该方案中为每个处理器分配1个不同的作业 程序中N个作业从0开始依次编号N个处理器也从0开始依次编号主要的变量说明如下 c[i][j]将作业i分配给处理器j的耗时 job[i]值为0表示作业i未分配值为j表示作业i分配给处理器j processor[k]值为0表示处理器k未分配作业值为1表示处理器k已分配作业 mincost最小总耗时【C程序】 #include<stdio.h>#defineN8/*N表示作业数和处理器数*/ intc[N][N]unsignedint mincost=65535/*设置min的初始值大于可能的总耗时*/int job[N]temp[N]processor[N]voidAssignintkunsignedint cost{inti if1&&cost<mincost{ mincost=cost fori=0i<Ni++temp[i]=job[i] }else{ fori=0i<Ni++/*分配作业k*/ if2&& cost+c[k][i]<mincost{ processor[i]=1job[k]=3 Assign4cost+c[k][i] 5job[k]=0 }/*if*/ }}/*Assign*/ voidmain{int ij fori=0i<Ni++{/*设置每个作业由不同处理器承担时耗时及全局数组的初值*/ processor[i]=0job[i]=0temp[i]=0 forj=0j<Nj++ scanf%d&c[i][j]} Assign00/*从作业0开始分配*/ printf/n最小耗时=%d/nmincost fori=0i<Ni++printfJob%disassigned toProcessor%d/nitemp[i]}/*main*/
若将图8-23a所示的无向图改为完全图则还需要增加24 条边图b的邻接矩阵表示为25行列均以ABCDE为序
阅读以下说明和C代码将应填入n处的字句写在对应栏内 【说明】 在一图像处理系统中开发者定义了一个图像结构ImageCon其中定义了图像应该具有的属性当图像件的内容或状态发生变化时与之相关联的ImageView结构的值都需要发生改变一个ImageCon结构能够关联一组ImageView结构当ImageCon结构的内容或状态发生变化时所有与之相关联的ImageView结构都将被更新这种应用被称为观察者模式以下代码采用C语言实现能够正确编译通过 【C代码】#include<stdio.h>#define OBS_MAXNUM20/*一个ImageCon变量最多能够关联的ImageView变量的个数*/typedefvoid 1strucImageCon*structImageView* structImageView{funcupdate /*ImageView结构采用的更新函数*/ /*其他的结构字段省略*/} structImageCon{2 myObs[OBS_MAXNUM] /*存储所有与ImageCon相关联的ImageView结构指针*/intindex /*与ImageCon结构变量相关联的ImageView结构变量的个数*/}void attachstructImageCon*IMGstructImageView*ob{ /*关联Obersver结构ob与ImageCon结构IMG*/int loop=0 ifIMG→index>=OBS_MAXNUM||ob==NULLreturn forloop=0loop<IMG→indexloop++ ifIMG→myObs[loop]==obreturn IMG→myObs[IMG→index]=ob IMG→index++}voiddetachstructImageCon *IMGstructImageView*ob{ /*解除IMG结构与ob结构间的关系*/intloop ifob==NULLreturn forloop=0loop<IMG→indexloop++{ ifIMG→myObs[loop]==ob{ ifloop<=IMG→index-2 IMG→myObs[loop]=IMG→myObs[3] IMG→myObs[IMG→index-1]=NULL IMG→index-- breack }} }voidupdatelstructImageCon*IMGstructImageView *ob{/*更新ob结构的值更新代码省略*/}void update2structImageCon*IMGstructImageView*ob{ /*更新ob结构的值更新代码省略*/}void notifyObsstructImageCon*IMG{ /*当IMG结构的值发生变化时通知与之关联的所有ImageView结构变量*/int loopforloop=0loop<IMG→indexloop++{ IMG→myObs[loop]→update4 }} voidmain{structImageCon IMG/*定义一ImageCon变量*/structImageView explorer1explorer2/*定义两个ImageView变量*/ /*初始化与ImageCon变量相关的ImageView变量个数为0*/ IMG.index=0 explorer1.update=updatel/*设置explorerl变量的更新函数*/ explorer2.update=update2/*设置explorer2变量的更新函数*/ attach&IMG&explorer1/*关联explorer1与IMG对象*/ attach&IMG&explorer1/*关联explorer1与IMG对象*/ /*其他代码省略*/5 return}
阅读以下说明和C程序将应填入n处的字句写在对应栏内 【说明】 并行计算中需要将N个作业分配给N个处理器同时去完成每个处理器都能承担这N个作业但耗时不同下面的程序用回溯法计算总耗时最小的一种作业分配方案在该方案中为每个处理器分配1个不同的作业 程序中N个作业从0开始依次编号N个处理器也从0开始依次编号主要的变量说明如下 c[i][j]将作业i分配给处理器j的耗时 job[i]值为0表示作业i未分配值为j表示作业i分配给处理器j processor[k]值为0表示处理器k未分配作业值为1表示处理器k已分配作业 mincost最小总耗时【C程序】 #include<stdio.h>#defineN8/*N表示作业数和处理器数*/ intc[N][N]unsignedint mincost=65535/*设置min的初始值大于可能的总耗时*/int job[N]temp[N]processor[N]voidAssignintkunsignedint cost{inti if1&&cost<mincost{ mincost=cost fori=0i<Ni++temp[i]=job[i] }else{ fori=0i<Ni++/*分配作业k*/ if2&& cost+c[k][i]<mincost{ processor[i]=1job[k]=3 Assign4cost+c[k][i] 5job[k]=0 }/*if*/ }}/*Assign*/ voidmain{int ij fori=0i<Ni++{/*设置每个作业由不同处理器承担时耗时及全局数组的初值*/ processor[i]=0job[i]=0temp[i]=0 forj=0j<Nj++ scanf%d&c[i][j]} Assign00/*从作业0开始分配*/ printf/n最小耗时=%d/nmincost fori=0i<Ni++printfJob%disassigned toProcessor%d/nitemp[i]}/*main*/
两个递增序列A和B的长度分别为m和nm<n将两者归并为一个长度为m+n的递增序列时______归并过程中元素的比较次数最少
广度优先遍历的含义是从图中某个顶点v出发在访问了v之后依次访问v的各个未被访问过的邻接点然后分别从这些邻接点出发依次访问它们的邻接点且先被访问的顶点的邻接点先于后被访问的顶点的邻接点被访问直至图中所有己被访问的顶点的邻接点都被访问到______是图8-21的广度优先遍历序列
试题三阅读以下说明和C函数回答问题 [说明] 计算机在处理算术表达式时首先将其转换为后缀表达式例如表达式46+5*120-37的后缀表达式形式为46512037-* + 计算后缀表达式时从左至右扫描后缀表达式若遇到运算对象则压入栈中遇到运算符则从栈中弹出相关运算对象进行计算并将运算结果压入栈中重复以上过程直到后缀表达式扫描结束例如后缀表达式46 512037-*+的汁算过程如下①依次将46512037压入栈中 ②遇到-取出37120计算120-37=83将其压入栈中 ③遇到*取出835计算5×83=415将其压入栈中 ④遇到+取出41546计算46+415=461将其压入栈中 ⑤表达式结束则计算过程完成函数computingcharexpt[]int *result的功能是基于栈计算后缀形式的表达式以串形式存入字符数组expr的值并通过参数result返回该值函数的返回值为-1/0分别表示表达式有/无错误假设表达式中仅包含数字空格和算术运算符号其中所有项均以空格分隔且运算符仅包含加+减-乘*除/ 函数computing中所用栈的基本操作的函数原型说明如下voidInitStackSTACK *s初始化栈voidPushSTACK*sinte将一个整数压栈栈中元素数目增1 voidPopSTACK*s栈顶元素出栈栈中元素数目减1intTopSTACK s返回非空栈的栈顶元素值栈中元素数目不变intIsEmptySTACK s若s是空栈则返回1否则返回0[C函数]intcomputingchar expr[]int*result{STACKs;inttnum ab;char*ptr;InitStack&s;ptr=expr;pstr /*字符指针指向后缀表达式串的第一个字符*/while *ptr!=’/0’{if*ptr==’’{ /*当前字符是空格*/1 ;/*字符指针指向下一字符*/ continue;} elseif isdigit*ptr{ /*当前字符是数字则将该数字开始的数字串转换为数值*/ tnum=2; while*ptr>=’0’&&*ptr<=’9’ { tnum=tnum*10+3; ptr++; } push4; }else /*当前字符是运算符或其他符号*/ if*ptr==’+’||*ptr==’-’||*ptr==’*’||*ptr==’/’{ if!IsEmptyS{ a=Tops;Pop&s;/*取运算符的第二个运算数*/ if!IsEmptyS{ b=Tops;Pop&s; /*取运算符的第一个运算数*/ }elsereturn-1; } elsereturn-1;switch*ptr{ case’+’:Push&Sb+a;break; case’-’:Push&sb-a;break; case’+’:Push&sb*a;break; case’/’:Push&sb/a;break; }else return-1;ptr++; /*字符指针指向下一字符*/}/*while*/ifIsEmptys return-1;else{ 5=Tops;Pop&s;/*取运算结果*/ if!IsEmptysreturn-1; return0;}}
在任意一棵非空的二叉树中终端节点叶子的数目总是比具有两个孩子的非终端节点的数目______
若二叉树的前序遍历序列与中序遍历序列相同且树中节点数大于1则该二叉树的______
设初始栈为空s表示入栈操作x表示出栈操作则______是合法的操作序列
试题一阅读以下说明和C语言函数回答问题 [说明] 函数sortNODE*head的功能是用冒泡排序法对单链表中的元素进行非递减排序对于两个相邻节点中的元素若较小的元素在后面则交换这两个节点中的元素值其中head指向链表的头节点排序时为了避免每趟都扫描到链表的尾节点设置一个指针endptr使其指向下趟扫描需要到达的最后一个节点例如对于图8-25a所示的链表进行一趟冒泡排序后得到图8-25b所示的链表 链表的节点类型定义如下 typedefStruetNode{intdata structNode*next}NODE; [C语言函数]voidsortNODE*head{ NODE*ptr*preptr*endptr;inttempdata; ptr=head->next;while 1/*查找表尾节点*/ ptr=ptr->next;endptr=ptr; /*令endptr指向表尾节点*/ptr=2; whileptr!=endptr{ while3 { ifptr->data>ptr->next->data {tempdata=ptr->data; /*交换相邻节点的数据*/ ptr->data=ptr->next->data; ptr->next->data=tempdata; }preptr=4 ptr=ptr->next;} endptr=5;ptr=head->next; }}
二叉排序树或者是一棵空树或者是具有如下性质的二叉树特其左子树非空则左子树上所有节点的值均小于根节点的值若其右子树非空则右子树上所有节点的值均大于根节点的值其左右子树本身就是两棵二叉排序树根据该定义对一棵非空的二叉排序树进行______遍历可得到一个节点元素的递增序列
阅读下列程序说明和C程序把应填入其中n处的字句写在对应栏内 【程序说明】 已知某二叉树的前序遍历和中序遍历序列可以得到该二叉树的结构本程序实现了根据这两个遍历序列生成一棵链接表示的二叉树 构造二叉树的算法要点是由前序遍历序列该序列的第一个元素是根结点元素该元素将中序遍历序列分成左右两部分那些位于该元素之前的元素是它的左子树上的元素位于该元素之后的元素是它的右子树上的元素对于左右子树由它们的前序遍历序列的第一个元素可确定左右子树的根结点参照中序遍历序列又可进一步确定子树的左右子树元素如此递归地参照两个遍历序列最终构造出二叉树 两个遍历序列作为主函数main的参数为简单起见程序假定两个遍历序列是相容的主函数调用函数restore建立二叉树函数restore以树子树的前序遍历和中序遍历两序列及序列长为参数采用递归方法建立树子树函数postorder实现二叉树的后序遍历序列输出用来验证函数restore建立的二叉树 【程序】#includestdio.h> #include<stdlib.h>#defineMAX100typedef structnode{chardata struetnode*llink*rlink}TNODE charpred[MAX]inod[MAX]TNODE*restore Char*char*intmainintargcChar**argv {TNODE*root ifargc<3exit0 strcpypredargv[1] strcpyinodargv[2] root=restorepredinodstrlenpredpostorderroot printf/n/n}TNODE* restoreChar*pposchar*iposintn{ /*参数包括前序遍历序列数组和中序遍历数组*/TNODE* ptrChar*rpos intkifn<=0returnNULL ptr=TNODE*mallocsizeofTNODE ptr→data=1 for2rpos=iposrpos<ipos+nrpos++ if*rpos==*pposbreak k=3 ptr→llink=restoreppos+14k ptr→rlink=restore5+krpos+ 1n-1-kreturnptr }postorderTNODE*ptr{ ifptr==NULLreturn postorderptr→llink postorderptr→rlink prinft%cptr→data}
如果待排序序列中两个元素具有相同的值在排序前后它们的相互位置发生颠倒则称该排序算法是不稳定的______是稳定的排序方法因为这种方法在比较相邻元素时值相同的元素并不进行交换
采用一维数组S存储一个n阶对称矩阵A的下三角部分按行存放包括主对角线设元素A[i][j]存放在S[k]中ijk均从1开始取值且S[1]=A[1][1]则k与ij的对应关系是______例如元素A[3][2]存在S[5]中
试题一阅读以下说明和C语言函数回答问题 [说明] 函数sortNODE*head的功能是用冒泡排序法对单链表中的元素进行非递减排序对于两个相邻节点中的元素若较小的元素在后面则交换这两个节点中的元素值其中head指向链表的头节点排序时为了避免每趟都扫描到链表的尾节点设置一个指针endptr使其指向下趟扫描需要到达的最后一个节点例如对于图8-25a所示的链表进行一趟冒泡排序后得到图8-25b所示的链表 链表的节点类型定义如下 typedefStruetNode{intdata structNode*next}NODE; [C语言函数]voidsortNODE*head{ NODE*ptr*preptr*endptr;inttempdata; ptr=head->next;while 1/*查找表尾节点*/ ptr=ptr->next;endptr=ptr; /*令endptr指向表尾节点*/ptr=2; whileptr!=endptr{ while3 { ifptr->data>ptr->next->data {tempdata=ptr->data; /*交换相邻节点的数据*/ ptr->data=ptr->next->data; ptr->next->data=tempdata; }preptr=4 ptr=ptr->next;} endptr=5;ptr=head->next; }}
试题二阅读以下说明和C程序回答问题 [说明]下面的程序用Dole Rob算法生成N阶N为奇数魔方阵各行列对角线数字之和相等该算法的过程为从1开始按如下方法依次插入各自然数直到N2为止 ①在第一行的正中插入1 ②新位置应当处于最近插入位置的右上方若该位置已超出方阵的上边界则新位置取应选列的最下一个位置若超出右边界则新位置取应选行的最左一个位置 ③若最近插入的元素是N的整数倍则选同列的下一行位置为新位置例如3阶魔方阵如下所示 8163574 92[C程序] #include<stdio.h>#include<stdlib.h> #defineSIZE50main {introwcolnvalue; inta[SIZE+1][SIZE+1];/*不使用下标为0的元素*/ printf请输入要输出魔方阵的阶数n奇数<%d:n=SIZE; scanf%d&n;if!n%2||n<1|| 1{printf输入数据有误!/n; exit0;} row=1;col=n+1/2;value=1;whilevalue<=2 {a[row][col]=value; /*计算下一位置*/ifvalue%n!=0{ row--;3; ifrow<1row=n;ifcol>n4 ;}elserow++; value=5; }printf/n%d阶魔方阵如下所示/n/nn; forrow=1;row<=n;row++{forcol=1;col<=n; col++printf%5da[row][col]; printf/n;} }
试题一阅读以下说明和C语言函数回答问题 [说明] 函数sortNODE*head的功能是用冒泡排序法对单链表中的元素进行非递减排序对于两个相邻节点中的元素若较小的元素在后面则交换这两个节点中的元素值其中head指向链表的头节点排序时为了避免每趟都扫描到链表的尾节点设置一个指针endptr使其指向下趟扫描需要到达的最后一个节点例如对于图8-25a所示的链表进行一趟冒泡排序后得到图8-25b所示的链表 链表的节点类型定义如下 typedefStruetNode{intdata structNode*next}NODE; [C语言函数]voidsortNODE*head{ NODE*ptr*preptr*endptr;inttempdata; ptr=head->next;while 1/*查找表尾节点*/ ptr=ptr->next;endptr=ptr; /*令endptr指向表尾节点*/ptr=2; whileptr!=endptr{ while3 { ifptr->data>ptr->next->data {tempdata=ptr->data; /*交换相邻节点的数据*/ ptr->data=ptr->next->data; ptr->next->data=tempdata; }preptr=4 ptr=ptr->next;} endptr=5;ptr=head->next; }}
试题二阅读以下说明和C程序回答问题 [说明]下面的程序用Dole Rob算法生成N阶N为奇数魔方阵各行列对角线数字之和相等该算法的过程为从1开始按如下方法依次插入各自然数直到N2为止 ①在第一行的正中插入1 ②新位置应当处于最近插入位置的右上方若该位置已超出方阵的上边界则新位置取应选列的最下一个位置若超出右边界则新位置取应选行的最左一个位置 ③若最近插入的元素是N的整数倍则选同列的下一行位置为新位置例如3阶魔方阵如下所示 8163574 92[C程序] #include<stdio.h>#include<stdlib.h> #defineSIZE50main {introwcolnvalue; inta[SIZE+1][SIZE+1];/*不使用下标为0的元素*/ printf请输入要输出魔方阵的阶数n奇数<%d:n=SIZE; scanf%d&n;if!n%2||n<1|| 1{printf输入数据有误!/n; exit0;} row=1;col=n+1/2;value=1;whilevalue<=2 {a[row][col]=value; /*计算下一位置*/ifvalue%n!=0{ row--;3; ifrow<1row=n;ifcol>n4 ;}elserow++; value=5; }printf/n%d阶魔方阵如下所示/n/nn; forrow=1;row<=n;row++{forcol=1;col<=n; col++printf%5da[row][col]; printf/n;} }
栈的运算特点是后进先出元素abcd依次入栈则不能得到的出栈序列是______
某循环队列的容量为M队头指针指向队头元素队尾指针指向队尾元素之后如图8-18所示M=8则队列中的元素数目为______MOD表示整除取余运算
阅读以下说明和C程序将应填入n处的字句写在对应栏内 【说明】 并行计算中需要将N个作业分配给N个处理器同时去完成每个处理器都能承担这N个作业但耗时不同下面的程序用回溯法计算总耗时最小的一种作业分配方案在该方案中为每个处理器分配1个不同的作业 程序中N个作业从0开始依次编号N个处理器也从0开始依次编号主要的变量说明如下 c[i][j]将作业i分配给处理器j的耗时 job[i]值为0表示作业i未分配值为j表示作业i分配给处理器j processor[k]值为0表示处理器k未分配作业值为1表示处理器k已分配作业 mincost最小总耗时【C程序】 #include<stdio.h>#defineN8/*N表示作业数和处理器数*/ intc[N][N]unsignedint mincost=65535/*设置min的初始值大于可能的总耗时*/int job[N]temp[N]processor[N]voidAssignintkunsignedint cost{inti if1&&cost<mincost{ mincost=cost fori=0i<Ni++temp[i]=job[i] }else{ fori=0i<Ni++/*分配作业k*/ if2&& cost+c[k][i]<mincost{ processor[i]=1job[k]=3 Assign4cost+c[k][i] 5job[k]=0 }/*if*/ }}/*Assign*/ voidmain{int ij fori=0i<Ni++{/*设置每个作业由不同处理器承担时耗时及全局数组的初值*/ processor[i]=0job[i]=0temp[i]=0 forj=0j<Nj++ scanf%d&c[i][j]} Assign00/*从作业0开始分配*/ printf/n最小耗时=%d/nmincost fori=0i<Ni++printfJob%disassigned toProcessor%d/nitemp[i]}/*main*/
对于长度为11的顺序存储的有序表若采用折半查找向下取整则找到第5个元素需要与表中的______个元素进行比较操作包括与第5个元素的比较
热门题库
更多
初级程序员
中级软件设计师
初级网络管理员
初级信息处理技术员
中级数据库系统工程师
中级多媒体应用设计师
高级系统分析师
高级网络规划设计师
高级系统架构师
中级信息系统监理师
初级通信工程师
中级通信工程师
通信新技术、新业务知识
无线通信专业技术
移动通信专业技术
有线传输专业技术