计算机类
公务员类
工程类
语言类
金融会计类
计算机类
医学类
研究生类
专业技术资格
职业技能资格
学历类
党建思政类
计算机软件水平考试
全国计算机应用水平考试(NIT)
计算机软件水平考试
计算机等级考试(NCRE)
全国高校计算机等级考试CCT
行业认证
信息素养
程序员(初级)
信息系统项目管理师(高级)
系统分析师(高级)
系统架构设计师(高级)
网络规划设计师(高级)
系统规划与管理师(高级)
软件评测师(中级)
软件设计师(中级)
网络工程师(中级)
多媒体应用设计师(中级)
嵌入式系统设计师(中级)
电子商务设计师(中级)
系统集成项目管理工程师(中级)
信息系统监理师(中级)
信息安全工程师(中级)
数据库系统工程师(中级)
信息系统管理工程师(中级)
软件过程能力评估师(中级)
计算机辅助设计师(中级)
计算机硬件工程师(中级)
信息技术支持工程师(中级)
程序员(初级)
网络管理员(初级)
信息处理技术员(初级)
电子商务技术员(初级)
信息系统运行管理员(初级)
网页制作员(初级)
多媒体应用制作技术员(初级)
PMP项目管理员资格认证
程序员应用技术
程序员基础知识
程序员应用技术
问答题[说明] 打保龄球是用一个滚球去打出10个站立的柱,将柱击倒。一局分10轮,每轮可滚球一次或多次,以击倒的柱数为依据计分。一局得分为10轮得分之和,而每轮的得分不仅与本轮滚球情况有关,还可能与后续一两轮的滚球情况有关。即某轮某次滚球击倒的柱数不仅要计入本轮得分,还可能会计入前一两轮得分。具体的滚球击柱规则和计分方法如下: 1) 若某一轮的第一次滚球击倒全部10个柱,则本轮不再滚球(若是第10轮则还需另加两次滚球)。该轮得分为本次倒柱数(即10)与以后两次滚球所击倒柱数之和。 2) 若某一轮的第一次滚球未击倒10个柱,则可对剩下未倒的柱再滚球一次。如果这两次滚球击倒全部10个柱,则本轮不再滚球(若是第10轮则还需另加一次滚球),该轮得分为本次倒柱数10与以后一次滚球所击倒柱数之和。 3) 若某一轮的两次滚球未击倒全部10个柱,则本轮不再继续滚球,该轮得分为这两次滚球击倒的柱数之和。 总之,若一轮中一次滚球或两次滚球击倒10个柱,则本轮得分是本轮首次滚球开始的连续3次滚球击倒柱数之和(其中有一次或两次不是本轮滚球)。若一轮内二次滚球击倒柱数不足10个,则本轮得分即为这两次击倒柱数之和。表3-15是打保龄球计分的某个实例说明。 {{B}}表3-15 某保龄球计分实例表{{/B}} 轮 1 2 3 4 5 6 7 8 9 10 附加 各轮第1次得分 10 10 10 7 9 8 8 10 9 10 8 各轮第2次得分 — — — 2 1 1 2 — 1 — 2 各轮得分 30 27 19 9 18 9 20 20 20 20 累计总分 30 57 76 85 103 112 132 152 172 192 以下[C程序]是模拟打一局保龄球的过程,统计各轮得分和累计总分。程序交互地逐轮逐次输入一次滚球击倒的柱数,计算该轮得分和累计总分。为记录一轮内击倒10柱,但还暂不能计算该轮得分和累计总分的情况,程序引入变量ok,用来记录当前已完成完整计算的轮次。程序每输入一次滚球击倒柱数,就检查还未完成完整计算的轮次,并计算。 [C程序] #include<stdio.h> #define N 13 struct { int n; /* 一轮内滚球次球 */ int f; /* 第一次击倒柱数 */ int s; /* 第一次击倒柱数 */ int score; /* 本轮得分 */ int total; /* 至本轮累计总分 */ int m; /* 完成本轮得分计算,还需滚球次数 */ } a[N]; int ok = 0; /* 已完成完整计算的轮次数 */ int ball(int i, int n, int max) /* 完成一次滚球,输入正确击倒柱数 */ { int d, j, k; static c=1; while (1) { if(i <= 10) printf(" 输入第%d轮的第%d次滚球击倒柱数。(<=%d)/n", i, n, max ); else printf(" 输入附加的第%d次滚球击倒柱数。(<=%d)/n", C++, max); scanf("%d , if (d >=0 printf(" 不合理的击倒柱数,请重新输入。/n") ) if (ok < {{U}}(1) {{/U}}) { /* 对以前未完成计算的轮次分别计算得分与累计总分*/ for(j = ok+1; {{U}}(2) {{/U}}; j++) { a[j].score += d; if (--a[j].m == 0) { a[j].total = ({{U}} (3) {{/U}}) + a[j].score; ok = {{U}}(4) {{/U}}; } } } return d; } main ( ) { int i, first, second, k; /* i表示轮次 */ for ( i = 1 ; ok < 10 ; i++) a[i].score = a[i].f = first = ball(i,1,10); if ( first == 10) a[i].m = 2; a[i].n = 1; if (first < 10 if (first + second == 10) a[i].m = 1; {{U}}(6) {{/U}}; } if (i <= 10 {{U}} (7) {{/U}}; } printf( "各轮处1次得分"); for(k = 1; k <= 1; k++) printf("%5d", a[k].f); printf("/n 各轮第2次得分"); for(k=1; k <= i; k++) if (a[k].n < 2) printf(" /"); else printf("%5d", a[k].s); printf("/n 各轮得分"); for(k = 1; k <= ok; k++) printf("%5d", a[k].score); printf("/n 累计总分"); for(k = 1; k <= ok; k++) printf("%5d", a[k].total); printf("/n"); } }
进入题库练习
问答题[函数2.1说明] 下面程序的功能是计算x和y的最小公倍数。 [函数2.1] main() { int m,n,d,r; seanf("%d %d", if(m<n) {r=m;m=n;n=r;} {{U}}(1) {{/U}}; while (d%n! =0) {{U}}(2) {{/U}}; printf("%d/n",d); } [函数2.2说明] 下述程序接收键盘输入,直到句点“.”时结束。输入的字符被原样输出,但连续的空格输入将转换成一个空格。 [函数2.2] #include <stdio.h> main() { char c,preChar='/0'; c = getchar(); while(c! = '.'){ if({{U}} (3) {{/U}}) putchar(c); else if(preChar! =' ') putchar(c); {{U}}(4) {{/U}}; c={{U}} (5) {{/U}}; } }
进入题库练习
问答题试题一(共15分)阅读下列说明和流程图,将应填入(n)处的字句写在答题纸的对应栏内。[流程图说明]流程图1-1描述了一个算法,该算法将给定的原字符串中的所有前导空白和尾部空白都删除,但保留非空字符之间的空白。例如,原字符串“FileName”,处理后变成“FileName”。流程图1-2、流程图1-3、流程图1-4分别详细描述了流程图1-1中的框A、B、C。假设原字符串中的各个字符依次存放在字符数组ch的各元素ch(1)、ch(2)、...、ch(n)中,字符常量KB表示空白字符。流程图1-1的处理过程是:先从头开始找出该字符串中的第一个非空白字符ch(i),再从串尾开始向前找出位于最末位的非空白字符ch(j),然后将ch(i)、...、ch(j)依次送入ch(1)、ch(2)、...中。如果原字符串中没有字符或全是空白字符,则输出相应的说明。在流程图中,strlen是取字符串长度函数。[流程图1-1][流程图1-2][流程图1-3][流程图1-4][问题]在流程图1-1中,判断框P中的条件可表示为:i>(5)
进入题库练习
问答题[说明]本程序在3×3方格中填入1到10以内9个互不相等的整数,使所有相邻两个方格内的两个整数之和为质数。程序的输出是全部满足条件的方格。方格的序号如下图所示。程序采用试探法,从序号为0的方格开始,依次为当前方格寻找一个合理的可填整数,并在当前位置正确填入后,为下一方格寻找可填入的合理整数;如不能为当前方格寻找一个合理的可填整数,就要后退到前一方格,调整前一方格的填入整数;当序号为8的方格也填入合理的整数后,就找到了一个解。为检查当前方格所填整数的合理性,程序引入数组CheckMatrix,存放需要进行合理性检查的相邻方格的序号。事实上,CheckMatrix中只要求第i个方格中的数向前兼容,即填写第4个方格时,只检查在它之前、与之相邻的第1,3个方格是否满足和为素数的条件。[程序]#include<stdio.h>intpos,a[9],b[11];/*用于存储方格所填入的整数*/voidwrite(inta[])/*方格输出函数*/……intisPrime(intm)/*素数判断函数,若m为素数则返回1,否则返回0*/……intselectNum(intstart)/*找到start到10之间尚未使用过的最小的数,若没有则返回0*/intj;for(j=start;j<=10;j++)if(b[j])returnj;return0;intcheck()/*检查填入pos位置的整数是否合理*/inti,jintcheckMatrix[][3]=-1,0,-1,1,-1,0,-1,1,3,-1,2,4,-1,3,-1,4,6,-1,5,7,-1;for(i=0;(j=(1))>=0;i++)if(!isPrime((2)))return0;return1;voidextend()/*为下一方格找一个尚未使用过的整数*/(3)=selectNum(1);b[a[pos]]=0;voidchange()/*为当前方格找下一个尚未使用过的整数,若找不到则回溯*/intj;while(pos>=0if(pos<0)return;(4);a[pos]=j;b[j]=0;voidfind()intok=1;pos=0;a[pos]=1;b[a[pos]]=0;doif(ok)if((5))write(a);change();elseextend();elsechange();ok=check(pos);while(pos>=0);voidmain()inti;for(i=1;i<=10;i++)b[i]=1;find();
进入题库练习
问答题【说明】本应用程序的运行窗口如图2所示。只要用户单击“闪烁”按钮,文字“欢迎光临”就会以0.3秒消失、0.3秒显示反复进行闪烁;单击“停止”按钮时,闪烁停止,恢复图示的初态。在开发过程中,需要设置的属性如表1所示。{{B}}表1属性设置{{/B}}对象对象名属性名属性值窗体FrmlCaption闪烁显示演示标签LabelCaption欢迎光临命令按钮CmdFCaption闪烁命令按钮CmdTCaption停止定时器TimerlEnabled {{U}} (1) {{/U}}Interval {{U}} (2) {{/U}}在开发过程中,需要编写的程序代码如下:【程序】PrivateSubCmdF_Click()Timerl.{{U}}(3){{/U}}=TrueLabel.Visible=FalseEndSubPrivateSubTimerl_Timer(){{U}}(4){{/U}}=notLabel.VisibleEndSubPrivateSubCmdT_Click()Timer].Enabled={{U}}(5){{/U}}LabelVisible=trueEndSub
进入题库练习
问答题[说明]下面的流程图用于计算一个英文句子中最长单词的长度(即单词中字母个数)MAX。假设该英文句子中只含字母、空格和句点“.”,其中句点表示结尾,空格之间连续的字母串称为单词。[流程图]
进入题库练习
问答题【说明】 以下程序的功能是:从键盘上输入一个字符串,把该字符串中的小写字母转换为大写字母,输出到文件test.txt中,然后从该文件读出字符串并显示出来。 【程序】 #include < stdio. h > main( ) { FILE * fp; char str[100]; int i=0; if((fp=fopen("text.txt"{{U}} (1) {{/U}})) ==NULL) { printf("can't open this file. /n") ;exit(0) ;} printf(" input astring: /n" ); gest(str); while( str[i] ) { if(str[i] >='a' fputc(str[i],{{U}} (3) {{/U}}); i++; } fclose(fp); fp=fopen(" test.txt",{{U}} (4) {{/U}}); fgets(str, 100, fp); printf("%s/n" ,str); {{U}} (5) {{/U}}; }
进入题库练习
问答题【说明】 进行两个整数之间的比较,由考生通过输入窗口分别输入两个整数,程序比较出结果。例如:先后输入的两个数分别为25和36。 比较结果显示: 25!=36 25<36 25<=36 【Java代码】 import javax.swing.JOptionPane; public class Java3 { public static void main(String args[]) { String{{U}} (1) {{/U}} // 用户输入第1个字符串 secondNumber, // 用户输入第2个字符串 result; // 包含输出 int number1, // 比较的第1个数 number2; // 比较的第2个数 // 用户输入的第1个字符串 firstNumber = JOptionPane.{{U}} (2) {{/U}}("Enter first integer:"); //读用户输入的第2个字符串 secondNumber = JOptionPane.showlnputDialog("Enter second integer:"); 将字符串类型转换成整数类型 number1= Integer.{{U}} (3) {{/U}}(firstNumber); number2= Integer.parselnt(secondNumber); result= "": if ({{U}} (4) {{/U}}) result=number1+"=="+number2; if (number1 != number2) result=number1+"!="+number2; if (number1<number2) result=result+"/n"+number1+"<"+ number2; if (number1>number2) result=result+"/n"+number1+">"+number2; if (number1<=number2) result=result+"/n"+number1+"<="+number2; if (numbed>=number2) result=result+"/n"+number1+">="+number2; //显示结果 JOptionPane.{{U}} (5) {{/U}}.( null, result, "Comparison Results", JOptionPane. INFORMATION_MESSAGE); //程序正常退出 System.exit(0); } }
进入题库练习
问答题试题一(15分,每空3分)阅读下列说明和流程图,将应填入(n)的字句写在答题纸的对应栏内。[流程图说明]下面的流程图描述了对8位二进制整数求补的算法。该算法的计算过程如下:从二进制数的低位(最右位)开始,依次向高位逐位查看,直到首次遇到“1”时,停止查看。然后,对该“1”位左面的更高位(如果有的话),逐位求反,所得的结果就是对原二进制数求补的结果。例如:对二进制整数10101000求补的结果是01011000。设8位二进制整数中的各位,从低位到高位,依次存放在整型数组BIT的BIT[1]~BIT[8]中。例如,二进制整数10101000存放在数组BIT后,就有BIT[1]=0,BIT[2]=0,...,BIT[7]=0,BIT[8]=1。若流程图中存在空操作,则用NOP表示。[流程图]流程图中(1)处按“循环变量名:循环初值,增量,循环终值”格式描述。
进入题库练习
问答题[说明] 函数DelA - InsB ( LinkedList La, LinkedList Lb, int key 1,int key 2,int len)的功能是,将线性表A中关键码为key 1的节点开始的len个节点,按原顺序移至线性表B中关键码为key 2的节点之前。若移动成功,则返回0;否则返回-1。 线性表的存储结构为带头节点的单链表,La为表A的头指针,Lb为表B的头指针。单链表节点的类型定义如下。 typedef struct node{ int key; struct node*next; } *LinkedList; [C程序] int DelA_InsB (LinkedLiSt La, LinkedList Lb, int key1,int key2,int len { LinkedList p, q, S, prep, pres; int k; if (!La ->next || !Lb ->next || len<=0) return-l; p = La->next; prep = La; while (p p = p->next; } if (!p) return -1; /* 表A中不存在键值为key1的节点 */ q = p; k = 1; while (q k++; } if (!q) return -1; /* 表A中不存在要被删除的len个节点 */ S = Lb ->next; {{U}} (3) {{/U}}; while (s s = e->next; } if (!s) return -1; /* 表B中不存在键值为key2的节点 */ {{U}} (4) {{/U}} q->next; /* 将表A中的len个节点删除 */ q->next= {{U}}(5) {{/U}} pres->next = p; /* 将len个节点移至表B */ return 0; }
进入题库练习
问答题[说明]某单位组织一次职业技术考核比赛,由十名评委对选手的现场表现打分(0到100以内的数值)。本程序接收原始评分后,去掉一个最高分、一个最低分,最后计算并输出选手最后得分。在接收输入第i个评分时,若输入数据的类型、范围不正确,程序将给出相应提示,并等待下一次输入,直至正确接收第i个评分为止。程序的运行界面如下:在开发过程中,文本框名为Text1,界面上有上至下三个按钮分别取名为CmdMark、CmdReresh和CmdExit。[VisualBasic代码]PrivateSubCmdMark_Click()’按钮“输入评分”的单击事件响应代码DimiAsInteger,tempAsVariant’声明变量Dimmarks(1To10),maxMark,minMark,sumMark,markAsSinglesumMark=0Text1.Text=“编号”&Chr(9)&“评分”&vbCrLfFori=1To10’接收十个评分输入DoWhile1=1’验证并接收第i个评委的评分temp=InputBox(“请输入”&i&“号评委的评分:”)If{{U}}(1){{/U}}IsNumeric(temp)ThenMsgBox“数据类型错误,请重试!”ElseIfCSng(temp)<0OrCSng(temp)>100ThenMsgBox“数值范围错误,请重试!”Else:ExitDoEndIfLoopmarks(i)=CSng(temp)Ifi=1ThenmaxMark={{U}}(2){{/U}}:minMark={{U}}(2){{/U}}Ifmarks(i)>maxMarkThenmaxMark=marks(i)IfminMark>marks(i)Then{{U}}(3){{/U}}sumMark=sumMark+marks(i)Text1.Text=Text1.Text&i&Chr(9)&marks(i)&vbCrLf输出第i个评委的评分Nextmark=({{U}}(4){{/U}})/8’计算选手最后得分Text1.Text=Text1.Text&"去掉一个最高分:"&maxMark&vbCrLf&_"去掉一个最低分:"&minMark&vbCrLf&_"选手最后得分:"&markEndSubPrivateSubCommand2_Click()’按钮“刷新屏幕”的单击事件响应代码{{U}}(5){{/U}}.Text=“单击”输入评分“按钮,开始统分……”EndSubPrivateSubCommand3_Click()按钮“退出程序”的单击事件响应代码EndEndSub
进入题库练习
问答题【函数2.1说明】 将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。 【函数2.1】 Fun1 (int n) int i; for(i=2;i<=n;i++) while ( (1) ) if (n%i==0) printf("%d*",i); (2) ; 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; (3) ;for(k=0;k<5;k++)   (4) ; i=j; if(j%4==0) (5) ; else break; i=m; if(count==4) printf("%d/n",count); break;
进入题库练习
问答题5.
进入题库练习
问答题【说明】【C程序1】用回溯算法来产生由0或1组成的2m个二进位串,使该串满足以下要求。视串为首尾相连的环,则由m位二进制数字组成的2m个子序列,每个可能的子序列都互不相同。例如,如果m=3,在串11101000首尾相连构成的环中,由3位二进制数字组成的每个可能的子序列都在环中恰好出现一次,它们依次是111,110,101,010,100,000,001,011,如图2-14所示。【C程序2】是求“背包问题”的一组解的递归算法程序。“背包问题”的基本描述是:有一个背包,能盛放的物品总重量为S,设有N件物品,其重量分别为W1,W2,…,Wn,希望从N件物品中选择若干件物品,所选物品的重量之和恰能放入该背包,即所选物品的重量之和等于S。【C程序1】#defineN1024#defineM10intb[N+M-1]intequal(intk,intjintm){inti;for(i=0;i<m;i++if(b[k+i]{{U}}(1){{/U}})return0;return1;}intexchange(intk,intm,intv){while(b[k+m-1)==v){b[kncm--i]=!v{{U}}(2){{/U}};}{{U}}(3){{/U}}=v;returnk;}init(ihtv){intkfor(k=0;K=N+M-1;k++)b[k]=v;}main(){intm,v,k,n,j;printf('Enterm(l<m<10),vv=0,v=1)/n");scanf("%d%d,n=0x01<<m;init(!v);k=0;while({{U}}(4){{/U}}<n)for(j=0;j<k;j++)if(equal(k,j,m)){k=exchange(k,m,v)j={{U}}(5){{/U}};}for(k=0;k<n;k++)print{("%d/n",b[k]);}}【C程序2】#include<stdio.h>#defineN7#defineS15intw[N+1]={0,1,4,3,4,5,2,7};intknap(intS,intn){if(S==0)return1;if(s<0||(s>0if({{U}}(6){{/U}})){printf("4d",w[n]);return1;}return{{U}}(7){{/U}}}main(){if(knap(S,N)printf("OK:/n");elseprintf("NO!/n")}
进入题库练习
问答题试题六(共15分)阅读以下说明和C++代码,将解答写入答题纸的对应栏内。[说明]类Stock的定义中有三处错误,分别在代码的第04、06、10行。请补齐下述代码中的空缺1,修改错误并给出修改后该行的完整代码,最后完善程序运行后的输出结果。[C++代码]程序运行后的输出结果为:1:3.5(2)(3)
进入题库练习
问答题【说明】 计算机在处理算术表达式时,首先将其转换为后缀表达式。例如,表达式“46+5*(120-37)”的后缀表达式形式为“46 512037-*+”。 计算后缀表达式时,从左至右扫描后缀表达式:若遇到运算对象,则压入栈中;遇,到运算符,则从栈中弹出相关运算对象进行计算,并将运算结果压入栈中。重复以上过程,直到后缀表达式扫描结束。例如,后缀表达式“46 5120 37-*+”的计算过程如下。 a.依次将46、5、120、37压入栈中; b.遇到“-”,取出37、120,计算120-37=83,将其压入栈中: c.遇到“*”,取出83、5,计算5×83=415,将其压入栈中; d.遇到“+”,取出415、46,计算46+415=461,将其压入栈中; e.表达式结束,则计算过程完成。 函数computing(char expr[],int *result)的功能是基于栈计算后缀形式的表达式(以串形式存入字符数组expr)的值,并通过参数result返回该值。函数的返回值为-1/0,分别表示表达式有/无错误。假设表达式中仅包含数字、空格和算术运算符号,其中所有项均以空格分隔,且运算符仅包含加(“+”)、减(“-”)、乘(“*”)、除(“/”)。 函数computing中所用栈的基本操作的函数原型说明如下。 · void InitStack(STACK *s):初始化栈。 · void Push(STACK,s,int e):将一个整数压栈,栈中元素数目增1。 · void Pop(STACK *s):栈顶元素出栈,栈中元素数目减1。 · int Top(STACK s):返回非空栈的栈顶元素值,栈中元素数目不变。 · int IsEmpty(STACKs):若s是空栈,则返回1;否则返回0。 【C函数】 int computing (char expr[],int *result) { STACK s; int tnum,a,b; char *ptr; InitStack(&s); ptr=expr;pstr /*字符指针指向后缀表达式串的第一个字符*/ while(*ptr!='/0') { if(*ptr==' ') { /*当前字符是空格*/ {{U}} (1) {{/U}}; /*字符指针指向下一字符*/ continue; } else if(isdigit (*ptr)) { /*当前字符是数字,则将该数字开始的数字串转换为数值*/ tnum={{U}} (2) {{/U}}; while (*ptr>='0' && *ptr <='9') { tnum=tnum * 10 + {{U}}(3) {{/U}}; ptr++; } Push({{U}} (4) {{/U}}); } else /*当前字符是运算符或其他符号*/ if (*ptr=='+'||*ptr=='-'||*ptr=='*'||*ptr=='/'){ if(!IsEmpty(s)) { a=Top(s);Pop(&s); /*取运算符的第二个运算数*/ if(!IsEmpty(s)) { b=Top(s);Pop(&s);/*取运算符的第一个运算数*/ } else return -1; } else return -1; switch (*ptr) { case '+': Push(&s,b+a); break; case '-':Push(&s,b-a); break; case '*':Push(&s,b*a); break; case '/':Push(&s,b/a); break; } } else return -1; ptr++; /*字符指针指向下一字符*/ }/*while*/ if(IsEmpty(s)) return -1; else{ {{U}}(5) {{/U}}=Top(s); Pop(&s); /*取运算结果*/ if(!IsEmpty(s)) return -1; return 0; } }
进入题库练习
问答题[说明]下面的程序演示了根据随机产生的奖牌数,生成金银奖牌榜的过程。程序使用的排序法是简单排序法。以金牌得数为例,其思想是选择最大的元素,将它交换到最前面;然后对剩下的部分采用同样的方法,直到全部排序完成。程序界面中,左右两个文本框分别用于存放随机产生的奖牌数以及生成的奖牌榜,名为Text1和Text2,上下两个按钮分别名为Command1和Command2。代码中使用的量主要有:一维数组cntries,用于存储10个国家的名称,二维数组medals,其元素medals(i,0)和medals(i,1)分别用于存放第i个(i从0开始)国家的金、银牌数目。[VisualBasic代码]Dimcntries(10)AsString,medals(10,2)AsInteger’随机产生奖牌数SubnewMedals()……’为数组cntries和medals赋值EndSub’输出奖牌榜SubprintOut(txtAs{{U}}(1){{/U}})DimstrResuhAsString,iAsIntegerstrResult=“国家”&Chr(9)&“金牌数”&Chr(9)&“银牌数”&vbCrLfFori=0To9strResult=strResult&cntries(i)&Chr(9)&medals(i,0)&Chr(9)&medals(i,1)&vbCrLfNexttxt.Text=strResultEndSub’交换两变量的值Subexchange({{U}}(2){{/U}}aAsVariant,{{U}}(2){{/U}}bAsVariant)DimtempAsVarianttemp=a:a=b:b=tempEndSub’随机产生并输出奖牌数PrivateSubCommand1_Click()newMedalsprintOutText1EndSub’生成并输出奖牌榜PrivateSubCommand2_Click()Dimi,j,kAsInteger,tempAsStringFori=0To9’按金牌数排序j=i’找到自第i个位置起全部数据中金牌得数最多者,记其下标为jFork=i+1To9If{{U}}(3){{/U}}Thenj=kNextIfi<>jThen’若i,j不等,则交换对应位置的国家名、金银牌数目exchangecntnes(i),entries(j)exchangemedals(i,0),medals(j,0)exchangemedals(i,1),medals(j,1)EndIfNextFori=0To9’按银牌数进行二次排序j=iFork=i+1To9Ifmedals(k,0)<>medals(j,0)Then{{U}}(4){{/U}}If{{U}}(5){{/U}}Thenj=kNextIfi<>jThenexchangecntries(i),cntries(j)exchangemedals(i,1),medals(j,1)EndIfNextprintOutText2EndSub
进入题库练习
问答题
进入题库练习
问答题【说明】设M叉树采用列表法表示,即每棵子树对应一个列表,列表的结构为:子树根结点的值后跟用“()”括起来的各子树的列表(若有子树的话),各子树的列表间用“,”分隔。例如,如下图所示的三叉树可用列表a(b(c,d),e,f(g,h,i))表示。本程序根据输入的列表生成一棵M叉树,并由M叉树再输出列表。【函数】#include#include#defineM3/*三叉树*/typedefstructnode{intval;structnode*subTree[M];}NODE;charbuf[255],*str=buf;NODE*d=NULL;NODE*makeTree()/*由列表生成M叉树*/{intk;NODE*s;s={{U}}(1){{/U}};s->val=*str++;for(k=0;k<M;k++)s->subTree[k]=NULL;if(*str=='('){k=0;do{str++;s->subTree[k]={{U}}(2){{/U}};if(*str==')'){str++;break;}k=k+1;}while({{U}}(3){{/U}});}returns;}voidwalkTree(NODE*t)/*由M叉树输出列表*/{inti;if(t!=NULL){{{U}}(4){{/U}};if(t->subTree[0]==NULL)return;putchar('(');for(i=0;i<M;i++){{{U}}(5){{/U}};if(i!=M-1}putchar(')');}}voidmain(){printf("Enterexp:");scanf("%s",str);d=makeTree();walkTree(d);putchar('/n');}
进入题库练习
问答题试题四(共15分)阅读以下说明和C函数,填充函数中的空缺,将解答填入答题纸的对应栏内。[说明]已知两个整数数组A和B中分别存放了长度为m和n的两个非递减有序序列,函数Adjustment(A,B,m,n)的功能是合并两个非递减序列,并将序列的前m个整数存入A中,其余元素依序存入B中。例如:合并过程如下:从数组A的第一个元素开始处理。用数组B的最小元素B[0]与数组A的当前元素比较,若A的元素较小,则继续考查A的下一个元素;否则,先将A的最大元素暂存入temp,然后移动A中的元素挪出空闲单元并将B[0]插入数组A,最后将暂存在temp中的数据插入数组B的适当位置(保持B的有序性)。如此重复,直到A中所有元素都不大于B中所有元素为止。[C函数]
进入题库练习