填空题1】【应用说明5.1】本应用程序的窗体中有一个下拉式列表框(名称为Combo1)和两个文本框(名称分别为Txt1和Txt2)。运行时,用户从Combo1的列表中进行选择,程序就会将选中条目的内容以及编号(从0开始)分别在文本框Txt1和Txt2中显示出来。【程序代码5.1】PrivateSubCombo1_Click()Txt1.Text=Combo1.{{U}}(1){{/U}}Txt2.Text=Combo1.{{U}}(2){{/U}}EndSub(注:可供(2)处选择的选项:List,Index,Listlndex,ListCount,Number)【应用说明5.2】本应用程序的运行窗口如图2所示。开发该应用的部分程序代码如下:【程序代码5.2】PrivateSubCmbOp_Click()DimDatalnAsDouble,DataOutasDoubleDataln={{U}}(3){{/U}}SelectCase{{U}}(4){{/U}}Case"取整数部分"DataOut=Int(Dataln)Case"求平方根"IfDataln<0ThenMagBox"负数不能开平方!"ElseDataOut=Sqr(Dataln)EndIfCase"取绝对值"DataOut=Abs(Dataln){{U}}(5){{/U}}TxtOut.Text=str$(DataOut)EndSub
填空题
阅读以下说明和Java程序代码,将应填入(n)处的字句写在答题纸的对应栏内。 [说明]
在下面的Java程序代码中,类SalesTicket能够完成打印票据正文的功能,类
HeadDecorator与FootDecorator分别完成打印票据的抬头和脚注的功能。己知该程序运行后的输出结果如下所示,请填补该程序代码中的空缺。
这是票据的抬头! 这是票据正文! 这是票据的脚注!
--------------------------------------- 这是票据的抬头!
这是票据的脚注! [Java程序代码] public class
SalesTicket{ public void printTicket(){
System.out.println("这是票据正文!");
} } public class Decorator
extends SalesTicket{ SalesTicket ticket;
public Decorator(SalesTicket t){
ticket =t; }
public void printTicket(){
if(ticket!=null)
ticket. printTicket(); }
} public class HeadDecorator extends Decorator{
public HeadDecorator(SalesTicket t){
{{U}} (1) {{/U}};
} public void printTicket(){
System.out.rintln("这是票据的抬头!");
Super.printTicket();
} } public class FootDecorator extends
Decorator{ public FootDecorator(SalesTicket
t){ {{U}} (2)
{{/U}}; } public
void printTicket(){
super.printTicket();
System.out.println("这是票据的脚注!"); }
} public class Main{ public
static void main(String[] args){
Decorator T= new
HeadDecorator({{U}} (3) {{/U}});
T.{{U}} (4) {{/U}};
System.out.println("-----------------------------------------");
T=new FootDecorator({{U}} (5)
{{/U}});
T.printTicket(); } }
填空题[说明] 函数print (BinTreeNode *t; DateType &x)的功能是在二叉树中查找值为x的结点,并打印该结点所有祖先结点。在此算法中,假设值为x的结点不多于一个。此算法采用后序的非递归遍历形式。函数中使用栈ST保存结点指针ptr以及标志tag,Top是栈顶指针。 [函数] void print (BinTreeNode * t; DateType &x) stack ST;int i,top;top=0; //置空栈 while (t ! =NULL && t->data ! =x || top ! =0) while (t!=NULL && t->data !=x) //寻找值为x的结点 (1) ; ST [top].ptr=t; ST[top].tag=0; (2) ; if(t!=Null && t->data==x) //找到值为x的结点 for(i=1; (3) ; i++) printf("%d", ST [top].ptr->data); else while( (4) ) top--; if(top>0) ST [top] .tag=1; (5) ;
填空题[说明]函数DelXInsY(LinkedListLx,LinkedListLy,intkey1,intkey2,intlen)的功能是,将线性表X中关键码为key1的结点开始的len个结点,按原顺序移至线性表Y中关键码为key2的结点之前,若移动成功,则返回0;否则返回-1。线性表的存储结构为带头结点的单链表,Lx为表X的头指针,Ly为表Y的头指针。单链表结点的类型定义如下。typedefstructnodeintkey;structnode*next;*LinkedList;[C程序代码]
填空题[说明]喜迎2012年伦敦夏季奥运会!以下[C程序代码]能将一个给定汉字(例如,奥运会的“会”字)的点阵逆时针旋转90度,并输出旋转前后的点阵数据及字形。图8-8是汉字“会”字的16×16点阵字形,用数字0表示空白位置,用数字1表示非空白位置,“会”字的第1行即可表示成如下的0,1序列。0000000100000000若将它看做一个字的16个位,则“会”字的第1行可以用16进制数的0100来表示。同理,“会”字的第2行可以用16进制数的0240表示,第3行可以用16进制数的0420表示,……。以此类推,用16个双字节整型数即可存放一个汉字点阵字形。“会”字的点阵数据及字形如图8-8的左半部分所示。将一个汉字逆时针旋转90度,就是把该汉字点阵的最右列作为旋转后新点阵的第1行,次最右列作为旋转后新点阵的第2行,……,以形成一个旋转后的点阵字形。图8-8的右半部分就是将“会”字逆时针旋转90度后的点阵数据和字形(提示:读者可将书本顺时针旋转90度,以查看旋转90度后的点阵字形)。在[C程序代码]中,数组old中存放着“会”字的16个双字节整型点阵数据。函数turnleft能将该点阵数据逆时针旋转90度,旋转后的点阵数据存放在数组new中。函数display能将旋转前后的点阵数据加以编辑,用点字符“.”表示值为0的位,用字符“x”表示值为1的位,从而将旋转前后的点阵按行输出其16进制的数据及字形,如图8-8所示。[C程序代码]#include<stdio.h>#defineEMPTY'.'#defineNONEMPTY'x'#defineLEFT0#defineRIGHT1main()staticunsignedold[16]=0x0100,0x0240,0x0420,0x0810,0x1004,0x23c2,0x4001,0x8ff8,0x0100,0x0200,0x0400,0x0800,0x1000,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((1);k<16;k++)new[row]|=((old[k]>>(2))display(old,new)unsicned*old,*new;charout[2][17],letter[2];introw,col;letter[0]=EMPTY;letter[1]=NONEMPTY;out[LEFT][16]=out[RIGHT][16]=(4);for(row=0;row<16;row++,old++,new++)for(col=0;coi<16;++col)out[LEFT][col]=letter[((5))out[RIGHT][col]=letter[((6))printf("/n%4x%s",*old,
填空题1说明】 【函数2.1说明】 函数stremp()是比较两个字符串s和t的大小。若s<t函数返回负数;若s=t函数返回0;若s>t,函数返回正数。 【函数2.1】 int strcmp(char * s,char * t) while(* st++; return (2) ; 【程序2.2说明】 在n行n列的矩阵中,每行都有最大的数,本程序求这n个最大数中的最小一个。 【程序2.2】 #include<stdio.h> #define N 100 int a[N] [N]; void main() int row ,col,max,min,n; /* 输入合法n(n<100),和输入n×n个整数到数组a的代码略*/ for (row =0;row<n;row++) for(max=a[row] [0],col=1;col<n;col++) if( (3) )max=a[row][col]; if( (4) )min=max; else if( (5) )min=max; printf("The min of max numbers is %d/n",min);
填空题【说明】 找一个最小的自然数,使它等于不同的两组三个自然数的三次幂之和,即找最小的x,使得:x=a*a*a+b*b*b+c*C*c+d*d*d+e*e*e+f*f*f,其中,a、b、c、d、e、f者是是自然数,a≤b≤C≤d≤e≤f; [a,b,c]!=[d,e,f) 【C++程序】 #include<stdio.h> #define N 100 void main () int i,j,il,ih,i0,j0,k0,il,j 1,k1; int j1[N],jh[N];/*第i层平面的行的变化范围,自jl[i]至jh[i]*/ int k[N][N];/*第i层平面中,对应行j,当前的列号值为k[i][j]*/ int p[N], min;/*p[i]=i*i*i*/ i1=1;j1=1;k1=1;/*首先只局限下三角棱体的顶点*/ i1=1;ih=1;/*预置i的变化范围初值i1<=i<=ih*/ j1[1]=1;jh[1]=1;/*对应i层平面的行的变化范围*/ k[i1][j1[i1>=1;/*第i层平面中,对应行的列的初值*/ p[1]=1; do min=p[i1]+p[j1]+p[k1]; i0=i1;j0=j1;k0=k1; if ( i1==ih ) /*当前候选者在ih平面, 则ih增1*/ ih++; (1) ; /*为ih平面设定j的变化范围和对应k值*/ j1[ih]=1;jh[ih]=1;k[ih][1]=1; if ( i1==i1/*在i1平面最下角点找到候选者,i1增1*/ else if ( k1==1 k[i1][jh[i1>=1; if( k1==j1/*调整i1平面当前行的列号*/ i1=i1;/*预定最上平面的最小行的当前列为下一个候选者*/ j1=j1[i1]; k1=k[i1][j1]; for ( i=i1;i<=ih;i++ ) /*寻找最小值所在平面号、行号和列号*/ for ( j=j1[i];j<=jh[i];j++ ) if ( p[i]+p[j]+p[k[i][j>< (4) ) i1=i;j 1=j;k1=k[i][j]; while ( p[i1]+p[j1]+p[k1]!=min if ( p[i1]+p[j1]+p[k1]==min ) printf ( "%4d=%2d^3+%d^3+%dA3=%2d^3+%d^3+%d^3/n",min,i0,j0,k0,i1,j1,k1 ); else printf ( "The %d is too small./n",N );
填空题阅读以下说明和Java代码,将解答写在对应栏内。 [说明] 已知类Stock和类JavaMain都定义在JavaMain.java文件中,类stock的定义中有四处错误,分别在代码的第01、02、06、07行。请修改错误并给出修改后该行的完整代码,并写出改正错误后程序运行的输出结果。 [Java代码] 01 public class Stock 02 static 03 shares=0; 04 Share_val=0.0; 05 06 private Stock()tgetData(); 07 private Stock(int n,double pr=0) 08 shares=n; 09 share val=pr; 10 getData(); 11 12 public void getData() 13 System.out.print(shares+":"+share_val+" "); 14 15 Drivate int shares; //非静态变量 16 Drivate double share val; //非静态变量 17 ; 18 19 publiC class JavaMain 20 public static void main(String args[]) 21 Stock a=new Stock(); 22 Stock b=new Stock(1,67.5); 23 //其他代码省略,且代码无输出 24 25
填空题阅读以下函数说明和C语言函数,将应填入 (n) 处的字句写在对应栏内。 [说明] 函数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< (1) ;i++) for(j=i+1, (2) ;j<n; j++) if(a[p]>a[j]) p=j; if(p!=i) t=a[p]; a[p]=a[i]; a[i]=t; if( (3) ) k++; else if( (4) <a[i]) (5) =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");
填空题【说明】将A,B,C,D,E,F这6个变量排成如图(a)所示的三角形,这6个变量分别取[1,6]中的整数,且均不相同。求使三角形三条边上的变量之和相等的全部解。图(b)就是一个解。程序引入变量a,b,c,d,e,f,并让它们分别顺序取1~6的整数,在它们互不相同的条件下,测试由它们排列成的如图(a)所示的三角形三条边上的变量之和是否相等,如果相等即为一种符合要求的排列,就输出它们。【程序】voidmain()inta,b,c,d,e,f;for(a=1;a<=6;a++)for(b=1;b<=6;b++)if((1))continue;for(c==1;c<=6;c++)if((2))continue;for(d=1;d<=6;d++)if((3))continue;for(e=1;e<=6;e++)if((4))continue;f=21-(a+b+c+d+e);if((5))printf("%6d",a);printf("%4d%4d",b,f);printf("%2d%4d%4d",c,d,e);scanf("%*c");/*按回车键,继续找解*/
填空题[说明]
某班有n个同学,学号分别为1,2,…,n。为了每天指派若干个同学值日,他们放弃传统单调的轮留值日,别出心裁采用“定和值日”法:每天所指派值日同学的学号之和须等于其班号m(n<m<n(n+1)/2)并且规定:不允许任何两天值日的同学完全一样。
编程使n个同学按定和m值日(正整数n、m均从键盘输入,约定n<50,m<100),求出可持续的值日天数f(n,m)。运行程序,具体求出f(19,98)的值。
[函数]
main ( )
{
int b, p, i , m, n, k;
static int a[51][101]:
long s=0;
printf (" 请输入学生人数;");
scanf ( "%d",
printf (" 请输入定和值: ");
scanf ( "%d",
a[1][0]=1; a[1][1]=1; /* 数组元素赋初值*/
for ({{U}} (1) {{/U}}; j<=n; j++)
{
for (i=j;{{U}} (2) {{/U}}; i++) /* 计算 a (2, m),…, a(n, m)*/
{
{{U}} (3) {{/U}};
b=0,
for ( k=1 k<j-1; k++
{{U}} (4) {{/U}};
a[j][i]=b; }
{{U}} (5) {{/U}}; } /* 求和s 为所求结果*/
printf (" ");
printf ( "f ( %d, %d ) =%1d/n", n, m, s );
}
填空题[说明]下面的流程图用来说明如何利用数组求前n个质数。要确定一个数m是否是质数,可以用已知求出的质数对m的整除性来确定,对于任意整数m,如果它不能被小于它的质数整除,则m也是质数。注:primes[]是质数表,已经求得的质数的个数为pc。[问题]将流程图的(1)~(5)处补充完整。
填空题阅读以下函数说明和C语言函数,将应填入 (n) 处的字句写在对应栏内。 [说明1] 本程序输入一字符串,并将其中的大写字母变成小写字母。 [C函数1] #include<stdio.h> void main() int i=0; char s[120]; printf("Enter a string./n"); scanf("%s",s); while( (1) ) if( (2) ) s[i]=s[i]-'A'+'a'; i++; printf("%s/n",S); [说明2] 本程序用二分法,在已按字母次序从小到大排序的字符数组list[len]中,查找字符c,若c在数组中,函数返回字符c在数组中的下标,否则返回-1。 [C函数2] int search(char list[],char c,int len) ( intlow=0,high=len-1,k; while( (3) ); k=(10w+high)/2; if( (4) ) return k; else if( (5) )high=k-1; else low=k+1; return -1;
填空题阅读以下函数说明和C语言函数,将应填入 (n) 处的字句写在对应栏内。 [说明1] 函数void fun(char*w,char x,int*n)用来在w数组中插入x,w数组中的数已按由小到大顺序存放,n指存储单元中存放数组中数据的个数,插入后数组中的数仍有序。 [C函数1] void fun(char*W,char x,int*n) int i,P; p=0; w[*n]=x; while(x>w[p]) (1) ; for(i=*n,i>p;i--)w[i]= (2) ; w[p]=x; ++*n; [说明2] 函数void revstr(char*s)将字符串s逆置。例如:字符串“abcde”,经过逆置后变为“edcba”。 [C函数2] void revstr(char*s) char*p,c; if(s==NULL)return; p= (3) ; /*p指向字符串s的最后一个有效字符*/ while(s<p) /*交换并移动指针*/ C=*s; (4) =*p; (5) =c;
填空题[函数2.1说明]
函数fun1 (int m, int k, int xx [])的功能是:将大于整数m且紧靠m的k个素数存入数组xx中传回。例如:若输入17,5,则应输出:19,23,29,31,37。
[函数2.1]
fun1 (int m, int k, int xx [] )
{
inti, j, s=0;
for ( i=m+1; k>0; i++ )
{for (j=2; j<i; j++ )
if ( i %j=0 )
{{U}} (1) {{/U}}
if( i==j )
{
{{U}}(2) {{/U}}
k--; }
}
}
[函数2.2说明]
函数void fun 2 ()的功能是:打印出杨辉三角形(要求打印出10行)。
[函数2.2]
void fun2 ( )
{
int i, j;
int a[10][10];
printf ("/n" );
for (i=0; i<10; i++
{a [i] [0]=1;
{{U}} (3) {{/U}})
for (i=2; i<l0; i++ )
for (j=1; j<i; j++)
{{U}} (4) {{/U}}
for (i=0; i<10; i++ )
{for (j=0; j<=i; j++ )
{{U}} (5) {{/U}}
printf ( "/n" );
}
}
填空题阅读以下说明和C++程序代码,将应填入 (n) 处的字句写在答题纸的对应栏内。 [说明] 在下面的C++代码中,类SalesTicket能够完成打印票据正文的功能,类HeadDecorator与FootDecorator分别完成打印票据的抬头和脚注的功能。已知该程序运行后的输出结果如下所示,请填补该程序代码中的空缺。 这是票据的抬头! 这是票据正文! 这是票据的脚注! -------------------------------------- 这是票据的抬头! 这是票据的脚注! [C++程序代码] #include<iostream> using namespace std; class SalesTicket public; (1) printTicket()cout<<"这是票据正文!"<<endl; ; class Decorator:public SalesTicket SalesTicket *ticket; public: Decorator (SalesTicke *t)ticket=t; void printTicket () if (ticket!=NULL) ticket->printTicket() ; ; class HeadDecorator:public Decorator public: HeadDecorator(SalesTicket *t): (2) void printTicket() cout<<"这是票据的抬头!" <<endl; Decorator::printTicket(); ; class FootDecorator:public Decorator public: FootDecorator(SalesTicket *t): (3) void printTicket() Decorator::printTicket(); cout<<"这是票据的脚注!"<<endl; ; void main (void) SalesTicket t; FootDecorator f( HeadDecorator h( (4) ); h.printTicket(); cout<<"---------------------"<<endl; FootDecorator a(NULL); HeadDecorator b( (5) ); b.printTicket();
填空题【说明】设计一个评选优秀教师和学生的程序,其类结构如图6所示。当输入一系列教师或学生的记录后,将优秀学生及教师的姓名列出来。【程序】#include<iostream.h>#include<stdio.h>enumbooleanFalse,Trueclassbaseprotected:charname[8];public:voidgetname()cout<<"姓名:";cin>>name;voidprintname()cout<<"姓名:"<<name<<endU3virtualbooleanisgood()=0;classstudent:(1)intnum;public:voidgetnum()cout<<"考试成绩:"cin>>num;booleanisgood()return(2);;classteacher:(3)publicbaseintnum;public:voidgetnum()cout<<"每年发表论文数:";cin>>num;booleanisgood()return(4);;voidmain()base*p[50];student*pstud;teacher*ptech;charch;intcount=0;docout<<"输入教师(t)或学生(s):"cin>>ch;if(ch=='s')pstud=newstudent;pstud->getname();pstud->getnum();p[count++]=pstud;elseif(ch=='t')ptech=newteacher;ptech->getname()ptech->getnum();p[count++]=ptech;elsecout<<"输入错误<<endl;cout<<"继续输入码(Y/n)";cin>>ch;while(ch=='y')for(inti=0;i<count;i++) if((5))//若为优秀,则输出p[i]->printname();
填空题[说明] 函数int psort(int a[],int n)实现将含n个整数的数组a[]的不同元素按从小到大顺序存于数组a[]中。实现方法是从未确定的元素列中找到最小元素并将a[]的第i最小元素交换至a[i]位置。如该最小元素比已确定的最后一个最小元素大,则将它接在已确定的元素序列的后面; 否则,忽视该元素。 [函数] int psort (int a[] ,int n) int i, j ,k,p; for(i=0,k=0ji< (1) ;i++) for(j=i+1, (2) ;j<n;j++) if (a[p]>a[j]) p=j; if (p!=i) t=a[p] a[p]=a[i]; a[i]=t; if( (3) ) k++; else if ( (4) <a [i]) (5) =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)); printf("%5d",a[k]); printf ("/n/n") ;
填空题阅读以下函数说明和C语言函数,将应填入 (n) 处的字句写在对应栏内。 [说明] 函数void diff(Node*A,Node*B,Node**r)的功能是:根据两个由整数按升序构成的单链表L1和L2(分别由A,B指向)构造一个单链表L3(由*r指向),要求L3中的所有整数都是L1,并且不是L2中的整数,还要求L3中的所有整数都两两不等。 [C函数] #include<malloc.h> typedef struct node int data; struct node*next; Node; void diff(Node*A,Node*B,Node**r) int lastnum; Node*P; *r=NULL; if(!A) return; while( (1) > if(A->data<B->data) lastnum=A->data; p=(Node*)malloc(sizeof(Node)); P->data=lastnum; P->next=*r; (2) ; do A=A->next; while( (3) >; else iffA->data>B->data) B=B->next; else (4) ; lastnum=A->data; while (A while(A) lastnum=A->data; p=(Node*)malloc(sizeof(Node)); P->data=lastnum; (5) ; *r=P; while(A
填空题阅读以下说明和C语言函数,将应填入(n)处的字句写在答题纸的对应栏内。[说明]一棵非空二叉树中“最左下”结点定义为:若树根的左子树为空,则树根为“最左下”结点:否则,从树根的左子树根出发,沿结点的左孩子分支向下查找,直到某个结点不存在左孩子时为止,该结点即为此二叉树的“最左下”结点。例如,下图所示的以A为根的二叉树的“最左下”结点为D,以C为根的子二叉树中的“最左下”结点为C。二叉树的结点类型定义如下:typedefstructBSTNodeintdata;structBSTNode*1ch,*rch;/*结点的左、右孩子指针*/*BSTree;函数BSTreeFind_Del(BSTreeroot)的功能是:若root指向一棵二叉树的根结点,则找出该结点的右子树上的“最左下”结点*p,并从树下删除以*p为根的子树,函数返回被册除子树的根结点指针:若该树根的右子树上不存在“最左下”结点,则返回空指针。[函数]BSTreeFind_Del(BSTreeroot)BSTreep,pre;if(!root)returnNULL;/*root指向的二叉树为空树*/(1);/*令p指向根结点的右子树*/if(!p)returnNULL;(2);/*设置pre的初值*/while(p->1ch)pre=p;p=(3);if((4)==root)/*root的右子树根为"最左下"结点*/pre->rch=NULL;else(5)=NULL;/*删除以"最左下"结点为根的子树*/returnp;
