计算机类
公务员类
工程类
语言类
金融会计类
计算机类
医学类
研究生类
专业技术资格
职业技能资格
学历类
党建思政类
计算机软件水平考试
全国计算机应用水平考试(NIT)
计算机软件水平考试
计算机等级考试(NCRE)
全国高校计算机等级考试CCT
行业认证
信息素养
程序员(初级)
信息系统项目管理师(高级)
系统分析师(高级)
系统架构设计师(高级)
网络规划设计师(高级)
系统规划与管理师(高级)
软件评测师(中级)
软件设计师(中级)
网络工程师(中级)
多媒体应用设计师(中级)
嵌入式系统设计师(中级)
电子商务设计师(中级)
系统集成项目管理工程师(中级)
信息系统监理师(中级)
信息安全工程师(中级)
数据库系统工程师(中级)
信息系统管理工程师(中级)
软件过程能力评估师(中级)
计算机辅助设计师(中级)
计算机硬件工程师(中级)
信息技术支持工程师(中级)
程序员(初级)
网络管理员(初级)
信息处理技术员(初级)
电子商务技术员(初级)
信息系统运行管理员(初级)
网页制作员(初级)
多媒体应用制作技术员(初级)
PMP项目管理员资格认证
程序员应用技术
程序员基础知识
程序员应用技术
案例分析题试题三 阅读下列说明和 C 函数, 填补 C 函数中的空缺, 将解答填入答案纸的对应栏目内
进入题库练习
问答题阅读以下说明和流程图,填补流程图中的空缺(1)~(5),将解答填入答题纸的对应栏内。{{B}}[{{/B}}说明{{B}}]{{/B}}求连续函数f(x)的根(方程f(x)=0的解)的最简单方法是二分法。为此,首先需要在若干点上检查函数值的符号,如果发现f(a)与f(b)符号相反(a<b),则在区间(a,b)中必然存在f(x)的根。因为当x从a变到b时,连续函数的值将从正变到负(或从负变到正),必然要经过0。区间(a,b)就是根的初始范围。取该区间的中点m,如果f(m)=0,则根就是m。如果f(a)与f(m)符号相反,则根一定在区间(a,m)中;如果f(m)与f(b)符号相反,则根一定在区间(m,b)中。因此,根的范围缩小了一半。依此类推,将区间一半一半地分下去,当区间的长度很小(达到根的精度要求,例如0.001)时,或者当区间中点处的函数值几乎接近于0(即绝对值小于预先规定的微小量,例如0.001)时,近似计算就可以结束了。以下流程图描述了用二分法近似计算区间(a,b)中f(x)的根的过程。{{B}}[{{/B}}流程图{{B}}]{{/B}}
进入题库练习
问答题[Vsual Basic 程序代码] Private Sub CmdSelect_Cliek() For i = O To List2.ListCount - 1 If Listl.Text = List2.List(i) Then Exit Sub '不要重复选择 Next i List2.Addltem{{U}} (1) {{/U}} '在List2中增添List1中所选的项 End Sub Private Sub CrndSelAll_Click() List2.Clear '先删除List2中的已有项 For i = 0 To {{U}}(2) {{/U}} '对List1中所有各项做循环处理 List2.Addltem {{U}}(3) {{/U}} '将该项增添到 List2中 Next i End Sub Private Sub CmdDelete_Cliek() If List2.Listlndex >= O Then '如果List2中有选中的项, List2.Removeltem {{U}} (4) {{/U}} '则删除所选的项 End If End Sub Private Sub CmdDelAll_Cliek() {{U}}(5) {{/U}} End Sub
进入题库练习
问答题阅读以下说明和C函数,填补函数代码中的空缺,将解答填入答题纸的对应栏内。[说明1]函数f(doubleeps)的功能是:利用公式计算并返回π的近似值。[C函数1]doublef(doubleeps){doublen=1.0,s=1.0,term=1.0,pi=0.0;while(fabs(term)>=eps){pi=pi+term;n=______;s=______;term=s/n;}returnpi*4;}[说明2]函数fun(char*str)的功能是:自左至右顺序取出非空字符串str中的数字字符,形成一个十进制整数(最多8位)。例如,若str中的字符串为“iyt?67kpf3g8d5.j4ia2e3p12”,则函数返回值为67385423。[C函数2]longfun(char*str){inti=0;longnum:0;char*p=str;while(i<8++i;}______;}returnnum;}
进入题库练习
问答题【说明】 以下【C程序】的功能是从文件text_01.ini中读入一篇英文短文,统计该短文中不同单词和它的出现次数,并按词典编辑顺序将单词及它的出现次数输出到文件word_xml.out中。 该C程序采用一棵有序二叉树存储这些单词及其出现的次数,一边读入一边建立。然后中序遍历该二叉树,将遍历经过的二叉树上节点的内容输出。 程序中的外部函数 int getword(FILE *fpt,char *word) 从与fpt所对应的文件中读取单词置入word,并返回1;若已无单词可读,即到文件尾部时,则函数返回0。【C程序】#include <stdio.h>#include <malloc.h>#include <ctype.h>#include <string.h>#define INF "TEXT_01.INI"#define OUTF "WORD_XML.OUT"typedef struct treenode char *word; int count; struct treenode *left, *right; BNODE;int getword(FILE *fpt,char *word);void binary tree(BNODE **t,char *word) BNODE *ptr, *p; int cmpres; p = NULL; (1) ; while (ptr) /*寻找插入位置*/ cmpres = strcmp(word, (2) ); /* 保存当前比较结果*/ if (!cmpres) (3) return; else (4) ; ptr = cmpres > 0 ? ptr->right : ptr->left; ptr = (BNODE *)malloc(sizeof(BNODE)); ptr->right = ptr->left = NULL; ptr->word = (char *)malloc(strlen(word)+1); strcpy(ptr->word,word); ptr->count = 1; if (p == NULL) (5) ; else if (cmpres > 0) p->right = ptr; else p->left = ptr; void midorder(FILE *fpt, BNODE *t) if ( (6) ) return; midorder(fpt , t->left); fprintf(fpt , " %s %d/n " , t->word , t->count); midorder(fpt , t->right); void main() FILE *fpt; char word[40]; BNODE *root = NULL; if ((fpt = fopen(INF , "r")) == NULL) printf("Can't open file %s/n",INF); return; while (getword(fpt,word) == 1) binary_tree( (7) ); fclose(fpt); fopen(OUTF,"w"); midorder(fpt, root); fclose(fpt);
进入题库练习
问答题【说明】 设有一个带表头结点的双向循环链表L,每个结点有4个数据成员:指向前驱结点的指针prior、指向后继结点的指针next、存放数据的成员data和访问频度freq。所有结点的freq初始时都为0。每当在链表上进行一次L.Locate(x)操作时,令元素值x的结点的访问频度 freq加1,并将该结点前移,链接到现它的访问频度相等的结点后面,使得链表中所有结点保持按访问频度递减的顺序排列,以使频繁访问的结点总是靠近表头。 【函数】 void Locate( int while(p!=frist if(p! =first) /*链表中存在x*/ {{{U}} (2) {{/U}}; <结点类型说明> * current = P; /*从链表中摘下这个结点*/ Current -> prior -> next = current -> next; Current -> next -> prior = current -> prior; P = current -> prior; /*寻找重新插入的位置*/ While(p! =first Current-> next = {{U}}(4) {{/U}}; /*插入在P之后*? Current -> prior = P; P -> next -> prior = current; P->next={{U}} (5) {{/U}}; } else printf("Sorry. Not find! /n"); /*没找到*/ }
进入题库练习
问答题[说明] 本程序使用类来管理员工的通讯地址信息。已知程序的输出为: 输出记录:5 姓名:王丽华 街道地址:中华路15号 市:襄樊市 省;湖北省 邮政编码:430070 [C++程序] #include < iostream, h > #include < string, h > class employee. { protected: char name[10]; char street[ 20 ]; char city[10]; char{{U}} (1) {{/U}}[10]; char post[7]; int no; {{U}} (2) {{/U}}: {{U}}(3) {{/U}}(char [] ,char [] ,char [] ,char [] ,char [] ,int); void changename ( char n [] ) { strcpy ( name, n); } void changestreet( char s[] ) { strcpy(street,s) ;} void changecity ( char c [] ) { strcpy ( city, c ); } void changeprov( char p [] ) { strcpy(prov,p); } void changeno(int nnm) {{{U}} (4) {{/U}};} void display( ); }; employee::{{U}} (3) {{/U}}(char n[] ,char s[] ,char c[] ,char p1[] ,char p2[] ,int nam) { strcpy(name,n); strcpy ( street, s); strcpy ( city, c); strcpy ( prov, p1 ); strcpy ( post, p2 ); no = nam; } void employee:: display( ) { cont< <"输出记录: "< <no< <endl; cout< < "姓名: "< < name < < endl; coot < < "街道地址: "< < street < < endl; cout < < "市: "< < city < < endl; cout< <"省: "< <prov < <endl; cout < <"邮政编码: "< < post < < endl; } void main( ) { employee cmp("王华" ,"中华路15号" ,"武汉市","湖北省","430070", 1 ); emp. changename( "五丽华" ); emp. changecity ( "襄樊市" ); emp. changeno(5); {{U}}(5) {{/U}};
进入题库练习
问答题[说明]给定一个十进制整数A,将其转换为R进制数的方法是:将A的整数部分逐次除以R,直到商等于0为止,将所得的余数由低位到高位排列在一起,就得到了对应R的进制数。以A=11,R=2为例,11÷2=5…1,5÷2=2…1,2÷2=1…0,1÷2=0…1中各式的余数依次为:1,1,0,1,于是与A对应的二进制数为1011。下面的流程图实现了将十进制数2597转换为八进制数的功能,其中:(1)循环1执行除法运算并将余数依次记录在数组a中(假定数组长度足够长),如a[1],a[2],……,a[k];(2)循环2则用于将这些余数按逆序输出,即a[k],a[k-1],……,a[1];(3)图中i,j分别是循环1和循环2中的循环变量;(4)图中q用于记录每次除法所得的商值。[流程图]
进入题库练习
问答题【程序2.1说明】 求所有满足如下条件的三位数:它除以11得的商等于它各位数字的平方和。例如 550,除以11商为50,50=52+52+02。 【程序2.1】 void main() int i, j,n,s; for(i=100;i<=999;i++) n=i; j=n/11; s=0; while( (1) ) (2) n/=10; if( (3) ) printf("%d/t",i); 【程序2.2说明】 本程序输入一字符串,将其中的大写字母改变成小写字母。 【程序2.2】 void main() int i=0; char s[120]; scanf("%s",s); while( (4) ) if( (5) ) s[i]=s[i]- 'A'+'a'; i++; printf("%s/n",s);
进入题库练习
问答题【说明】 希赛教育集团公司为发展生产向社会公开招聘M个工种的工作人员,每个工种各有不同的编号(1至M)和计划招聘人数。每位应聘者需申报两个工种,并参加公司组织的考试。公司将按应聘者的成绩从高分至低分的顺序进行排队录取。公司的录取原则是:从高分到低分依次对每位应聘者先按其第一志愿录取;当不能按其第一志愿录取时,便将他的成绩扣去5分后,重新排队,并按其第二志愿考虑录取。 程序为输出各工种实际招聘的应聘人员,每个工种都保留一个录取者的有序队列。录取处理循环直至招聘额满或已对全部应聘者都做了录取处理。 程序中,类型STU包含有应聘者的基本信息:编号、成绩、志愿、排队成绩和录取志愿号。数组rz[]的每个元素对应一个工种,包含有计划招聘人数和已录取的人数。 【程序】 #include<stdio.h> #include<malloc.h> #define M 20 #define PEMARK 5 typedef struct stu{ int no, total, z[2], sortm, zi; struct stu *next; }STU; struct rzmode{ int Imt, count; STU *next; }rz[M]; STU *head=NULL, *over=NULL; int all FILE *fp; char dataf[]="pp07.dat"; print(STU *p){ for(;p!=NULL;p=p->next) printf("%d(%d)/t",p->no,p->total); } insert(STU **p, STU *u){ STU *v, *q; for(q=*p;q!=NULL;v=q,{{U}} (1) {{/U}}) if(q->sortm<u->sortm)break; if(q==*p){{U}} (2) {{/U}}; else{{U}} (3) {{/U}}; U->next=q; } main(){ int zn, i, no, total, z1, z2; STU *p, *v, *q; fp=fopen(dataf, "r"); if(fp==NULL){ printf("Can't open file %s./n",dataf); exit(0); } fscanf(fp, "%d", for(all=0,i=1;i<=zn;i++){ fscanf(fp,"%d", rz[i].count=0;rz[i].next=NULL; all+={{U}} (4) {{/U}}; } for(;;){ if((fscanf(fp, "%d%d%d%d", p=(STU*)malloc(sizeof(STU)); p->no=no; p->total=p->sortm=total; p->zi=0;p->z[0]=z1;p->z[1]=z2; {{U}} (5) {{/U}}; } fclose(fp); for(;all ){ p=head; head=head->next; if(rz[p->z[p->zi]].count<{{U}} (6) {{/U}}){ rz[p->z[p->zi]].count++; insert( all--; continue; } if(p->zi>=1){ p->next=over;over=p; continue; } p->sortm-=DEMARK;{{U}} (7) {{/U}}; insed( } for(i=1;i<=zn;i++){ printf("%d:/n",i); print(rz[i].next); printf("/n"); } printf("over:/n");print(head); print(over);printf("/n"); }
进入题库练习
问答题试题七(15分,每空3分)阅读以下应用说明及VisualBasic部分程序代码,将应填入(n)处的字句写在答题纸的对应栏内。[应用说明]设一个简单的“通讯录”存储在一个ACCESS类型的数据库表中,包括姓名、电话和email三个字段。下面的应用程序实现对“通讯录”数据库表中的记录进行增加、删除及修改处理,其运行界面如下:(1)数据控件(data1)与“通讯录”数据库表相连接,用户可通过“??”和“??”按钮指定表中的当前记录。(2)文本框Txt_name、Txt_phone和Txt_email分别与数据库表中的“姓名”、“电话”和“email”字段绑定,用于显示当前记录的内容。(3)应用程序启动时,“确定”按钮(Cmd_ok)和“取消”按钮(Cmd_cancel)不可操作,文本框中显示表中的第一条记录,这时文本框处于不可操作状态。(4)单击“增加”按钮(Cmd_add)或“修改”按钮(Cmd_modify)后,方可以编辑记录内容,同时“增加”、“删除”、“修改”和“退出”按钮变为不可操作状态。“增加”和“修改”操作需通过“确定”和“取消”按钮确认。(5)单击“删除”按钮(Cmd_del)后,弹出对话框,再单击“确定”按钮,当前记录被删除。[程序代码]PrivateSubenableop(isEnabledAsBoolean)Txt_name.Enabled=isEnabled:Txt_phone.Enabled=isEnabledTxt_email.Enabled=isEnabledCmd_ok.Enabled=isEnabled:Cmd_cancel.Enabled=isEnabledCmd_add.Enabled=NotisEnabled:Cmd_del.Enabled=NotisEnabledCmd_end.Enabled=NotisEnabled:Cmd_modify.Enabled=NotisEnabledEndSubPrivateSubForm_Load()Callenableop(False)Data1.RefreshIfData1.Recordset.RecordCount=0ThenCmd_del.Enabled=False:Cmd_modify.Enabled=(1)EndIfEndSubPrivateSubCmd_add_Click()'单击“增加”按钮的代码Callenableop((2))Data1.Recordset.AddNew'在数据库表中添加一个新记录Txt_name.(3)EndSubPrivateSubCmd_del_Click()'单击“删除”按钮的代码OnErrorGoToerror3ans=MsgBox("确定删除吗?",vbYesNo+vbInformation,"操作提示!")If(ans=vbYes)ThenData1.Recordset.(4)Data1.Recordset.MoveNextIfData1.Recordset.EOFThenData1.RefreshEndIfExitSuberror3:MsgBoxErr.Description,vbOKOnly,"错误提示!"EndSubPrivateSubCmd_ok_Click()'单击“确定”按钮的代码OnErrorGoToerror1Data1.Recordset.(5)Callenableop(False)ExitSuberror1:MsgBoxErr.Description,vbOKOnly,"错误提示!"Data1.UpdateControlsCallenableop(False)EndSub’“修改”和“取消”按钮的程序代码(略)
进入题库练习
问答题【说明】 本程序根据输入的月份数,输出它是哪个季节。 【代码】 import java.io.*; public class season public static void main(String[] args) String strln=""; (1) in=new InputStreamReader(System.in); BufferedReader buffln=new BufferedReader(in); System.out.print("Please enter a month(1-12):"); try strln=buffln.readLine();//从命令行读入数据 catch( (2) ) System.out.println(e.toStdng()); int month= (3) (strln);//将字符串转换成整数型 int season=0; if(month<12 //计算季节的公式 (4) (season) case 1: System.out.println("the season is Springl"); break; case 2: System.out.println("the season is Summer!"); case 3: System.out.println("the season is Fall!"); case 4: System.out.println("the season is Winter!"); break; (5) ; System.out.println("this is not correct month!");
进入题库练习
问答题[说明]某小型家电超市开发了下面的程序,用以实现商品提货信息的汇总和输出功能。程序的运行界面如下图所示:程序界面包含两个控件数组,分别是提货商品复选框控件数组Check1以及提货数量文本框控件数组Text1(相同下标的复选框和文本框相对应),提货清单的显示由List控件实现,按钮“打印清单”和“清除”分别名为Command1和Command2。[VisualBasic代码]’提货商品复选框的单击事件响应代码PrivateSubCheck1_Click(IndexAsInteger)IfCheck1(Index).Value=1Then(1).SetFocusEndSub’按钮“打印清单”的单击事件响应代码PrivateSubCommand1_Click()Dimi,n,priceAsInteger,sumAsLong,titleAsStringsum=0Fori=OTo4SelectCaseiCase0:title="电视机":price=3580Case1:title="微波炉":price=660Case2:title="电冰箱":price=1850Case3:title="DVD":price=2880Case4:title="空调":price=2500EndSelectIf(2)=1AndTextl(i).Text<>""Then(3)title&Text1(i).Text&"台"n=n+Val(Textl(i))sum=(4)EndIfNextiIfsum<>0Then(3)"共:"&n&"台,"&"合计金额:"&sum&"元。"EndIfEndSub’按钮“清除”的单击事件响应代码PrivateSubCommand2_Click()(5)EndSub
进入题库练习
问答题【说明】 魔方阵,又叫幻方,在我国古代称为“纵横图”。由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; {{U}} (1) {{/U}} while({{U}} (2) {{/U}}) a[i][j]=m; m++; i--; j++; if((m-1)%n==0 } if(j>(n-1)) //超出上界 {{U}} (4) {{/U}} if(j>(n-1)) {{U}} (5) {{/U}} } 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"); } }
进入题库练习
问答题阅读下列说明和C++代码,填充代码中的空缺,将解答填入答题纸的对应栏内。 【说明】 某学校在学生毕业时要求对其成绩进行综合评定,学生的综合成绩(GPA)由其课程加权平均成绩(Wg)与附加分(Ag)构成,即GPA=Wg+Ag。 设一个学生共修了n门课程,则其加权平均成绩(Wg)定义如下: 其中,gradei、Ci分别表示该学生第i门课程的百分制成绩及学分。 学生可以通过参加社会活动或学科竞赛获得附加分(Ag)。学生参加社会活动所得的活动分(Apoints)是直接给出的,而竞赛分(Awards)则由下式计算(一个学生最多可参加m项学科竞赛): 其中,li和Si分别表示学生所参加学科竞赛的级别和成绩。 对于社会活动和学科竞赛都不参加的学生,其附加分按活动分为0计算。 下面的程序实现计算学生综合成绩的功能,每个学生的基本信息由抽象类Student描述,包括学号(stuNo)、姓名(name)、课程成绩学分(grades)和综合成绩(GPA)等,参加社会活动的学生由类ActStudent描述,其活动分由Apoints表示,参加学科竞赛的学生由类CmpStudent描述,其各项竞赛的成绩信息由awards表示。 【C++代码】 #include #include using namespace std; const int n=5; /*课程数*/ const int m=2; /*竞赛项目数*/ class Student{ protected: int stuNo;string name; double GPA; /*综合成绩*/ int(*grades)[2]; /*各门课程成绩和学分*/ public: Student(const int stuNo,const string&name,int grades[][2]){ this->stuNo=stuNo;this->name=name;this->grades=grades; } Virtual~Student(){} int getstuNo(){/*实现略*/} string getName(){/*实现略*/} ____(1)____; double computeWg(){ int totalGrades=0,totalCredits=0: for(int i=0;i<N;i++){ totalGrades+=grades[i][0]*grades[i][1];totalGredits+=grades[i][1]; } return GPA=(double)totalGrades/totalCredits; } }; class ActStudent;public Student{ int Apoints; public; ActStudent(const int stuNo,const string&name,int gs[][2],int Apoints) :____(2)____{ this->Apoints=Apoints: } double getGPA(){return GPA=____(3)____;} }; class CmpStudent:public Student{ private: int(*awards)[2]; public: cmpstudent(const int stuNo,const string&name,int gs[][2],int awards[][2]) :____(4)____{ this->award=award;} double getGPA()f int Awards=0; for(int i=0;i<M;i++){ Awards+=awards[i][0]*awards[i][1]: } Return GPA=____(5)____; } }; int main() { //以计算3个学生的综合成绩为例进行测试 int g1[][2]={{80,3},{90,2},{95,3},{85,4},{86,3}}, g2[][2]={{60,3},{60,2),{60,3},{60,4},{65,3}}, g3[][2]={{80,3},(90,2},{70,3},{65,4},{75,3}}; //课程成绩 int c3[][2]={{2,3},{3,3)}; //竞赛成绩 Student*student[3]={ new ActStudent(101,”John”,g1,3), //3为活动分 new ActStudent(102,”Zhang”,g2,0), new ActStudent(103,”Li”,g3,c3), }; //输出每个学生的综合成绩 for(int i=0;i<3;i++) cout<<____(6)____<<end1; delete*student; return 0; }
进入题库练习
问答题【说明】 本程序的功能是生成螺旋方阵,用户可以输入该方阵的行列数,然后就生成对应的螺旋方阵。例如:当n=5时,对应的螺旋方阵如下: 1 16 15 14 13 2 17 24 23 12 3 18 25 22 11 4 19 20 21 10 5 6 7 8 9 【C++代码】 #include"stdio.h" #include"iostream,h" int array[11][11]; int temp; int ROW; void godown(int temp<=ROW;temp++) if(array[temp][a]==0) array[temp][a]= (1) ; a++; void goright(int temp<=ROW;temp++) if(array[b][temp]==0) array[b][temp]=m++; b--; void goup(int temp>0;temp-) if(array[temp][c]==0) array[temp][c]=m++; c--; void goleft(int temp>0;temp--) if(array[d][temp]==0) array[d][temp]=m++; (2) ; void main() int a,b,c,d,max,m; cin>>ROW; cout>>end1; for(a=1;a<=ROW;a++) for(b=1;b<=ROW;b++) (3) ; m=1; a=d=1; b=c=ROW; max= (4) ; whiie(m<=max) godown(m,a); (5) (m,b); goup(m,c); goleft(m,d): for(a=1;a<=ROW;a++) for(b=1;b<=ROW;b++) printf("%3d ",array[a][b]); cout<<end1;
进入题库练习
问答题【说明】某绘图系统存在Point、Line和Square3种图元,它们具有Shape接口,图元的类图关系如图5-12所示。现要将Circle图元加入此绘图系统以实现功能扩充。已知某第三方库已经提供了XCircle类,且完全满足系统新增的Circle图元所需的功能,但XCircle不是由Shape派生而来,它提供的接口不被系统直接使用。【Java代码7-1】既使用了XCircle又遵循了Shape规定的接口,即避免了从头开发一个新的Circle类,又可以不修改绘图系统中已经定义的接口。【Java代码7-2】根据用户指定的参数生成特定的图元实例,并对它进行显示操作。该绘图系统定义的接口与XCircle提供的显示接口及其功能如表5-14所示。{{B}}表5-14绘图系统定义的接口与XCircle显示接口功能表{{/B}}ShapeXCircle功 能Display()_DisplayIt()显示图元【Java代码7-1】classCircle{{U}}(1){{/U}}{private{{U}}(2){{/U}}pxc;publiCCircle(){pxc=new{{U}}(3){{/U}};}publicvoiddispiay(){pxc.{{U}}(4){{/U}};}}【Java代码7-2】publicclassFactory{public{{U}}(5){{/U}}getShapeInstance(inttype)(//生成特定类实例Switch(type){case0:returnnewPoint();case1:returnnewRectangle();case2:returnnewLine)();case3:returnnewCircle();default:returnnull;}}};publiCclassApp{publicstaticvoidmain(Stringargv[]){if(argv.length!=1){System.out.println("errorparameters!");Return;}inttype=(newInteger(argv[0])).intValue();Factoryfactory=newFactory();Shaps;s=factory.{{U}}(6){{/U}}if(s==null){System.out.println("Errorgetinstance!");Return;}s.display();return;}}
进入题库练习
问答题【说明】 本程序用古典Eratosthenes;筛选法求从2起到指定范围内的素数。如果要找出2~10中的素数,开始时筛中有2~10的数,然后取走筛中最小的数2,宣布它是素数,并把该素数的倍数都取走。这样,第一步以后,筛子中还留下奇数3、5、7、9;重复上述步骤,再取走最小数3,宣布它为素数,并取走3的倍数,于是留下5、7。反复重复上述步骤,直到筛中为空时,工作结束,求得2~10中的全部素数。 【代码】 # include <stdio.h> # define MAX 22500 /*程序中用数组sieve表示筛子,数组元素sieve[i]的值为1时,表示数i在筛子中,值为-1时表示数i已被取走*/ main() unsigned int i, range, factor, k; int sieve[MAX]; printf("please input the range:"); scanf("%d", /* range 指出在多大的范围内寻找素数*/ for(i=2; i<=range; i++) (1) ; factor=2; while (factor<=range) if( (2) ) /* 筛中最小数是素数 */ printf("%d/t", factor); k=factor; while (k<=range) /*移走素数的倍数 */ (3) ; k= (4) ; (5) ;
进入题库练习
问答题[说明] 类Queue表示队列,类中的方法如表4-12所示。 {{B}}表4-12 类Queue中方法说明表{{/B}} 方法 说明 IsEmpty() 判断队列是否为空,如果队列不为空,返回true;否则,返回false Enqueue(object NewNode) 入队操作 Dequeue() 出队操作。如果队列为空,则抛出异常 类Node表示队列中的元素;类EmptyQueueException给出了队列中的异常处理操作。 [Java代码] public class testmain { //主类 public static viod main (string args[]) { Queue q= new Queue; q.enqueue("first!"); q.enqueue("second!"); q.enqueue("third!"); {{U}} (1) {{/U}} { while(true) system.out.println(q.dequeue()); } catch({{U}} (2) {{/U}}) { } } public class Queue { //队列 node m_firstnode; public Queue(){m_firstnode=null;} public boolean isempty() { if (m_firstnode= =null) return true; else return false; } public viod enqueue(object newnode) { //入队操作 node next = m_firstnode; if (next = = null) m_firstnode=new node(newnode); else { while(next.getnext() !=null) next=next.getnext(); next.setnext(new node(newnode)); } } public object dequeue() {{U}}(3) {{/U}} { //出队操作 object node; if (is empty()) {{U}} (4) {{/U}} else { node =m_firstnode.getobject(); m_firstnode=m_firstnode.getnext(); return node; } } } public class node{ //队列中的元素 object m_data; node m_next; public node(object data) {m_data=data; m_next=null;} public node(object data,node next) {m_data=data; m_next=next;} public void setobject(object data) {m_data=data; } public object getobject(object data) {return m_data; } public void setnext(node next) {m_next=next; } public node getnext() {return m_next; } } public class emptyqueueexception extends {{U}}(5) {{/U}} { //异常处理类 public emptyqueueexception() { system. out. println ( "队列已空!" ); } }
进入题库练习
问答题[说明]我国现行使用的公民身份证号码有两种,分别遵循两个国家标准:〖GB11643-1989〗和〖GB11643-1999〗。〖CB11643-1989〗中规定的是15位身份证号码,排列顺序从左至右依次为:六位数字地址码,六位数字出生日期码,三位数字顺序码,其中出生日期码不包含世纪数。〖GB11643-1999〗中规定的是18位身份证号码,是特征组合码,它由十七位数字本体码和一位数字校验码组成。排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位校验码。其中,校验码C由本体码按如下过程求得:(1)计算校验码和S=a18W18+a17W17+…+a2w2,其中i表示18位身份证号,码每一位的序号,从右至左,最左侧为18,最右侧为1;ai表示身份证号码第i位上的号码;wi表示第i位上的权值,其值为2i-1模11的结果;(2)计算校验码值R,其值为校验和模11的结果;(3)根据下面对应关系找出校验码C:R012345678910C10X98765432由上述计算过程可以看出,18位身份证号码中可能包含非数字的字母X(代表数字10)。下面的应用程序基于这一算法实现了身份证号码的升位查询:在开发过程中,显示新旧两种身份证号码的文本框(TextBox)分别名为Text1和Text2,“号码升位”按钮(CommandButton)名为Command1。代码中使用到的字符串函数及功能说明如下:(1)Len(s):获取字符串s的长度;(2)Left(s,1):返回字符串s左端长度为1的子串;(3)Right(s,1):返回字符串s右端长度为1的子串;(4)Mid(s,p,1):返回字符串s从第P个字符开始长度为1的子串。[VisualBasic代码]’计算18位身份证号码PrivateSubCommandl_Click()DimcodeAsStringDimSAsIntegercode=Textl.Text'提取15位身份证号码IfLen(code)<>15ThenMsgBox"ID号码长度不正确,请检查!"(1)EndIfcode=Left(code,6)+"19"+(2)(code,9)'年份升位S=0Fori=18To2Step-1'计算校验码和S=S+Clnf((3))*(2^(i-1)Mod11)Nexti(4)'计算校验码值SelectCaseS'确定校验码Case0:code=code+"1"Case1:code=code+"0"Case2:code=code+"X"CaseElse:code=code+CStr((5))EndSelectText2.Text=code'显示18位身份证号码EndSub
进入题库练习