问答题Java与C/C++有什么异同
问答题内核线程和用户线程的区别
问答题 阅读下列函数说明和C代码,把应填入其中n处的字句写在答卷的对应栏内。
【函数2说明】
本题中的函数encode()和decode()分别实现对字符串的变换和复原。变换函数encode()顺序考察已知字符串的字符,按以下规则逐组生成新字符串:
1.若已知字符串的当前字符不是数字字符,则复制该字符于新字符串中。
2.若已知字符串的当前字符是一个数字字符,且它之后没有后继字符,则简单地将它自己复制到新字符串中。
3.若已知字符串的当前字符是一个数字字符,并且还有后继字符,设该数字字符的面值为n,则将它的后续字符(包括后续字符是一个数字字符)重复复制n+1次到新字符串中。
4.以上述一次变换为一组,在不同组之间另插入一个下划线字符“-”用于分隔。例如。encode()函数对字符串26a3t2的变换结果为666_a_tttt_2
复原函数decode()做变换函数encode()的相反的工作。即复制不连续相同的单个字符,而将一组连续相同的字符(不超过10个)变换成一个用于表示重复次数的数字字符和一个重复出现的字符,并在复原过程中掠过变换函数为不同组之间添加的一个下划线字符。
假定调用变换函数encode()时的已知字符串中不包含下划线字符。 【函数2】
int encode(char*instr,char * outstr) {
char*ip,*op,c;int k,n; ip=instr;op=outstr;
while(*ip){ if{{U}} (1)
{{/U}}&&*(ip+1){ n= *ip -'0'+ 1;
c= *++ip; for(k=0;k<=n;k++) {{U}} (2)
{{/U}}; } else{{U}} (3) {{/U}};
*op++ ='-'; ip++; }
if(op>outstr) {{U}}(4) {{/U}}; *op='/0';
return op-outstr; } int decode(char *
instr,char * outstr) {char*ip,*op,c;int n;
ip=instr;op=outstr; while(*ip){ c=
*ip;n=0; while(*ip==c && n<=10){ip++;n++;}
if{{U}} (5) {{/U}}*op++='0'+n-1; *op++=c;
if(* ip=='_',) {{U}}(6) {{/U}}; } *
op='/0'; return op-outstr; }
问答题Form Bean的表单验证流程是什么
问答题 阅读以下说明和Java代码,将应填入(n)处的字句写在对应栏内。
【说明】
下面的Java程序能够根据用户的输入网址,显示相应网站的内容,并能够跟踪网站的超链接,显示链接的网页。注意输入网址的方式是参数方式。用户未输入网址的情况下,将显示清华大学的主页。
类LinkFollower的对象用于跟踪超链接,类explorer用于显示网页。
【Java程序】 import javax. swing. text.*;
import javax. swing. *; import java. net. *;
import java.io.*; import java.awt.*;
import javax.swing.event.*; class LinkFollower{{U}}
(1) {{/U}}HyperlinkListener {
JEditorPane pane; public
LinkFollower(JEditorPane pane) {
this. pane=pane;
} public void hyperlinkUpdate(HyperlinkEvent
evt) {
if(evt. getEventType()= =HyperlinkEvent. EventType.ACTIVATED)
{
try{
pane.setPage(evt. getURL());
}catch(Exception e){}
} } } public
class explorer { public static
void main(String[] args) {
String iipage="http://www.tsinghua.edu.cn/";
if(args.length>0)iipage={{U}} (2)
{{/U}}; JEditorPane jep=new
JEditorPane(); jep.
setEditable(false);
jep.addHyperlinkListener{{U}} (3) {{/U}};
try {
jep.setPage{{U}} (4)
{{/U}}; }
catch(IoExceptione)
{
System.err. println("Usage:java SimpleWebBrower url");
System.err. println(e);
System.exit(-1);
}
JScrollPane scrollpane=new JScrollPane(jep);
JFrame f=new JFrame("我的浏览器");
f.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
f.getContentPane().add(scrollpane);
f. setSize(512,342);
f.{{U}} (5) {{/U}};
} }
问答题分段和分页的区别是什么
问答题阅读下列算法说明和算法,将应填入(n)处的字句写在对应栏内。【算法说明】为便于描述屏幕上每个像素的位置,在屏幕上建立平面直角坐标系。屏幕左上角的像素设为原点,水平向右方向设为x轴,垂直向下方向设为y轴。设某显示器在每条水平线和每条垂直线上都有128个像素。这样,屏幕上的每个像素可用坐标(x,y)来描述其位置,其中x和y都是整数,0≤x≤127,0≤y≤127。现用一维数组MAP来存储整个屏幕显示的位图信息。数组的每个元素有16位二进位,其中每位对应一个像素,“1”表示该像素“亮”,“0”表示该像素“暗”。数组MAP的各个元素与屏幕上的像素相对应后,其位置可排列如下:MAP(0),MAP(1),……,MAP(7)MAP(8),MAP(9),....,MAP(15)MAP(1016),MAP(1017),……,MAP(1023)下述算法可根据用户要求,将指定坐标(x,y)上的像素置为“亮”或“暗”。在该算法中,变量X,Y,V,S,K都是16位无符号的二进制整数。数组BIT中的每个元素BIT(K)(K=0,…,15)的值是左起第K位为1,其余位均为0的16位无符号二进制整数,即BIT(K)的值为215-k。【算法】第1步、根据用户指定像素的位置坐标(x,y),算出该像素的位置所属的数组元素MAP(V)。这一步的具体实现过程如下:1、将x送变量X,将y送变量Y;2、将Y(1)移3位,仍存入变量Y;3、将X右移(2)位,并存入变量S;4、计算Y+S,存入变量V,得到像素的位置所属的数组元素MAP(V)。第2步、算出指定像素在MAP(V)中所对应的位置K(K=0,…,15)。这一步的具体实现过程如下:将变量X与二进制数1111进行逻辑(3)运算,并存入变量K。第3步、根据用户要求将数组元素MAP(V)左起第K位设置为“1”或“0”。这一步的具体实现过程如下:1、为在指定像素置“亮”,应将MAP(V)与(4)进行逻辑或运算,并存入MAP(V)。2、为在指定像素置“暗”,应先将BIT(K)各位(5),再将MAP(V)与BIT(K)进行逻辑与运算,并存入MAP(V)。
问答题阅读以下说明和流程图,回答下面问题。[说明]图1所示的流程图中有两个判断条件A>0和B>0。这些判断条件的各种组合情况如图2所示。表中Y表示相应的条件成立,N表示相应的条件不成立。每一列表示一种条件组合,并在列首用相应的序号来表示。
问答题内存分配的形式有哪些
问答题[说明] “背包问题”的基本描述是:有一个背包,能盛放的物品总重量为S,设有N件物品,其重量分别为w1,W2,…,Wn,希望从N件物品中选择若干件物品,所选物品的重量之和恰能放入该背包,即所选物品的重量之和等于s。 如下程序均能求得“背包问题”的一组解,其中,程序1—8是“背包问题”的递归解法,而程序1-9是“背包问题”的非递归解法。 [程序1—8] #include<stdio.h> #define N 7 #define S 15 int W[N+1]=0,1,4,3,4,5,2,7; int knap(int s,int n) if(s==0)return 1; if(s if((1))) /*考虑物品n被选择的情况*/ printf("4d"w[n]);return 1; return(2); /*考虑不选择物品n的情况*/ main() if(knap(S,N))printf("OK!\n"); else printf("N0!/n"); [程序1-9] #include<stdio.h> #define N 7 #define S 15 typedef struct int s; int n; int job; KNAPTP; int w[N+1]=0,1,4,3,4,5,2,7); int knap(int S,int n); main() if(knap(S,N))printf("OK!/n"); else printf("NO!/n"); int knap(int s,int n) KNAPTP stack[100],x; int top,k,rep; x.s=s;x.n=n; x.job=0: top=1;stack[top]=x; k=0: while((3)) x=stack[top]; rep=1: while(!k&&rep) if(x.s=0)k=1; /*已求得一组解*/ else if(x.s<0 || x.n<=0)rep=O; elsex.s(4);x.job=1; (5)=x: if(!k) rep=1; while(top>=1&&rep) X=stack[top--]; if(x.job==1) x.S+=w[x.n+1]; x.job=2; stack[++top]=x: (6); if(k) */输出一组解*/ while(top>=1) x=stack[top--]; if(x.job==1) printf("M/t, w[x.n+1]); return k;
问答题什么是继承
问答题如何实现队列
问答题C++中函数调用有哪几种方式
问答题试题四(共15分)阅读以下说明和代码,填补代码中的空缺,将解答填入答题纸的对应栏内。【说明】图是很多领域中的数据模型,遍历是图的一种基本运算。从图中某顶点v出发进行广度优先遍历的过程是:①访问顶点v;②访问V的所有未被访问的邻接顶点W1,W2,..,Wk;③依次从这些邻接顶点W1,W2,..,Wk出发,访问其所有未被访问的邻接顶点;依此类推,直到图中所有访问过的顶点的邻接顶点都得到访问。显然,上述过程可以访问到从顶点V出发且有路径可达的所有顶点。对于从v出发不可达的顶点u,可从顶点u出发再次重复以上过程,直到图中所有顶点都被访问到。例如,对于图4-1所示的有向图G,从a出发进行广度优先遍历,访问顶点的一种顺序为a、b、c、e、f、d。设图G采用数组表示法(即用邻接矩阵arcs存储),元素arcs[i][j]定义如下:图4-1的邻接矩阵如图4-2所示,顶点a~f对应的编号依次为0~5.因此,访问顶点a的邻接顶点的顺序为b,c,e。函数BFSTraverse(GraphG)利用队列实现图G的广度优先遍历。相关的符号和类型定义如下:#defineMaxN:50/*图中最多顶点数*/typedefintAdjMatrix[MaxN][MaxN];typedefstruct{intvexnum,edgenum;/*图中实际顶点数和边(弧)数*/AdjMatrixarcs;/*邻接矩阵*/)Graph;typedefintQElemType;enum{ERROR=0;OK=l};代码中用到的队列运算的函数原型如表4-1所述,队列类型名为QUEUE。【代码】intBFSTraverse(GraphG){//图G进行广度优先遍历,图采用邻接矩阵存储unsignedchar*visited;//visited[]用于存储图G中各顶点的访问标志,0表示未访问intv,w;u;QUEUEQQ;∥申请存储顶点访问标志的空间,成功时将所申请空间初始化为0visited=(char*)calloc(G.vexnum,sizeof(char));If((1))retumERROR;(2);//初始化Q为空队列for(v=0;v
问答题如何检测一个链表是否有环
问答题C语言中struct与union的区别是什么
问答题试题一(共15分)阅读以下说明和流程图,填补流程图中的空缺,将解答填入答题纸的对应栏内。【说明】设有整数数组A[1:N](N>1),其元素有正有负。下面的流程图在该数组中寻找连续排列的若干个元素,使其和达到最大值,并输出其起始下标K、元素个数L以及最大的和值M。例如,若数组元素依次为3,-6,2,4,-2,3,-1,则输出K=3,L=4,M=7。该流程图中考察了A[1:N]中所有从下标i到下标j(j≥i)的各元素之和S,并动态地记录其最大值M。【流程图】【流程图】注:循环开始框内应给出循环控制变量的初值和终值,默认递增值为1,格式为:循环控制变量=初值,终值
问答题如何统计一行字符中有多少个单同