计算机类
公务员类
工程类
语言类
金融会计类
计算机类
医学类
研究生类
专业技术资格
职业技能资格
学历类
党建思政类
计算机软件水平考试
全国计算机应用水平考试(NIT)
计算机软件水平考试
计算机等级考试(NCRE)
全国高校计算机等级考试CCT
行业认证
信息素养
程序员(初级)
信息系统项目管理师(高级)
系统分析师(高级)
系统架构设计师(高级)
网络规划设计师(高级)
系统规划与管理师(高级)
软件评测师(中级)
软件设计师(中级)
网络工程师(中级)
多媒体应用设计师(中级)
嵌入式系统设计师(中级)
电子商务设计师(中级)
系统集成项目管理工程师(中级)
信息系统监理师(中级)
信息安全工程师(中级)
数据库系统工程师(中级)
信息系统管理工程师(中级)
软件过程能力评估师(中级)
计算机辅助设计师(中级)
计算机硬件工程师(中级)
信息技术支持工程师(中级)
程序员(初级)
网络管理员(初级)
信息处理技术员(初级)
电子商务技术员(初级)
信息系统运行管理员(初级)
网页制作员(初级)
多媒体应用制作技术员(初级)
PMP项目管理员资格认证
程序员应用技术
程序员基础知识
程序员应用技术
问答题【说明】函数voidrcr(inta[],intn,intk)的功能是:将数组a中的元素s[0]~9[n-1]循环向右平移k个位置。为了达到总移动次数不超过n的要求,每个元素都必须只经过一次移动到达目标位置。在函数rcr中用如下算法实现:首先备份a[0]的值,然后计算应移动到a[0]的元素的下标p,并将a[P]的值移至a[0];接着计算应移动到a[p]的元素的下标q,并将a[q]的值移至a[p];依次类推,直到将a[0]的备份值移到正确位置。若此时移动到位的元素个数已经为n,则结束;否则,再备份a[1]的值,然后计算应移动到a[1]的元素的下标p,并将a[p]的值移至9[1];接着计算应移动到a[p]的元素的下标q,并将a[q]的值移至a[p];依次类推,直到将a[1]的备份值移到正确位置。若此时移动到位的元素个数已经为n,则结束;否则,从a[2]开始,重复上述过程,直至将所有的元素都移动到目标位置时为止。例如,数组a中的6个元素如图1(a)所示,循环向右平移两个位置后元素的排列情况如图1(b)所示。voidrcr(inta[],intn,intk){inti,j,t,temp,count;count=0;/*记录移动元素的次数*/k=k%n;if({{U}}(1){{/U}}){/*若k是n的倍数,则元素无须移动;否则,每个元素都要移动*/i=0while(count<n){j=i;t=i;temp=a[1];/*备份a[i]的值*//*移动相关元素,直到计算出a[i]应移动到的目标位置*/while((j={{U}}(2){{/U}})!=i){a[t]=a[j];t={{U}}(3){{/U}};count++;}{{U}}(4){{/U}}=temp;count++;{{U}}(5){{/U}};}}}
进入题库练习
问答题【说明】 魔方阵,又叫幻方,在我国古代称为“纵横图”。由1…N2共N2个自然数构成每行、每列及两对角线上各数之和都相等的N×N方阵,这样的方阵就叫做N阶魔方阵。顾名思义,奇阶魔方阵就是N为奇数的幻方。 奇数阶魔方阵的生成方法如下: (1)第一个位置在第一行正中。 (2)新位置应当处于最近一个插入位置右上方,但如果右上方位置已超出方阵上边界,则新位置取应选列的最下一个位置;如果超出右边界,则新位置取应选行的最左一个位置。 (3)若最近一个插入元素为N的整数倍,则选下面一行同列上的位置为新位置。本题要求输入一个数据n,然后打印由自然数1到n2的自然数构成的魔方阵(n为奇数)。例如,当n=3时,魔方阵为: 8 1 6 3 5 7 4 9 2 了解其生成方法后,就可以根据此方法来写出程序了。首先设置int变量i,j,m, n。其中i标记魔方阵的行;j标记魔方阵的列;n表示魔方阵的维数,通过输入得到;通过m递加得到插入的数据。数组a[MAX][MAX]用于存放魔方阵元素。这里预定义了 MAX的大小,没有采用动态分配,在此设置为15,即最大求得15×15阶魔方阵。 【程序】 #include <stdio.h> #define MAX 15 void main() int n; int m=1; int i,j; int a[MAX][MAX]; printf("Please input the rank of matrix:"); scanf("%d", i=0; (1) while( (2) ) a[i][j]=m; m++; i--; j++; if((m-1)%n==0 if(j>(n-1)) //超出上界 (4) if(j>(n-1)) (5) for(i=0;i<n;i++) //输出魔方阵 for(j=0;j<n;j++) if(a[i][j]/10==0) printf("%d ",a[i][j]); //对程序无影响,只是使输出的数每一列对齐 else printf("%d ",a[i][j]); if(j==(n-1)) printf("/n");
进入题库练习
问答题【说明】 设有n个人围坐一圈并按顺时针方向从1到n编号,从第s个人开始进行1到m的报数,报数到第m个人,则此人出圈,再从他的下一个人重新开始1到m的报数,如此进行下去,直到所有的人都出圈为止。 现要求按出圈次序,每10人一组,给出这n个人的顺序表。 设n=100,s=1,m=10。 (1)将1到n个人的序号存入一维数组p中; (2)若第i个人报数后出圈,则将p置于数组的倒数第i个位置上,而原来第i+1个至倒数第i个元素依次向前移动一个位置: (3)重复第(2)步,直至圈中只剩下p[1]为止。 #include<stdio.h> #define N 100 #define S 1 #define M 10 void main() { int p[100],n,s,m; m=M; n=N; s=S; int i,j,s1,w; s1=s; for(i=1;{{U}} (1) {{/U}};i++) (2)=i; for(i=n;i>=2;i--) { s1={{U}} (3) {{/U}}; if(s1==0)s1=i; w={{U}} (4) {{/U}}; for(j=s1;j<i;j++) p[j-1]=p[j]; p[i-1]={{U}} (5) {{/U}}; printf("%4d",p[i])} }
进入题库练习
问答题【说明】喜迎2008年北京奥运会!以下【C程序】能将一个给定汉字(例如,奥运会的“会”字)的点阵逆时针旋转90°,并输出旋转前后的点阵数据及字形。图1-15是汉字“会”字的16×16点阵字形,用数字0表示空白位置,用数字1表示非空白位置,“会”字的第1行即可表示成如下的{0,1}序列:0000000100000000如果把它看做一个字的16个位,“会”字的第1行可以用十六进制数0100来表示。同理,“会”字的第2行可以用十六进制数0240表示,第3行可以用十六进制数0420表示……依此类推,用16个双字节整型数即可存放一个汉字点阵字形。“会”字的点阵数据及字形如图1-15的左半部分所示。将一个汉字逆时针旋转90°,就是把该汉字点阵的最右列作为旋转后新点阵的第1行,次最右列作为旋转后新点阵的第2行……依此类推来形成一个旋转后的点阵字形。图1-15的右半部分就是将“会”字逆时针旋转90°后的点阵数据和字形(提示:读者可将书本顺时针旋转90°,以查看旋转90°后的点阵字形)。在【C程序】中,数组old存放着“会”字的16个双字节整型点阵数据。函数turnleft能将该点阵数据逆时针旋转90°,旋转后的点阵数据存放在数组new中。函数display能将旋转前后的点阵数据加以编辑,用字符“.”表示值为0的位,用字符“x”表示值为1的位,从而将旋转前后的点阵按行输出其十六进制的数据和字形,如图1-15所示。【C程序】#include<stdio.h>#defineEMPTY'.'#defineNONEMPTY'x'#defineLEFT0#defineRIGHT1main(){staticunsignedold[16]={0x0100,0x0240,0x0420,0x0810,0x1004,0x23c2,0x4001,0x8ff8,0x0100,0x0200,0x0400,0x0800,0xl000,0x2004,0x7ffe,0x0001};unsignednew[16];turnleft(old,new);display(old,new);}turnleft(old,new)unsignedold[],new[];{introw,k;for(row=0;row<16;row++)for({{U}}(1){{/U}};k<16;k++)new[row]|=((old[k]>>{{U}}(2){{/U}})}display(old,new)unsigned*old,*new;{charout[2][17],letter[2];introw,col;letter[O]=EMPTY;letter[1]=NONEMPTY;out[LEFT][16]=out[RIGHT][16]={{U}}(4){{/U}};for(row=0;row<16;row++,old++,new++){for(col=0;co1<16;++col){out[LEFT][col]=letter[({{U}}(5){{/U}})out[RIGHT][col]=letter[({{U}}(6){{/U}})}printf("/n%4x%s",*old,printf("%4x%s",*new,}}
进入题库练习
问答题试题二(15 分,每空3 分) 阅读以下函数说明和C 语言函数,将应填入 (n) 处的字句写在答题纸的对应栏内。 [函数2.1 说明] 函数int fun1(int m,int n)的功能是:计算并返回正整数m 和n 的最大公约数。 [函数2.1] int fun1(int m,int n) { while( (1) ) { if ( m > n ) m = m - n; else n = n - m; } (2) ; } [函数2.2 说明] 函数long fun2(char *str)的功能是:自左至右顺序取出非空字符串str 中的数字字符形成一个十进制整数(最多8 位)。 例如,若字符串str 的值为“f3g8d5.ji2e3p12fkp”,则函数返回值为3852312。 [函数2.2] long fun2(char *str) { int i = 0; long k = 0; char *p = str; while ( *p != '/0' ++i; } (5) ; } return k; }
进入题库练习
问答题[说明]设某单位Acess数据库中有一张员工信息表,其中记录了员工编号、姓名、性别等基本信息。下面的应用程序利用数据控件(Data)实现了对这张表中记录的增加、删除和修改操作。其运行界面如下:在开发过程中,数据控件Data1与员工数据表相连接,各文本框、“性别”组合列表框Combo1、“政治面貌”组合列表框Combo2都分别与数据表的相应字段绑定,界面上从左到右各操作按钮分别取名为CmdAdd、CmdDel、CmdUpdate和CmdExit。[VisualBasic代码]PrivateSubForm_Load()'加载窗体Combo1.(1)"男"Combo1.(1)"女"Combo2.(1)"党员"Combo2.(1)"团员"Combo2.(1)"群众"EndSubPrivateSubCmdAdd_Cliek()'增加记录Datal.Recordset.AddNewEndSubPrivateSubCmdDel_Click()'删除记录Datal.Recordset.(2)Datal.Recordset.MoveNextEndSubPrivateSubCmdUpdate_Click()'修改记录IfDatal.ReadOnly=(3)AndDatal.Recordset.UpdatableThenDatal.Recordset.EditDatal.Recordset.(4)ElseMsgBox"数据表不允许修改!"EndIfEndSubPrivateSubCmdExit_Click()'退出程序DimretAsLongret:MsgBox("真的要退出吗?",vbQuestion+vbYesNo,"退出")If(5)ThenDatal.Reeordset.CloseEndEndffEndSub
进入题库练习
问答题[说明]设有一张学生成绩表scores存放在Access数据库Student中,其中包括学生编号、姓名以及各科目考试成绩。下面的应用程序利用ADOData和DataGrid控件实现了对成绩数据的基本管理,其操作包括:(1)添加新记录:单击“添加”按钮,光标将指向最后一条数据记录,在其后编辑好新的数据记录后,再单击“更新”按钮,该数据即被加入成绩表;(2)删除记录:单击“删除”按钮将删除当前所指记录,其后的数据记录依次上移;(3)更新记录:直接编辑某条已有记录,再单击“更新”按钮将更新成绩表;(4)记录排序:选中单列字段后,单击“排序”按钮,记录集将按该字段升序排列。程序的运行界面为:在开发过程中,数据库连接对象使用了名为Adodc1的ADOData控件,数据显示区域使用了名DataGnd1的DataGrid控件,界面上从左到右各操作按钮分别取名为CmdAdd、CmdDel、CmdUpdate、CmdRefresh、CmdSort和CmdExit。[VisualBasic代码]Dimconn,database,tableAsStringPrivateSubForm_Load()database="E:/Student.mdb"’设置要访问的数据库conn="Provider=Microsoft.Jet.OLEDB.4.0;DataSouse="&databaseAdodc1.ConnectionString=conn’设置连接字符串table="scores"Adode1.(1)=table’设置所要访问的数据表SetDataGrid1.(2)=Adodc1EndSubPrivateSubCmdAdd_Click()’“添加”按钮的单击事件响应过程Adodc1.Recordset.(3)EndSubPrivateSubCmdDel_Click()’“删除”按钮的单击事件响应过程Adodc1.Recordset.DeleteAdodc1.Reeordset.MoveNextEndSubPrivateSubCmdUpdate_Click()’“更新”按钮的单击事件响应过程Adode1.Reeordset.UpdateBatchadAffectAllEndSubPrivateSubCmdRefresh_Cliek()’“刷新”按钮的单击事件响应过程Adodc1.RefreshEndSubPrivateSubCmdSort_Cliek()’“排序”按钮的单击事件响应过程IfDataGrid1.SelStartCol<0OrDataGridl.SelStartCol(4)DataGrid1.SelEndColThenMsgBox“请选择某一字段(列)!”ExitSubEndIfAdodc1.RecordSource="SELECT*FROM"&table&"orderby"&_DataGrid1.Columns((5)).DataFieldAdodc1.RefreshEndSubPrivateSubCmdExit_Click()’“退出”按钮的单击事件响应过程EndEndSub
进入题库练习
问答题[说明] 邻接表是图的一种顺序存储与链式存储结合的存储方法。其思想是:对于图G中的每个顶点 vi,将所有邻接于vi的顶点vj连成一个单链表,这个单链表就称为顶点vi的邻接表,其中表头称作顶点表结点VertexNode,其余结点称作边表结点EdgeNode。将所有的顶点表结点放到数组中,就构成了图的邻接表AdjList。邻接表表示的形式描述如下: #define MaxVerNum 100 /*最大顶点数为100*/ typedef struct node{ /*边表结点*/ int adjvex; /*邻接点域*/ struct node *next; /*指向下一个边表结点的指针域*/ }EdgeNode; typedef struct vnode{ /*顶点表结点*/ int vertex; /*顶点域*/ EdgeNode *firstedge; /*边表头指针*/ }VertexNode; typedef VertexNode AdjList[MaxVerNum]; /*AdjList是邻接表类型*/ typedef struct{ AdjList adjlist; /*邻接表*/ int n; /*顶点数*/ }ALGraph; /*ALGraph是以邻接表方式存储的图类型*/ 深度优先搜索遍历类似于树的先根遍历,是树的先根遍历的推广。 下面的函数利用递归算法,对以邻接表形式存储的图进行深度优先搜索:设初始状态是图中所有顶点未曾被访问,算法从某顶点v出发,访问此顶点,然后依次从v的邻接点出发进行搜索,直至所有与v相连的顶点都被访问;若图中尚有顶点未被访问,则选取这样的一个点作起始点,重复上述过程,直至对图的搜索完成。程序中的整型数组visited[]的作用是标记顶点i是否已被访问。 [函数] void DFSTraverseAL(ALGraph *G)/*深度优先搜索以邻接表存储的图G*/ { int i; for(i=0;i<{{U}} (1) {{/U}};i++) visited[i]=0; for(i=0;i<{{U}} (1) {{/U}};i++)if({{U}} (2) {{/U}}) DFSAL(G,i); } void DFSAL(ALGraph *G,int i) /*从Vi出发对邻接表存储的图G进行搜索*/ { EdgeNode *p; {{U}} (3) {{/U}}; p={{U}} (4) {{/U}}; while(p!=NULL) /*依次搜索Vi的邻接点Vj*/ { if(! visited[{{U}} (5) {{/U}}]) DFSAL(G,{{U}} (5) {{/U}}); p=p->next; /*找Vi的下一个邻接点*/ } }
进入题库练习
问答题【函数2.1说明】 将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。 【函数2.1】 Fun1 (int n) { int i; for(i=2;i<=n;i++) { while ({{U}} (1) {{/U}}) { if (n%i==0) { printf("%d*",i); {{U}}(2) {{/U}}; } else break; } } printf("%d",/n); } 【函数2.2说明】 下面程序的功能是:海滩上有一堆桃子,5只猴子来分。第1只猴子把这堆桃子平均分为5份,多了一个,这只猴子把多的一个扔入海中,拿走了一份。第2只猴子把剩下的桃子又平均分成5份,又多了一个,它同样把多的一个扔入海中,拿走了一份。第 3、4、5只猴子都是这样做的,问海滩上原来最少有多少个猴子? 【函数2.2】 main() { int i,m,j,k,count; for(i=4;i<10000;i+=4) { count=0; {{U}} (3) {{/U}}; for(k=0;k<5;k++)   { {{U}} (4) {{/U}}; i=j; if(j%4==0) {{U}} (5) {{/U}}; else break; } i=m; if(count==4) { printf("%d/n",count); break; } } }
进入题库练习
问答题[说明]设有一张学生成绩表存放在Acess数据库中,其中包括学生编号、姓名以及各科目考试成绩。下面的应用程序利用数据控件(Data)实现了对这张数据表中记录的增加、删除、修改、查找和刷新操作,其中,删除一条记录后,要求界面显示下一条记录;要查找记录,首先要求用户输入学生姓名,程序查找并显示匹配的第一条记录;执行刷新操作后,要求界面显示数据表的第一条记录。程序的运行界面如下:在开发过程中,数据控件Datal与成绩数据表相连接,各文本框与数据表相应字段绑定,界面上从左到右各操作按钮分别取名为CmdAdd、CmdDelete、CmdUpdate、CmdFind、CmdRefresh和CmdClose。[VisualBasic代码]PrivateSubCmdAdd_Click()’增加新记录Datal.Recordset.{{U}}(1){{/U}}EndSubPrivateSubCmdDelete_Click()’删除记录Data1.Recoldset.DeleleData1.Recoldset.{{U}}(2){{/U}}EndSubPnvateSubCmdUpdate_Click()’修改记录Data1.Reeordset.EditData1.Recordset.UpdateEndSubPrivateSubCmdFind_Click()’查找记录Dimname,searchAsStringname=InputBox("请输入要查询的姓名:")scarch="姓名='"&name&"'"’Data1.Recordset.MoveFirstDara1.Recordset.FindFirstscarchIfData1.Reeoldset.{{U}}(3){{/U}}ThenMsgBox"姓名为"&name&"的记录未找到!"EndIfEndSubPrivateSubCmdRefresh_Click()’刷新记录{{U}}(4){{/U}}EndSubPrivateSubCmdClose_Click()’退出程序Daral.Recordset.{{U}}(5){{/U}}EndEndSub
进入题库练习
问答题[说明]信息处理过程中经常需要将图片或汉字点阵作旋转处理。一个矩阵以顺时针方向旋转90°后可以形成另一个矩阵,如下图所示。流程图a描述了对n*n矩阵的某种处理。流程图b是将矩阵A顺时针旋转90°形成矩阵B的具体算法。
进入题库练习
问答题【函数1.1说明】 函数strcpy(char*to,char*from)将字符串from复制到字符串to。 【函数1.1】 void strcpy(char*to,char*from) while ( (1) ); 【函数1.2说明】 函数merge(int a[],int n,int b[],int m,int*c)是将两个从小到大有序数组a和b复制合并出一个有序整数序列c,其中形参n和m分别是数组a和b的元素个数。 【函数1.2】 void merge(int a[ ],int n,int b[ ] ,int m,int * c) int i,j; for(i=j=0;i<n ) *c++=a[i] <b[j]?a[i++]:b[j++]; while( (2) )*c++=a[i++]; while( (3) )*c++=b[j++]; 【函数1.3说明】 递归函数sum(int a[],int n)的返回值是数组a[]的前n个元素之和。 【函数1.3】 int sum(int a[] ,int n) if( n >0) return (4) ; else (5) ;
进入题库练习
问答题[问题3] 在上述流程图2-1和图2-2的算法中, (1)矩阵A第i行第j列的元素A(i,j)被复制到矩阵B中的哪个位置? (2)A(i,j)后来又被复制到矩阵C中的哪个位置? (3)填补流程图2-2中的空缺。
进入题库练习
问答题【说明】 设计希赛IT教育研发中心的工资管理系统,该中心主要有3类人员:经理、销售员和销售经理。要求存储这些人员的编号、姓名和月工资,计算月工资并显示全部信息。月工资计算办法是:经理拿固定月薪8000元;销售员拿固定工资1000元,然后再按当月销售额的4%提成;销售经理既拿固定月工资也领取销售提成,固定月工资为5000元,销售提成为所管辖部门当月销售总额的5‰。 按要求设计一个基类employee,销售员类salesman,经理类manager,销售经理类 salesmanager。 程序5-1是类employee的模块内容,程序5-2是类salesman的类模块内容,程序5-3是类manager的模块内容,程序5-4是类salesmanager的模块内容。在主测试程序中,输入张三所管部门月销售量10000后的输出结果如下: 张三所管部门月销售量:10000 销售经理:张三 编号:1001 本月工资:5050 #include <iostream.h> #include <string.h> class employee protected: int no; char *name; float salary; public: employee(int num,char *ch) no=num; name=ch; salary=0; virtual void pay()=0; virtual void display() cout<<"编号:"<<no<<endl; cout<<"本月工资:"<<salary<<endl; ; 【程序5-2】 class salesman: (1) protected: float commrate, sales; public: salesman(int num,char *ch):employee(num,ch) commrate=0.04; void pay() cout<<name<<"本月销售额:"; cin>>saies; salary=sales*commrate+1000; void display() cout<<"销售员:"<<name<<endl; employee::display(); ; 【程序5-3】 class manager: (1) protected: float monthpay; public: manager(int num,char *ch):employee(num,ch) monthpay=8000; void pay() salary=monthpay; void display() cout<<"经理:"<<name<<endl; employee::display(); ; 【程序5-4】 class salesmanager: (2) public: salesmanager(int num,char *ch): (3) monthpay=5000; commrate=0.005; void pay() cout<<name<<"所管部门月销售量:"; cin>>sales; (4) void display() cout<<"销售经理:"<<name<<endl; (5) ; void main() //主测试函数 salesmanager p1 (1001,"张三"); p1.pay(); p1.display();
进入题库练习
问答题[说明]若矩阵Am×n中存在某个元素aij满足:aij…是第i行中最小值且是第j列中的最大值,则称该元素为矩阵A的一个鞍点。下面程序的功能是输出A中所有鞍点,其中参数A使用二维数组表示,m和n分别是矩阵A的行列数。[程序]voidsaddle(intA[][],intm,intn){inti,j,min;for(i=0;i<m;i++){min:{{U}}(1){{/U}};for(j=1;j<n;j++)if(A[i][j]<min){{U}}(2){{/U}};for(j=0;j<n;j++)if({{U}}(3){{/U}}){p=0;while(p<mif(p>=m)printf("%d,%d,%d/n",i,j,min);}}}[问题1]将函数代码中的(1)~(4)处补充完整[问题2]在上述代码的执行过程中,若A为矩阵,则调用saddle(A,3,3)后输出是{{U}}(5){{/U}}。
进入题库练习
问答题【说明】 在下面程序横线处填上适当的字句,3个(2)空填的是一样的。使其输出结果为: x=5 x=6 y=7 x=8 z=9 【程序】 #include<iostream.h> class X1{ int x; {{U}} (1) {{/U}}; X1(int xx=0){x=xx;} {{U}} (2) {{/U}}void Output(){ cout<<"x="<<x<<end; } }; {{U}} (3) {{/U}}Y1:public X1{ int y; public: Y1(int xx=0,int yy=0);X1(xx){y=yy;} {{U}} (2) {{/U}}void Output(){ {{U}} (4) {{/U}}Output(); cout<<"y="<<y<<endl; } }; class Z1:public X1{ int z: {{U}} (5) {{/U}}; Z1(int xx=0,int zz=0):X1(xx)(z=zz;} {{U}} (2) {{/U}}void Output(){ X1∷Output(); cout<<"z="<<z<<endl; } }; void main() { X1 a(5);Y1 b(6,7);Z1 c(8,9); X1*p[3]={ For(int i=0;i<3;i++){ p[i]->Output();cout<<endl; } }
进入题库练习
问答题【说明】 下面程序完成从键盘读入一个字符串,然后采用parseInt方法将其转换为一个相应的整数。 import java.io.*; public class testThrows{ public static{{U}} (1) {{/U}}readString(){{U}} (2) {{/U}}IOException{ int ch; String r=""; boolean done=false; while({{U}} (3) {{/U}}){ ch=System.in.read(); if(ch<0 || ch=0xd) //处理回车符中第一个符号 done=true; else r=r+(char)ch; } return r; } public static void main(Stling args[]){ String str; {{U}} (4) {{/U}}{ str=readString(); }{{U}} (5) {{/U}}(IOException e){ System.out.println("error"); return; } System.out.println("input integer: "+Integer.parselnt(str)); } }
进入题库练习
问答题试题二 阅读下列函数说明和C 函数,将应填入 (n) 处的字句写在答题纸的对应栏内。 [函数2.1 说明] 函数palindrome(char s[])的功能是:判断字符串s 是否为回文字符串,若是,则返回0,否则返回-1。若一个字符串顺读和倒读都一样时,称该字符串是回文字符串,例如:“LEVEL”是回文字符串,而“LEVAL”不是。 [函数2.1] int palindrome(char s[]) { char *pi, *pj; pi = s; pj = s+strlen(s)-1; while ( pi < pj pj--; } if ( (2) ) return -1; else return 0; } [函数2.2 说明] 函数f(char *str,char del)的功能是:将非空字符串str 分割成若干个子字符串并输出,del 表示分割时的标志字符。 例如若str 的值为“33123333435”,del 的值为‘3’,调用此函数后,将输出三个子字符串,分别为“12”、“4”和“5”。 [函数2.2] void f(char *str,char del) { int i, j, len; len = strlen(str); i = 0; while( i < len ){ while( (3) ) i++; /*忽略连续的标志字符*/ /*寻找从str[i]开始直到标志字符出现的一个子字符串*/ j = i + 1; while(str[j] != del 4) = ′/0′; /*给找到的字符序列置字符串结束标志*/ printf("%s/t", 5) ; } }
进入题库练习
问答题【说明】 下面的程序是从命令行输入3个数传递到public static void main(String args[])方法中 (如java IsTriangle 3 4 5),并判断这3个数能否构成三角形的3条边,并显示相应的结果。请在程序的每条横线处填入适当的语句,使程序的功能完整。 注意:请勿改动main()主方法和其他已有的语句内容,仅在横线处填入适当的语句。 public class IsTriangle{ public static void main( String args[ ]){ int a[] =new {{U}}(1) {{/U}}[args. {{U}}(2) {{/U}}]; for(int i=0;i<3; {{U}}(3) {{/U}}) { a[i]= {{U}}(4) {{/U}} } if({{U}} (5) {{/U}}) System. out. println(a[0] +","+a[1] +","+a[2]"能构成三角形的3条边"); else System. out. println(a[0] +","+a[1] +","+a[2]"不能构成三角形的3条边); } }
进入题库练习
问答题阅读以下说明和C程序,填充函数中的空缺,将解答填入答题纸的对应栏内。【说明】N个游戏者围成一圈,从1~N顺序编号,游戏方式如下;从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,直到剩余一个游戏者为止,该游戏者即为获胜者。下面的函数playing(Linklisthead)模拟上述游戏过程并返回获胜者的编号。其中,N个人同成的圈用一个包含N个结点的单循环链表来表示,如图4—1所示,游戏者的编号放在结点的数据域中。在函数中,以删除结点来模拟游戏者退出圈子的处理。整型变量c(初值为1)用于计数,指针变量P的初始值为head,如图4一1所示。游戏时,从P所指向的结点开始计数,P沿链表中的指针方向遍历结点,c的值随P的移动相应地递增。当c计数到2时,就删除P所指结点的下一个结点(因下一个结点就表示报数到3的游戏者),如图4—2所示,然后将C设置为0后继续游戏过程。结点类型定义如下:typedefstructnode{intcode;/*游戏者的编号*/structnode*next;}NODE,*LinkList;【C函数】intplaying(LinkListhead,intn){/*head指向含有n个结点的循环单链表的第一个结点(即编号为1的游戏者)*/LinkListp=head,q;intthewinner,c=1;while(n>____(1)____){if(c==2){/*当c等于2时,p所指向结点的后继即为将被删除的结点*/q=p->next;p->next=____(2)____;printf(“%d\t”,q->code);/*输出退出圈子的游戏者编号*/free(q);c=____(3)____;n--;}/*if*/p=____(4)____;c++:}*while*/theWinner=____(5)____;free(p);returntheWinner;/*返回最后一个游戏者(即获胜者)的编号*/}
进入题库练习