首页
试卷库
试题库
当前位置:
X题卡
>
所有题目
>
题目详情
【说明】 求解约瑟夫环问题。算法分析:n个士兵围成一圈,给他们依次编号,班长指定从第w个士兵开始报数,报到第s个士兵出列,依次重复下去,直至所有士兵都出列。 【流程图】 ...
查看本题答案
包含此试题的试卷
初级程序员《填空》真题及答案
点击查看
你可能感兴趣的试题
十几个小朋友围成一圈按顺时针方向一圈一圈地循环报数如果报1和报100的是同一人那么共有多少个小朋友
10
11
13
15
二十几个小朋友围成一圈按顺时针方向一圈一圈来连续报数如果报2和200的是同一个人那么共有多少个小朋友
22
24
27
28
二十几个小朋友围成一圈按顺时针方向一圈一圈地连续报数如果报2和200的是同一个人那么共有个小朋友
22
24
27
28
二十几个小朋友围成一圈按顺时针方向一圈一圈地从1开始连续报数如果报2和报200的是同一个人那么共有多
26
25
24
22
二十几个小朋友围成一圈按顺时针方向一圈一圈连续报数如果报2和200的是同一个人那么共有多少个小朋友
22
24
27
28
二十几个小朋友围成一圈按顺时针方向一圈一圈地连续报数如果报2和200的是同一个人那么共有 个小朋
22
24
27
28
【说明】求解约瑟夫环问题算法分析n个士兵围成一圈给他们依次编号班长指定从第w个士兵开始报数报到第s个
【说明】 求解约瑟夫环问题算法分析n个士兵围成一圈给他们依次编号班长指定从第w个士兵开始报数报到第
热门试题
更多
阅读以下应用说明及VisualBasic程序代码将应填入n处的字句写在对应栏内 【应用说明9】本应用程序的运行窗口如图4.2所示 窗口中的3个文本框和两个按钮名称分别为Txt-salaryTxt_baseTxt_taxCmd_compute和 Cmd_quit运行时文本框Txt_base中存放的是免税金额基数应扣除的基本费用当用户在文本框Txt_salary中输入月收入工资或薪金并单击计算按钮Cmd_compute后Txt_tax框中就显示计算所得的应纳税额文本框Txt_base和Txt_tax在运行时不接受用户输入Txt_base的内容以灰色显示 个人工资或薪金所得税是按照超额累进的税率来征收的方法是以每月收入总额减去免税金额基数后的余额作为该月的月应纳税所得额再将应纳税所得额按相应级数采用相应的税率进行累进计算目前的免税金额基数为800元税率如表4.2所示 表4.2 级数 月应纳税所得额 适用税率/% 1 不超过500元的部分 5 2 501元~2000元的部分 10 3 2001元~5000元的部分 15 4 5001元~20000元的部分 20 5 20001元~40000元的部分 25 6 40001元~60000元的部分 30 7 60001元~80000元的部分 35 8 80001元~100000元的部分 40 9 超过100000元的部分 45设一个人的月应纳税所得额为K元用下面的公式计算其应缴纳的个人所得税额S元若0<K≤500则S=K×5%若500<K≤2000则S=500×5%+K-500×10%若2000<K≤5000则S=500×5%+1500×10%+K-2000×15%若5000<K≤20 000则S=500×5%+1500×10%+3000×15%+K-5900×20%例如某人某月工资总额为5200元减去800元后应纳税所得额为4400元其应缴纳的个人所得税额为500*5%+1500*10%+2400*15%=535元在开发过程中需要编写的程序代码如下【程序代码9】Option Base0PrivateSubCmd_compute_ClickDim payleveltaxPratepaylevel= Array050020005000200004000060000800001000001000001taxPrate= Array51015202530354045K= ValTxt_salary.Text-ValTxt_base.TextS=0If1 ThenForj=1To9If2 ThenS= S+paylevelj-paylevelj-1*taxPratej-1/100ElseS=S+K-paylevelj-1* 3ExitForEndIfNext jEntIfTxt_tax.Text=4End SubPrivateSubCmd_quit_ClickEndEndSubPrivateSub Form_LoadTxt_tax.Text=Txt_salary.Text= Txt_base.Text=800Txt_tax.Locked=TrueTxt_base.Enabled= 5EndSub
阅读下列程序说明和C代码把应填入其中n处的字句写在答卷的对应栏内 【说明】 程序利用选择排序算法对数组a中的N个整数按照从小到大的顺序排列并将排序结果显示出来【程序】 #defineN10main{ void1int ia[N]fori=0i<10i++/*输入*/ scanf%d&a[i]2 fori=0i<Ni++ /*输出*/printf%3da[i] }voidselectSonintx[]intn {intijkt forinti=03i++ {k=i forj=i+1j<nj++ if4k=j if5 {t=x[i]x[i]=x[k]x[k]=t}} }
阅读下列程序说明和C代码把应填入其中n处的字句写在答卷的对应栏内 【说明】 程序利用选择排序算法对数组a中的N个整数按照从小到大的顺序排列并将排序结果显示出来【程序】 #defineN10main{ void1int ia[N]fori=0i<10i++/*输入*/ scanf%d&a[i]2 fori=0i<Ni++ /*输出*/printf%3da[i] }voidselectSonintx[]intn {intijkt forinti=03i++ {k=i forj=i+1j<nj++ if4k=j if5 {t=x[i]x[i]=x[k]x[k]=t}} }
阅读下列程序说明和C程序把应填入其中n处的字句写在对应栏内 【程序说明】 对角线下元素全为0的矩阵称为上三角矩阵设对于一个n×n的上三角矩阵a为节约存贮只将它的上三角元素按行主序连续存放在数组b中下面的函数trans在不引入工作数组的情况下实现将a改为按列主序连续存放在数组b中 设n=5 b=123456789101112131415 经调用trans函数后b变为 b=126371048111359121415 函数tans对数组元素的存贮位置作调整调整过程中存在若干个循环传送链 bi1→bi2→bij→bi11≤j<n 例如考察调整后的数组元素b2值为6与该元素相关的位置调整将形成下面的循环传送链 b2→b3→b6→→b12→b9→b5→b2 关键是确定循环传送链的下标i1i2ij以及在考察调整后的元素bkk34时能判定bk是已被传送过的某传送链上的元素 函数ctrkn计算调整后的数组b的第k个元素bk在原数组b中的位置该位置作为函数ctrkn的返回值函数ctr根据k确定它在矩阵中的行号i和列号j注意行号和列号均从 0算起然后按矩阵存放原则计算出它在b中的位置【程序】 transbnintnb[]{ intmkrccrrintw m=n+1*n/2-4k=2 whilem>0{ r=ctrkn ifr==km-- else { cc=krr=rwhile 1 { cc=rrrr=ctrccn }if 2 { cc=krr=rw=b[k] while3 { b[cc]=b[rr]m-- cc=rrrr=ctfccn } b[cc]-w4 } }k++ }}ctrkn intkn{intij i=kj=0while5 i-=++j returni*n+j-i*i+1/2}
阅读下列程序说明和C代码把应填入其中n处的字句写在对应栏内 【说明】 下面的程序能够计算不同图形的面积程序中把每个图形的数据定义成结构类型利用共同体类型描述2种图形的数据程序根据输入参数代表的图形类型求出图形的面积并输出 【程序】structCircle{ floatxy/*圆心位置*/ floatr/*圆半径*/}struct Rectangle{floatwidth /*矩形宽*/floatlength /*矩形长*/}unionshape {structCirclecircle/*圆数据结构*/ structRectanglerectangle/*矩形数据结构*/ }main{ unionshapeafloatarea intiprintfinputnumber 1circle2rectangle3end/n scanf%d&iwhile1 /*循环接收输入并计算输出*/ {switchi {case 1printfinputradius/n scanf%f2/*共同体类型变量接收输入*/ area=3.1415926*3 printftheareaofcircle=%f/narea break case2printfinputwidthandlength:/n seanf%f%f4 /*共同体类型变量接收输入*/ area=5 printftheareaofrectangle=%f/narea break }printfinput number1circle2rectangle3end/n scanf%d&i} }
阅读下列程序说明和C代码把应填入其中n处的字句写在答卷的对应栏内 1说明】函数create能够建立具有任意行和任意列的动态二维整数数组 【函数4.1程序】#includestdio.hint* *createintrowintcol{ int**xix=int **1for 2x[i]=int*malloccol* sizeofint3 }【函数4.2说明】 函数main能够判断输入年是否为闰年【函数4.2程序】 main{intyearnscanfinputyear %d&yearn=4||5 ifn==1printf%disaleap year/nyearelseprintf%disnotaleap year/nyear}
阅读以下说明和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处的字句写在对应栏内 【说明】 在一图像处理系统中开发者定义了一个图像结构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}
【函数1.2说明】函数mergeinta[]intnintb[]intmint *c是将两个从小到大有序数组a和b复制合并出一个有序整数序列c其中形参n和m分别是数组a和b的元素个数 【函数1.2】voidmergeinta[]intnintb[]int mint*c{intijfori=j0i<n &&j<m*c++=a[i]<b[j] a[i++]b[j++]whilei<n2 whilej<m3}
阅读下列程序说明和C代码把应填入其中n处的字句写在答卷的对应栏内 1说明】函数create能够建立具有任意行和任意列的动态二维整数数组 【函数4.1程序】#includestdio.hint* *createintrowintcol{ int**xix=int **1for 2x[i]=int*malloccol* sizeofint3 }【函数4.2说明】 函数main能够判断输入年是否为闰年【函数4.2程序】 main{intyearnscanfinputyear %d&yearn=4||5 ifn==1printf%disaleap year/nyearelseprintf%disnotaleap year/nyear}
阅读下列程序说明和C程序把应填入其中n处的字句写在对应栏内 【程序说明】 对角线下元素全为0的矩阵称为上三角矩阵设对于一个n×n的上三角矩阵a为节约存贮只将它的上三角元素按行主序连续存放在数组b中下面的函数trans在不引入工作数组的情况下实现将a改为按列主序连续存放在数组b中 设n=5 b=123456789101112131415 经调用trans函数后b变为 b=126371048111359121415 函数tans对数组元素的存贮位置作调整调整过程中存在若干个循环传送链 bi1→bi2→bij→bi11≤j<n 例如考察调整后的数组元素b2值为6与该元素相关的位置调整将形成下面的循环传送链 b2→b3→b6→→b12→b9→b5→b2 关键是确定循环传送链的下标i1i2ij以及在考察调整后的元素bkk34时能判定bk是已被传送过的某传送链上的元素 函数ctrkn计算调整后的数组b的第k个元素bk在原数组b中的位置该位置作为函数ctrkn的返回值函数ctr根据k确定它在矩阵中的行号i和列号j注意行号和列号均从 0算起然后按矩阵存放原则计算出它在b中的位置【程序】 transbnintnb[]{ intmkrccrrintw m=n+1*n/2-4k=2 whilem>0{ r=ctrkn ifr==km-- else { cc=krr=rwhile 1 { cc=rrrr=ctrccn }if 2 { cc=krr=rw=b[k] while3 { b[cc]=b[rr]m-- cc=rrrr=ctfccn } b[cc]-w4 } }k++ }}ctrkn intkn{intij i=kj=0while5 i-=++j returni*n+j-i*i+1/2}
阅读下列程序说明和C代码把应填入其中n处的字句写在对应栏内 【说明】 下面的程序能够计算不同图形的面积程序中把每个图形的数据定义成结构类型利用共同体类型描述2种图形的数据程序根据输入参数代表的图形类型求出图形的面积并输出 【程序】structCircle{ floatxy/*圆心位置*/ floatr/*圆半径*/}struct Rectangle{floatwidth /*矩形宽*/floatlength /*矩形长*/}unionshape {structCirclecircle/*圆数据结构*/ structRectanglerectangle/*矩形数据结构*/ }main{ unionshapeafloatarea intiprintfinputnumber 1circle2rectangle3end/n scanf%d&iwhile1 /*循环接收输入并计算输出*/ {switchi {case 1printfinputradius/n scanf%f2/*共同体类型变量接收输入*/ area=3.1415926*3 printftheareaofcircle=%f/narea break case2printfinputwidthandlength:/n seanf%f%f4 /*共同体类型变量接收输入*/ area=5 printftheareaofrectangle=%f/narea break }printfinput number1circle2rectangle3end/n scanf%d&i} }
阅读下列程序说明和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}
阅读以下程序说明和C程序将应填入n处的字句写在对应栏内 【程序说明】 某网络由n个端点组成这些端点被物理地分成若干个分离的端点组同一组内的两件端点i和j它们或直接相连或间接相连端点i和端点j间接相连是指在这两件端点之间有一个端点相连序列其中端点i和j分别与这相连序列中的某个端点直接相连网络的n个端点被统一编号为01n-1本程序输入所有直接相连的端点号对分别求出系统各分离端点组中的端点号并输出 程序根据输入的直接相连的两件端点号建立n个链表其中第i个链表的首指针为s[i]其结点是与端点i直接相连的所有端点号 程序依次处理各链表在处理s[i]链表中用top工作链表重新构造s[i]链表使s[i]链表对应系统中的一个端点组其中结点按端点号从小到大连接 【程序】#inelude#defineN100 typeefstructnode{intdata structnode*link}NODE NODE*s[N]intijntNODE *q*p*x*y*topmain{ printfEnternamberofcomponents. scanf%d&nfori=0i<ni++ printfEnterpairs./n whilescanf%d%d&i&j==2{ /*输入相连端点对生成相连端点结点链表*/ p=NODE*mallocsizeofNODE p→data=jp→link=s[i]s[i]=p p=NODE*mallocsizeofNODE p→data=ip→link=s[j]s[j]=p} fori=0i<ni++/*顺序处理各链表*/ fortop=s[i]1top!=NULL {/*将第i链表移入top工作链表并顺序处理工作链表的各结点*/ q=top 2 ifs¨[j=q→data]!=NULL{ /将j链表也移入工作链表*/ forp=s[j]p→link!=NULLp=p→link p→link=toptop=s[j] 3 } /*在重新生成的第i链表中寻找当前结点的插入点*/ fory=s[i]4x=yy=y→link ify!=NULL&&y→data==q→data freeq/*因重新生成的第i链表已有当前结点当前结点删除*/ else{ 5 ify==s[i]s[i]=q elsex→link=q }} fori=0i<ni++ {/*输出结果*/ ifs[i]==NULLcontinue forp=s[i]p!=NULL{ printf/t%dp→data q=p→linkfreepp=q }printf/n }}
阅读以下应用说明及VisualBasic程序代码将应填入n处的字句写在对应栏内 【应用说明9】本应用程序的运行窗口如图4.2所示 窗口中的3个文本框和两个按钮名称分别为Txt-salaryTxt_baseTxt_taxCmd_compute和 Cmd_quit运行时文本框Txt_base中存放的是免税金额基数应扣除的基本费用当用户在文本框Txt_salary中输入月收入工资或薪金并单击计算按钮Cmd_compute后Txt_tax框中就显示计算所得的应纳税额文本框Txt_base和Txt_tax在运行时不接受用户输入Txt_base的内容以灰色显示 个人工资或薪金所得税是按照超额累进的税率来征收的方法是以每月收入总额减去免税金额基数后的余额作为该月的月应纳税所得额再将应纳税所得额按相应级数采用相应的税率进行累进计算目前的免税金额基数为800元税率如表4.2所示 表4.2 级数 月应纳税所得额 适用税率/% 1 不超过500元的部分 5 2 501元~2000元的部分 10 3 2001元~5000元的部分 15 4 5001元~20000元的部分 20 5 20001元~40000元的部分 25 6 40001元~60000元的部分 30 7 60001元~80000元的部分 35 8 80001元~100000元的部分 40 9 超过100000元的部分 45设一个人的月应纳税所得额为K元用下面的公式计算其应缴纳的个人所得税额S元若0<K≤500则S=K×5%若500<K≤2000则S=500×5%+K-500×10%若2000<K≤5000则S=500×5%+1500×10%+K-2000×15%若5000<K≤20 000则S=500×5%+1500×10%+3000×15%+K-5900×20%例如某人某月工资总额为5200元减去800元后应纳税所得额为4400元其应缴纳的个人所得税额为500*5%+1500*10%+2400*15%=535元在开发过程中需要编写的程序代码如下【程序代码9】Option Base0PrivateSubCmd_compute_ClickDim payleveltaxPratepaylevel= Array050020005000200004000060000800001000001000001taxPrate= Array51015202530354045K= ValTxt_salary.Text-ValTxt_base.TextS=0If1 ThenForj=1To9If2 ThenS= S+paylevelj-paylevelj-1*taxPratej-1/100ElseS=S+K-paylevelj-1* 3ExitForEndIfNext jEntIfTxt_tax.Text=4End SubPrivateSubCmd_quit_ClickEndEndSubPrivateSub Form_LoadTxt_tax.Text=Txt_salary.Text= Txt_base.Text=800Txt_tax.Locked=TrueTxt_base.Enabled= 5EndSub
阅读以下应用说明及VisualBasic程序代码将应填入n处的字句写在对应栏内 【应用说明9】本应用程序的运行窗口如图4.2所示 窗口中的3个文本框和两个按钮名称分别为Txt-salaryTxt_baseTxt_taxCmd_compute和 Cmd_quit运行时文本框Txt_base中存放的是免税金额基数应扣除的基本费用当用户在文本框Txt_salary中输入月收入工资或薪金并单击计算按钮Cmd_compute后Txt_tax框中就显示计算所得的应纳税额文本框Txt_base和Txt_tax在运行时不接受用户输入Txt_base的内容以灰色显示 个人工资或薪金所得税是按照超额累进的税率来征收的方法是以每月收入总额减去免税金额基数后的余额作为该月的月应纳税所得额再将应纳税所得额按相应级数采用相应的税率进行累进计算目前的免税金额基数为800元税率如表4.2所示 表4.2 级数 月应纳税所得额 适用税率/% 1 不超过500元的部分 5 2 501元~2000元的部分 10 3 2001元~5000元的部分 15 4 5001元~20000元的部分 20 5 20001元~40000元的部分 25 6 40001元~60000元的部分 30 7 60001元~80000元的部分 35 8 80001元~100000元的部分 40 9 超过100000元的部分 45设一个人的月应纳税所得额为K元用下面的公式计算其应缴纳的个人所得税额S元若0<K≤500则S=K×5%若500<K≤2000则S=500×5%+K-500×10%若2000<K≤5000则S=500×5%+1500×10%+K-2000×15%若5000<K≤20 000则S=500×5%+1500×10%+3000×15%+K-5900×20%例如某人某月工资总额为5200元减去800元后应纳税所得额为4400元其应缴纳的个人所得税额为500*5%+1500*10%+2400*15%=535元在开发过程中需要编写的程序代码如下【程序代码9】Option Base0PrivateSubCmd_compute_ClickDim payleveltaxPratepaylevel= Array050020005000200004000060000800001000001000001taxPrate= Array51015202530354045K= ValTxt_salary.Text-ValTxt_base.TextS=0If1 ThenForj=1To9If2 ThenS= S+paylevelj-paylevelj-1*taxPratej-1/100ElseS=S+K-paylevelj-1* 3ExitForEndIfNext jEntIfTxt_tax.Text=4End SubPrivateSubCmd_quit_ClickEndEndSubPrivateSub Form_LoadTxt_tax.Text=Txt_salary.Text= Txt_base.Text=800Txt_tax.Locked=TrueTxt_base.Enabled= 5EndSub
阅读以下说明和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*/
阅读下列函数说明和C代码把应填入其中n处的字句写在答卷的对应栏内 【函数2说明】 本题中的函数encode和decode分别实现对字符串的变换和复原变换函数encode顺序考察已知字符串的字符按以下规则逐组生成新字符串 1.若已知字符串的当前字符不是数字字符则复制该字符于新字符串中 2.若已知字符串的当前字符是一个数字字符且它之后没有后继字符则简单地将它自己复制到新字符串中 3.若已知字符串的当前字符是一个数字字符并且还有后继字符设该数字字符的面值为n则将它的后续字符包括后续字符是一个数字字符重复复制n+1次到新字符串中 4.以上述一次变换为一组在不同组之间另插入一个下划线字符-用于分隔例如encode函数对字符串26a3t2的变换结果为666_a_tttt_2 复原函数decode做变换函数encode的相反的工作即复制不连续相同的单个字符而将一组连续相同的字符不超过10个变换成一个用于表示重复次数的数字字符和一个重复出现的字符并在复原过程中掠过变换函数为不同组之间添加的一个下划线字符 假定调用变换函数encode时的已知字符串中不包含下划线字符【函数2】 intencodechar*instrchar*outstr{ char*ip*opcintknip=instrop=outstr while*ip{if1 &&*ip+1{n=*ip-’0’+1 c=*++ipfork=0k<=nk++2 }else3 *op++=’-’ip++} ifop>outstr4*op=’/0’ returnop-outstr}intdecodechar* instrchar*outstr{char*ip*opcintn ip=instrop=outstrwhile*ip{c= *ipn=0while*ip==c&&n<=10{ip++n++} if5*op++=’0’+n-1*op++=c if*ip==’_’6}* op=’/0’returnop-outstr}
阅读下列函数说明和C代码把应填入其中n处的字句写在答卷的对应栏内 【函数2说明】 本题中的函数encode和decode分别实现对字符串的变换和复原变换函数encode顺序考察已知字符串的字符按以下规则逐组生成新字符串 1.若已知字符串的当前字符不是数字字符则复制该字符于新字符串中 2.若已知字符串的当前字符是一个数字字符且它之后没有后继字符则简单地将它自己复制到新字符串中 3.若已知字符串的当前字符是一个数字字符并且还有后继字符设该数字字符的面值为n则将它的后续字符包括后续字符是一个数字字符重复复制n+1次到新字符串中 4.以上述一次变换为一组在不同组之间另插入一个下划线字符-用于分隔例如encode函数对字符串26a3t2的变换结果为666_a_tttt_2 复原函数decode做变换函数encode的相反的工作即复制不连续相同的单个字符而将一组连续相同的字符不超过10个变换成一个用于表示重复次数的数字字符和一个重复出现的字符并在复原过程中掠过变换函数为不同组之间添加的一个下划线字符 假定调用变换函数encode时的已知字符串中不包含下划线字符【函数2】 intencodechar*instrchar*outstr{ char*ip*opcintknip=instrop=outstr while*ip{if1 &&*ip+1{n=*ip-’0’+1 c=*++ipfork=0k<=nk++2 }else3 *op++=’-’ip++} ifop>outstr4*op=’/0’ returnop-outstr}intdecodechar* instrchar*outstr{char*ip*opcintn ip=instrop=outstrwhile*ip{c= *ipn=0while*ip==c&&n<=10{ip++n++} if5*op++=’0’+n-1*op++=c if*ip==’_’6}* op=’/0’returnop-outstr}
【函数1.2说明】函数mergeinta[]intnintb[]intmint *c是将两个从小到大有序数组a和b复制合并出一个有序整数序列c其中形参n和m分别是数组a和b的元素个数 【函数1.2】voidmergeinta[]intnintb[]int mint*c{intijfori=j0i<n &&j<m*c++=a[i]<b[j] a[i++]b[j++]whilei<n2 whilej<m3}
阅读下列程序说明和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}
阅读下列程序说明和C代码把应填入其中n处的字句写在对应栏内 【说明】 下面的程序能够计算不同图形的面积程序中把每个图形的数据定义成结构类型利用共同体类型描述2种图形的数据程序根据输入参数代表的图形类型求出图形的面积并输出 【程序】structCircle{ floatxy/*圆心位置*/ floatr/*圆半径*/}struct Rectangle{floatwidth /*矩形宽*/floatlength /*矩形长*/}unionshape {structCirclecircle/*圆数据结构*/ structRectanglerectangle/*矩形数据结构*/ }main{ unionshapeafloatarea intiprintfinputnumber 1circle2rectangle3end/n scanf%d&iwhile1 /*循环接收输入并计算输出*/ {switchi {case 1printfinputradius/n scanf%f2/*共同体类型变量接收输入*/ area=3.1415926*3 printftheareaofcircle=%f/narea break case2printfinputwidthandlength:/n seanf%f%f4 /*共同体类型变量接收输入*/ area=5 printftheareaofrectangle=%f/narea break }printfinput number1circle2rectangle3end/n scanf%d&i} }
阅读下列函数说明和C代码把应填入其中n处的字句写在答卷的对应栏内 【函数2说明】 本题中的函数encode和decode分别实现对字符串的变换和复原变换函数encode顺序考察已知字符串的字符按以下规则逐组生成新字符串 1.若已知字符串的当前字符不是数字字符则复制该字符于新字符串中 2.若已知字符串的当前字符是一个数字字符且它之后没有后继字符则简单地将它自己复制到新字符串中 3.若已知字符串的当前字符是一个数字字符并且还有后继字符设该数字字符的面值为n则将它的后续字符包括后续字符是一个数字字符重复复制n+1次到新字符串中 4.以上述一次变换为一组在不同组之间另插入一个下划线字符-用于分隔例如encode函数对字符串26a3t2的变换结果为666_a_tttt_2 复原函数decode做变换函数encode的相反的工作即复制不连续相同的单个字符而将一组连续相同的字符不超过10个变换成一个用于表示重复次数的数字字符和一个重复出现的字符并在复原过程中掠过变换函数为不同组之间添加的一个下划线字符 假定调用变换函数encode时的已知字符串中不包含下划线字符【函数2】 intencodechar*instrchar*outstr{ char*ip*opcintknip=instrop=outstr while*ip{if1 &&*ip+1{n=*ip-’0’+1 c=*++ipfork=0k<=nk++2 }else3 *op++=’-’ip++} ifop>outstr4*op=’/0’ returnop-outstr}intdecodechar* instrchar*outstr{char*ip*opcintn ip=instrop=outstrwhile*ip{c= *ipn=0while*ip==c&&n<=10{ip++n++} if5*op++=’0’+n-1*op++=c if*ip==’_’6}* op=’/0’returnop-outstr}
阅读以下程序说明和C程序将应填入n处的字句写在对应栏内 【程序说明】 某网络由n个端点组成这些端点被物理地分成若干个分离的端点组同一组内的两件端点i和j它们或直接相连或间接相连端点i和端点j间接相连是指在这两件端点之间有一个端点相连序列其中端点i和j分别与这相连序列中的某个端点直接相连网络的n个端点被统一编号为01n-1本程序输入所有直接相连的端点号对分别求出系统各分离端点组中的端点号并输出 程序根据输入的直接相连的两件端点号建立n个链表其中第i个链表的首指针为s[i]其结点是与端点i直接相连的所有端点号 程序依次处理各链表在处理s[i]链表中用top工作链表重新构造s[i]链表使s[i]链表对应系统中的一个端点组其中结点按端点号从小到大连接 【程序】#inelude#defineN100 typeefstructnode{intdata structnode*link}NODE NODE*s[N]intijntNODE *q*p*x*y*topmain{ printfEnternamberofcomponents. scanf%d&nfori=0i<ni++ printfEnterpairs./n whilescanf%d%d&i&j==2{ /*输入相连端点对生成相连端点结点链表*/ p=NODE*mallocsizeofNODE p→data=jp→link=s[i]s[i]=p p=NODE*mallocsizeofNODE p→data=ip→link=s[j]s[j]=p} fori=0i<ni++/*顺序处理各链表*/ fortop=s[i]1top!=NULL {/*将第i链表移入top工作链表并顺序处理工作链表的各结点*/ q=top 2 ifs¨[j=q→data]!=NULL{ /将j链表也移入工作链表*/ forp=s[j]p→link!=NULLp=p→link p→link=toptop=s[j] 3 } /*在重新生成的第i链表中寻找当前结点的插入点*/ fory=s[i]4x=yy=y→link ify!=NULL&&y→data==q→data freeq/*因重新生成的第i链表已有当前结点当前结点删除*/ else{ 5 ify==s[i]s[i]=q elsex→link=q }} fori=0i<ni++ {/*输出结果*/ ifs[i]==NULLcontinue forp=s[i]p!=NULL{ printf/t%dp→data q=p→linkfreepp=q }printf/n }}
若二维数组P[1..50..8]的首地址为base数组元素按行存储且每个元素占用1个存储单元则元素P[33]在该数组空间的地址为______
阅读以下应用说明属性设置及VisualBssic程序代码将应填入n处在字句写在对应栏内 【应用说明7】 本应用程序的运行窗口显示一行字欢迎光临还有2个按钮一个显示闪烁一个显示停止只要用户单击闪烁按钮文字欢迎光临就会以0.5秒消失0.5秒显示反复进行闪烁单击停止按钮时闪烁停止恢复图示的初态在开发过程中需要设置的属性如表4.1所示 表4.1属性设置 对象 对象名 属性名 属性值 窗体 Frml Caption 闪烁显示演示 标签 Label Caption 欢迎光临 命令按钮 CmdF Caption 闪烁 命令按钮 CmdT Caption 停止 定时器 Timerl 1 false Interval 2 在开发过程中需要编写的程序代码如下【程序代码7】PtivateSubCmdF_ClickTimerlEnabled =3LabelVisible= FalseEndSubPtivateSubTimet1_TimerLabelVisible=not 4EndSubPtivateSubCmdT_ClickTimerlEnsbled =5LabelVisible=trueEndSub
阅读下列程序说明和C代码把应填入其中n处的字句写在答卷的对应栏内 【说明】 程序利用选择排序算法对数组a中的N个整数按照从小到大的顺序排列并将排序结果显示出来【程序】 #defineN10main{ void1int ia[N]fori=0i<10i++/*输入*/ scanf%d&a[i]2 fori=0i<Ni++ /*输出*/printf%3da[i] }voidselectSonintx[]intn {intijkt forinti=03i++ {k=i forj=i+1j<nj++ if4k=j if5 {t=x[i]x[i]=x[k]x[k]=t}} }
阅读以下程序说明和C程序将应填入n处的字句写在对应栏内 【程序说明】 某网络由n个端点组成这些端点被物理地分成若干个分离的端点组同一组内的两件端点i和j它们或直接相连或间接相连端点i和端点j间接相连是指在这两件端点之间有一个端点相连序列其中端点i和j分别与这相连序列中的某个端点直接相连网络的n个端点被统一编号为01n-1本程序输入所有直接相连的端点号对分别求出系统各分离端点组中的端点号并输出 程序根据输入的直接相连的两件端点号建立n个链表其中第i个链表的首指针为s[i]其结点是与端点i直接相连的所有端点号 程序依次处理各链表在处理s[i]链表中用top工作链表重新构造s[i]链表使s[i]链表对应系统中的一个端点组其中结点按端点号从小到大连接 【程序】#inelude#defineN100 typeefstructnode{intdata structnode*link}NODE NODE*s[N]intijntNODE *q*p*x*y*topmain{ printfEnternamberofcomponents. scanf%d&nfori=0i<ni++ printfEnterpairs./n whilescanf%d%d&i&j==2{ /*输入相连端点对生成相连端点结点链表*/ p=NODE*mallocsizeofNODE p→data=jp→link=s[i]s[i]=p p=NODE*mallocsizeofNODE p→data=ip→link=s[j]s[j]=p} fori=0i<ni++/*顺序处理各链表*/ fortop=s[i]1top!=NULL {/*将第i链表移入top工作链表并顺序处理工作链表的各结点*/ q=top 2 ifs¨[j=q→data]!=NULL{ /将j链表也移入工作链表*/ forp=s[j]p→link!=NULLp=p→link p→link=toptop=s[j] 3 } /*在重新生成的第i链表中寻找当前结点的插入点*/ fory=s[i]4x=yy=y→link ify!=NULL&&y→data==q→data freeq/*因重新生成的第i链表已有当前结点当前结点删除*/ else{ 5 ify==s[i]s[i]=q elsex→link=q }} fori=0i<ni++ {/*输出结果*/ ifs[i]==NULLcontinue forp=s[i]p!=NULL{ printf/t%dp→data q=p→linkfreepp=q }printf/n }}
阅读以下说明和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*/
阅读以下说明和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}
热门题库
更多
中级系统集成项目管理工程师
中级网络工程师
中级信息系统管理工程师
初级程序员
中级软件设计师
初级网络管理员
初级信息处理技术员
中级数据库系统工程师
中级多媒体应用设计师
高级系统分析师
高级网络规划设计师
高级系统架构师
中级信息系统监理师
初级通信工程师
中级通信工程师
通信新技术、新业务知识