填空题【说明】在窗体上设计两个文本框和两个标签,标签上显示:“摄氏温度:”和“华氏温度:”,文本框一个用于输入摄氏温度数,一个用于输出对应的华氏温度。摄氏温度与华氏温度的转换公式为:c=(5/9)×(f-32)要求:对输入的摄氏温度数有检查功能,以拒绝接收非数字字符。运行界面如图所示。【VisualBasic代码】PrivateSubCommandl_Click()Text1=""Text2=""Text1.Enabled=TrueText2.Enabled=TrueText1.SetFocusEndSubPrivateSubCommand2Click()EndEndSubPrivateSubFormLoad()Text1=""Text2=""Text1.Enabled=FalseText2.Enabled=FalseEndSubPrivateSubTextl_Change()Text2.Text={{U}}(1){{/U}}EndSubPrivateSubTextl_KeyPress(KeyAsciiAs{{U}}(2){{/U}})If{{U}}(3){{/U}}ThenIfChr(KeyAscii)<"0"Or{{U}}(4){{/U}}Then{{U}}(5){{/U}}EndIfEndIfEndSub
填空题【说明】 输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组。 【函数】 main ( ) int number[10]; input (number); max min (number); output (number); input (number) int number[10]; int i; for ( i=0;i<9;i++ ) scanf ( "%d,", scanf ( "%d", max_min ( array ) int array[10]; int *max,*min,k,1; int *p,*arr_end; arr end= (1) ; max=min=array; for ( p= (2) ;p<arr_end;p++ ) if( (3) ) max=p; else if ( *p<*min ) min=p; (4) ; l=*min; (5) ;array[0]=1;1=*p; *p=array[9];array[9]=k;k=*p; return; output ( array ) int array[10]; int *p; for ( p=array;p<array+9;p++ ) printf ( "%d,",*p ); printf ( "%d/n",array[9] );
填空题阅读以下说明和C程序,将应填入 (n) 处的字句写在答题纸的对应栏内。 [说明] 下面的程序按照以下规则输出给定名词的复数形式:a.若名词以“y”结尾,则删除y并添加“ies”;b.若名词以“s”、“ch”或“sh”结尾,则添加“es”;c.其他所有情况,直接添加“s”。 [C语言程序] # include <stdio.h> # include <string.h> char *plural (char *word) int n; char *pstr; n=strlen(word); /*求给定单词的长度*/ pstr=(char *) malloc(n+3); /*申请给定单词的复数形式存储空间*/ if (!pstr||n<2) return NULL; strcpy (pstr,word);/*复制给定单词*/ if( (1) ) pstr[n-1] = 'i-'; pstr[n]='e'; pstr[n+1]='s'; (2) ; else if(pstr[n-1]=='s' ||pstr[n-1]=='h' pstr[n+1]='s'; pstr[n+2]='\0'; else pstr[n]='s'; pstr[n+1]='\0'; (4) ; main ( ) int i; char *ps; char wc[9][10]="chair", "dairy", "boss", "circus", "fly", "dog", "church", "clue", "dish"); for(i=0; i<9; i++) ps= (5) ; printf("%s: %s\n",wc[i],ps); /*输出单词及其复数形式*/ free (ps);/*释放空间*/ system ("pause");
填空题[说明1]函数BTREE*SortTreeSearch(BTREE*tree,intkey)采用非递归方法,在二叉排序树(二叉查找树)中查找键值为key的结点。若找到,则返回键值所在结点的指针,否则返回NULL。typedefstructnodeintdata;/*结点的键值*/structnode*left;structnode*right;[C程序代码1]以上[C程序代码1]中共有3处错误。请在表8-5中指出这些错误所在代码的行号,并在不增加和删除代码行的情况下进行修改,写出修改正确后的完整代码行。
填空题[函数2.1说明] 假设两个队列共享一个循环向量空间,其类型Queue2定义如下: typedef struct DateType data [MaxSize]; int front[2],rear[2]; Queue2; 对于i=0或1,front[i]和rear[i]分别为第i个队列的头指针和尾指针。函数EnQueue(Queue2 *Q,int i,DateType x)的功能是实现第i个队列的入队操作。 [函数2.1] int EnQueue(Queue2 *Q,int i,DateType x) /*若第i个队列不满,则元素x入队列,并返回1,否则返回0*/ if (i<0 || i>1) return 0; if(Q->rear [i] ==Q->front[ (1) ]) return 0; Q->data[ (2) ]=x; Q->rear [i]= (3) ; return 1; [函数2.2说明] 函数int BtreeEquaI(BinTreeNode *T1,BinTreeNode *T2)的功能是递归判断两棵二叉数是否相等,若相等则返回1,否则返回0。当两棵树的结构完全相同,并且对应结点的值也相同时才被认为相等。 已知二叉树中的结点类型定义为: struct BinTreeNode char data; BinTreeNode *left,*right; ; 其中data为结点值域,left和right分别为指向左、右子女结点的指针域。 [函数2.2] int BtreeEqual(BinTreeNode *T1,BinTreeNode *T2) (if (T1==NULL&&T2==NULL) return 1; else if ( (4) ) return 0; else if( (5) ) return 1; else return 1;
填空题[说明] 已知类SubClass的getSum方法返回其父类成员i与类SubClass成员j的和,类SuperClass中的getSum为抽象函数,程序中的第14行有错误,请修改该错误并给出修改后的完整结果,然后完善程序中的空缺,当程序运行到第22行且尚未执行第22行语句时成员变量i的值,最后给出程序运行后的输出结果。 [Java代码] 行号 代码 01 public class Mainjava 02 public static void main(String[] args) 03 SuperClass s = new SubClass () ; 04 System. out .println (s. getValue ()) ; 05 System. out .println (s.getSum ()) ; 06 07 08 abstract class SuperClass 09 private int i; 10 public SuperClass () i= 5; 11 public int getValue () 12 return i; 13 14 public final abstract int getSum(); 15 16 class SubClass extends SuperClass 17 int j; 18 public SubClass () 19 this (-3); 20 21 public SubClass (int j) 22 (1) .j=j; 23 24 public int getValue () return j; 25 public int getSum() 26 return (2) . getValue() + j; 27 28
填空题[说明] 编写一个函数,输入为偶数时,调用函数求1/2+?/+…+1/n,当输入n为奇数时,调用函数1/1+1/3+…+1/n (利用指针函数)。[函数] #include "stdio. h", main() float peven (),podd (),dcall (); float sum; int n; while (1) scanf("%d",&n); if (n>1) break; if(n%2==0) printf("Even="): (1); else pfinff("Odd="); (2) ; printf("%f",sum); float peven (int n) float s; int i s=1; for(i=2;i<=n;i+=2) (3) ; return (s); float podd (n) int n; float s; int i; s=0; for(i=1 i<=n;i+=2) (4) ; return (s); float dcall(fp,n)float (*fp) ();int n;float s; (5) ;returu (s);
填空题[说明]某绘图系统中有两个画矩形的程序DP1和DP2。程序DP1用函数drawaline(x1,y1,x2,y2)画一条直线,程序DP2则用函数drawline(x1,x2,y1,y2)画一条直线。当实例化矩形时,确定使用DP1还是DP2。为了适应变化,包括“不同类型的形状”和“不同类型的画图程序”,将抽象部分与实现部分分离,使它们可以独立地变化。若将“抽象部分”对应“形状”,“实现部分”对应“画图”,与一般的接口(抽象方法)和具体实现不同,则将这种应用称为Bridge(桥接)模式。图8-9显示了该系统与矩形绘制相关的各个类之间的关系。系统始终只处理3个对象:Shape对象、Drawing对象,以及DP1或DP2对象。以下是C++语言的实现过程,能够正确编译通过。[C++程序]classDP1public:staticvoiddrawaline(doublex1,doubley1,doublex2,doubley2)…//省略具体实现;classDP2public:staticvoiddrawline(doublex1,doublex2,doubley1,doubley2)//省略具体实现;ClassDrawingPublic:virtualvoiddrawLine(doublex1,doubley1,doublex2,doubley2)=0;;classV1Drawing:publicDrawingpublic:voiddrawLine(doublex1,doubley1,doublex2,doubley2)DP1::draw_a_line(x1,y1,X2,y2);;classV2Drawing:publicDrawingpublic:voiddrawLine(doublex1,doubley1,doublex2,doubley2)(1);;classShapePrivate:(2)_dp;Public:Shape(Drawing*dp);(3)voiddraw()=0;voiddrawLine(doublex1,doubley1,doublex2,doubley2);;Shape::Shape(Drawing*dp)_dp=dp;voidShape::drawLine(doublex1,doubley1,doublex2,doubley2)//画一条直线(4);classRectangle:public(5)private:double_x1,_y1,_x2,_y2;public:Rectangle(Drawing*dp,doublex1,doubley1,doublex2,doubley2);voiddraw();;Rectangle::Rectangle(Drawing*dp,doublex1,doubley1,doublex2,doubley2):(6)_x1=x1;_y1=y1;_x2=x2;_y2=y2;voidRectangle::draw()…//省略具体实现
填空题阅读以下函数说明和C语言函数,将应填入{{U}} (n) {{/U}}处的字句写在对应栏内。
[说明]
函数int psort(int a[],int n)实现将含n个整数的数组a[]的不同元素按从小到大顺序存于数组a[]中。实现方法是从未确定的元素列中找到最小元素并将a[]的第i最小元素交换至a[i]位置。如该最小元素比已确定的最后一个最小元素大,则将它接在已确定的元素序列的后面;否则,忽视该元素。
[C函数]
int psort(int a[],int n)
{int i,J,k,P;
for(i=0,k=0;i<{{U}} (1) {{/U}};i++){
for(j=i+1, {{U}}(2) {{/U}};j<n; j++)
if(a[p]>a[j])
p=j;
if(p!=i){
t=a[p];
a[p]=a[i];
a[i]=t;
}
if({{U}} (3) {{/U}}) k++;
else if({{U}} (4) {{/U}}<a[i])
{{U}} (5) {{/U}}=a[i];
}
return k;
}
int a[]={5,7,5,6,4,3,4,6,7};
main()
{int k,n;
for(k=0;k<(Sizeof a)/Sizeof(int);k++)
printf("%5d",a[k]);
printf ("/n/n");
n=psort(a,(sizeof(a))/sizeof(int));
for(k=0;k<n;k++)
printf("%5d",a[k]);
printf("/n/n");
}
填空题【说明】
以下程序的功能是计算三角形、矩形和正方形的面积并输出。
程序由4个类组成:类Triangle、Rectangle和Square分别表示三角形、矩形和正方形;抽象类Figure提供了一个纯虚拟函数getArea(),作为计算上述3种图形面积的通用接口。
【C++程序】
#include<iostream.h>
#include<math.h>
class Figure {
public:
virtual double getArea()=0; //纯虚拟函数
};
class Rectangle:{{U}} (1) {{/U}}{
protected:
double height;
double width;
public:
Rectangle() {};
Rectangle(double height,double width) {
this->height=height;
this->width=width;
}
double getArea() {
return{{U}} (2) {{/U}};
}
};
class Square:{{U}} (3) {{/U}}{
public:
Square(double width){
{{U}} (4) {{/U}};
}
};
class Triangle:{{U}} (5) {{/U}}{
double la;
double lb;
double lc;
Public:
Triangle(double la, double lb, double lc) {
This->la=la; this->lb=lb; this->lc=lc;
}
double getArea() {
double s = (la+lb+±c)/2.0;
return sqrt(s,(s-la)*(s-lb)*(s-Ic));
}
};
void main() {
Figure*figures[3]={
new Triangle(2,3,3), new Rectangle(5,8), new SqUare(5));
for(int i=0;i<3;i++){
cout<<"figures["<<i<<"]area="<<(figures[i])->getArea()<<endl;
}
}
填空题[说明] 下面程序实现十进制向其他进制的转换。 [C++程序] #include "iostream.h" #include "math.h" #include <conio.h> typedef struct node int data; node *next; Node; class Transform public : void Trans (int d,int i) ; //d为数字;i为进制 void print () ; private : Node *top; void Transform::Trans(int d,int i) int m,n=0; Node *p; while (d>0) (1) ; d=d/i; p=new Node; if(!n) p->data=m; (2) ; (3) ; n++; else p->data=m; (4) ; (5) ; void Transform: :print () Node *p; while (top ! =NULL) p=top; if (p->data>9) cout<<data+55 ; else cout<<data; top=p->next ; delete p;
填空题[说明]某大学城图书馆需要在无线阅览厅的某些位置上放置无线接入点AP(AccessPoin)。假设每个无线AP覆盖范围的半径是6米,因此必须使得每台笔记本计算机上的无线网卡到某个无线AP的直线距离不超过6米。为了简化问题,假设所有无线网卡都在同一直线卜,并且无线AP沿该直线放置。该问题可以建模为如图8-1所示,其中直线表示无线网卡所在的直线,实心正方形表示无线网卡。现采用贪心策略来实现用尽可能少的无线AP覆盖所有的无线网卡。基于贪心算法实现以上应用需求的基本思想是:问题的规模为N,从第1个无线网卡(最左端)开始布局无线AP,把第1个无线AP放置在该无线网卡右方的6米处,此时该无线AP会覆盖从第1个无线网卡到该无线网卡右方直线长度为12米的所有无线网卡,假设覆盖了N1个无线网卡。此时间题规模变成了N-N1,接着把第1个无线AP覆盖的无线网卡去掉,再从N-N1中选择第1个(最左端)无线网卡开始布局无线AP,将第2个无线AP放置在该无线网卡右方的6米处。依此布局,直到覆盖所有的无线网卡为止。图8-2是问题解的模型,其中,直线表示无线网卡所在的直线,实心正方形表示无线网卡,实心圆形表示无线AP,虚线圆对应无线AP为圆心,虚线圆的直径为相应无线AP的覆盖范围(12米)。实现以上贪心算法的流程如图8-3所示。其中,①d[i](1≤i≤N)表示第i张无线网卡到通道A端的距离,N表示无线网卡的总数,无线网卡的编号按照无线网卡到通道A端的距离从小到大进行编号;②s[k]表示第k(k≥1)个无线AP到通道A端的距离。算法结束后,k的值为无线AP的总数。
填空题[说明] 设有一个带头结点的双向循环链表L,每个结点有4个数据成员:指向前驱结点的指针prior、指向后继结点的指针next、存放数据的成员data和访问频度freq。所有结点的freq初始时都为0。每当在链表上进行一次L.Locate(x)操作时,令元素值x的结点的访问频度freq加1,并将该结点前移,链接到现在它的访问频度相等的结点后面,使得链表中所有结点保持按访问频度递减的顺序排列,以使频繁访问的结点总是靠近表头。 [函数] void Locate(int &x) <结点类型说明> *p=first->next; while(p!=first && (1) )p=p->next; if(p!=first) (2) ; <结点类型说明> *current=p; current->prior->next=current->next; current->next->prior=current->prior; p=current->prior; while(p!=first && (3) )p=p->prior; current->next= (4) ; curren->prior=p; p->next->prior=current; p->next= (5) ; else printf("sorry.Not find! /n");
填空题阅读以下说明和Java程序,将应填入{{U}} (n) {{/U}}处的字句写在对应栏内。
[说明]
下面程序实现十进制向其它进制的转换。
[Java程序]
ClasS Node{
int data;
Node next;
}
class Transform{
private Node top;
public void print(){
Node p;
while(top!=null){
P=top;
if(P.data>9)
System.out.print((char)(P.data+55));
else
System.out.print(p.data);
top=p.next;
}
}
public void Trans(int d,int i){//d为数字;i为进制
int m;
{{U}} (1) {{/U}}n=false;
Node p;
while(d>0){
{{U}} (2) {{/U}};
d=d/i;
p=new Node();
if({{U}} (3) {{/U}}){
p.data=m;
{{U}} (4) {{/U}};
top=P;
n=true;
}
else{
p.data=m;
{{U}} (5) {{/U}};
top=P;
}
}
}
}
填空题【说明】 为了减少直接插入排序关键字的比较次数,本算法使用了二分(折半)插入法对一个无序数组R[1.n]进行排序。排序思想是对一个待插入元素,先通过二分法(折半)找到插入位置,后移元素后将该元素插入到恰当位置(假设R[]中的元素互不相同)。 【算法】 1.变量声明 X:DataType i,j,low,high,mid,R[0..n]) 2.每循环一次插入一个R[i] 循环:i以1为步长,从2到n,反复执行 ①准备 X<-R[i]; (1) ;high<-i-1; ②找插入位置 循环:当 (2) 时,反复执行 (3) ; 若X.key<R[mid].key 则high<-mid-1 否则 (4) ③后移 循环:j以-1为步长,从 (5) ,反复执行 R[j+1]<-R[j] ④插入 R[low]<-X 3.算法结束
填空题[说明] 用输入/输出写一个程序,让用户输入一些姓名和电话号码。每一个姓名和号码将加在文件里。用户通过点“Done”按钮来告诉系统整个列表已输入完毕。 如果用户输入完整的列表,程序将创建一个输出文件并显示或打印出来。格式如:555,1212,Tom 123-456-7890,Peggy L.234-5678,Marc 234-5678,Ron 876-4321,Beth byte [] name=new byte [lineLength]; int i; try fos= new FileOutputStream ("phone. numbers"); catch (FileNotFoundException e) while (true) (1) ("Enter a name (enter 'done' to quit)"); (2) (name); if ("done". equalsIgnoteCase (new String (name,0,0,4))) break; System.err.println ("Enter the phone number"); readLine (phone); for (int i=0;phone [i]!=0;i++) (3) ; fos.write (','); for (int i=0 (4) ;i++) fos. write (name [i]); fos. write ('/n'); fos. close(); private static void readLine (byte line []) throws IOException int i=0,b=0; while ((i< (5) ) line[i]= ( byte ) 0;
填空题[说明]字符组合:程序界面如图示,在文本框Text1中输入若干个任意字符,单击“颠倒”按钮,将这些字符按相反的顺序显示在标签Lable1中,并在标签Labs12处显示字符的个数。例如:输入abcabc2,显示为2cbabca,组成字符数为4。[VisualBasic代码]PrivateSubcmdshow_Click(DimnAsIntegerDimIAsIntegerDimstr1AsStringN=Len(Text1.Text)ForI=nToStep-1Str1=(1)NextILabe11.Caption=Str1EndSubPrivateSubcmdcount_Click()DimnAsIntegerDiminAsIntegerDimiAsIntegerDimjAsIntegerDimflagAsIntegerDimstr1AsIntegerDimstr2AsIntegerN=(2)Str1=Mid$(Text1.Text,i.1ForI=2TonStr2=mid$(Text1,Text,I,1M=Len(str1)(3)Forj=1TomIf(4)Thenflag=1;ExitForNextjIfflag<>1thenstr1=str1&str2NextILable2.Caption=(5)EndSub
填空题阅读以下函数说明和C语言函数,将应填入 (n) 处的字句写在对应栏内。 [说明] 这是一个求解Josephus问题的函数。用整数序列1,2,3…,n表示顺序围坐在圆桌周围的人,并采用数组表示作为求解过程中使用的数据结构。Josephus问题描述,设n个人围坐在一个圆桌周围,现在从第s个人开始报数,数到第m个人,让他出局;然后从出局的下一个人重新开始报数,数到第m个人,再让他出局,…如此反复直到所有的人全部出局为止。 [C函数] void Josephus(int A[],int n,s,m) (int i,j,k,temp; if(m==O) printf("m=0是无效的参数!/n"); return; for(i=0;i<n;i++) A[i]=i+1; /*初始化,执行n次*/ i= (1) /*报名起始位置*/ for(k=n;k>1;k-) if( (2) ) i=0; i= (3) /*寻找出局位置*/ if(i!=k-1) tmp=A[i]; for(j=i;J<k-1;j++) (4) ; (5) ; for(k=0;k<n/2;k++) tmp=A[k];A[k]=A[n-k+1];A[n-k+1]=tmp;
填空题【说明】 下面程序的功能是找出所有三位数中,个、十、百位数字的立方和等于该数本身的三位数并显示。在程序的每条横线处填写一个适当的词或语句,使程序的功能完整。 public (1) class cube_Root public static void (2) main(String args[]) System. out. println ("个、十、百位数字的立方和等于该数本身的三位数有:"); for(int n=100;n<1000;n++) int a,b,c; (3) b=n/10%10; (4) if( (5) ) System.out.println(n);
填空题【说明】下列流程图(如图4所示)用泰勒(Taylor)展开式sinx=x-x3/3!+x5/5!-x7/7!+…+(-1)n×x2n+1/(2n+1)!+…【流程图】计算并打印sinx的近似值。其中用ε(>0)表示误差要求。
