填空题【说明】本应用程序是一个小写数字转换成大写格式的转换器,其运行窗口如图5所示。窗口中有两个标签(lblNumber和lblChinese)、两个文本框(txtNnmber和txtChinese)和一个命令按钮(cmdChange)。当单击按钮cmdChange时,将文本框txtNumber中数字转换成中文大写,并显示在文本框txtChinese中。例如,在文本框txtNumber输入0076845,单击cmdChange按钮,将在文本框txtChinese中显示“柒万陆仟捌佰肆拾伍”。程序中调用的函数CChinse(StrdigitAsString)的功能是先删除字符串的所有前导0,再调用函数Change(StrdigitAsString),将数字字符串Strdigit转换成中文大写格式。为了防止用户在文本框txtNumber输入非数字形式的字符,程序将以空字符代替所输入的非数字有形字符。【程序】PrivateFunctionTransfer(StrdigitAsString)AsString′完成小写向大写的转换,这段代码省略EndFunctionPrivateFunctionCChinese(StrdigitAsString)AsStringDimintLen,intCounterAsIntegerintLen=Len(Strdigit)IfintLen>0Thenintcounter=0Do'过滤数字串Strdigit的前导0intcounter=intcounter+1LoopUntilMid(Strdigit,(1))intLen=(2)Strdigit=(3)(Strdigit,intLen)CChinese=Transfer(Strdigit)EndIfEndFunctionPrivateSubcmdChange_Click()txtChinese.Text=CChinese((4))'调用Cchinese函数EndSubPrivateSubtxtNumber_KeyPress(KeyAsciiAsInteger)SelectCaseKeyAscii'根据输入字符的ASCII码的值进行判断CaseKeyAscii<32'保留输入的控制字符Case48To57'保留输入的数字字符CaseElse'其他情况以空字符代替(5)=0EndSelectEndSub
填空题[说明]字符组合:程序界面如图示,在文本框Text1中输入若干个任意字符,单击“颠倒”按钮,将这些字符按相反的顺序显示在标签Lable1中,并在标签Labs12处显示字符的个数。例如:输入abcabc2,显示为2cbabca,组成字符数为4。[VisualBasic代码]PrivateSubcmdshow_Click(DimnAsIntegerDimIAsIntegerDimstr1AsStringN=Len(Text1.Text)ForI=nToStep-1Str1={{U}}(1){{/U}}NextILabe11.Caption=Str1EndSubPrivateSubcmdcount_Click()DimnAsIntegerDiminAsIntegerDimiAsIntegerDimjAsIntegerDimflagAsIntegerDimstr1AsIntegerDimstr2AsIntegerN={{U}}(2){{/U}}Str1=Mid$(Text1.Text,i.1ForI=2TonStr2=mid$(Text1,Text,I,1M=Len(str1){{U}}(3){{/U}}Forj=1TomIf{{U}}(4){{/U}}Thenflag=1;ExitForNextjIfflag<>1thenstr1=str1&str2NextILable2.Caption={{U}}(5){{/U}}EndSub
填空题[说明] 已知一棵二叉树用二叉链表存储,t指向根结点,p指向树中任一结点。下列算法为输出从t到p之间路径上的结点。 [函数] #define MaxSize 1000 typedef struct node TelemType data; struct node *lchild,*rchild; BiNode, *BiTree; void Path(BiTree t, BiNode *p) BiTree *stack EMaxsize], *stack1 [maxsize], *q; int tag[Maxsizel, top=0, top1; q=t; /*通过前序遍历发现P*/ do while (q!=NULL&&q! =p) /*扫描左孩子,且相应的结点不为p*/ (1) ; stack [top] =q; tag [top] =0; (2) ; if (top>0) if (stack [top]==P) break; /*找到p,栈底到栈顶为t到p*/ if(tag[top]==1) top--; else q=stack[top]; q=q->rchild; tag [top] =1; (3) ; top--; top1=0; while(top>0) q=stack [top]; /*反向打印准备*/ top1++; (4) ; top--; while( (5) ) /*打印栈的内容*/ q=stack1[top1]; printf (q->data); top1--;
填空题1说明】
【函数2.1说明】
函数stremp()是比较两个字符串s和t的大小。若s<t函数返回负数;若s=t函数返回0;若s>t,函数返回正数。
【函数2.1】
int strcmp(char * s,char * t)
{ while(* st++;
}
return{{U}} (2) {{/U}};
}
【程序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({{U}} (3) {{/U}})max=a[row][col];
if({{U}} (4) {{/U}})min=max;
else if({{U}} (5) {{/U}})min=max;
}
printf("The min of max numbers is %d/n",min);
}
填空题【说明】 下面是一个Applet程序,程序的功能是在显示面板上输出字符串。当html页面被其他窗口遮挡后再次显示时,请给出输出结果。 import java.awt.*; import java. (1) . *; public class MyApplet (2) Applet public void (3) (Graphics g) g.drawString(tip,20,40); tip ="I am Java Applet"; public void init() tip ="welcome"; private (4) tip; <html> <head> <title> A Simple Applet </title> </head> <body> <applet code="MyApplet.class" width=800 height=400> </applet> </body> </html> 网页输出 (5)
填空题[说明]
用输入/输出写一个程序,让用户输入一些姓名和电话号码。每一个姓名和号码将加在文件里。用户通过点“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)
{
{{U}}(1) {{/U}}("Enter a name (enter 'done' to quit)");
{{U}}(2) {{/U}} (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++)
{
{{U}}(3) {{/U}};
}
fos.write (',');
for (int i=0{{U}} (4) {{/U}};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<{{U}} (5) {{/U}})
}
line[i]= ( byte ) 0;
}
}
填空题[说明]本流程图采用“双向冒泡法”实现对数组a[n]的排序。双向冒泡法就是在逐步缩小的数组内,分别从数组的两端开始向内搜索,同时将大数往上浮,小数往下沉,每次交换一组数。flag是一个标志,发生过交换就置为1,当这个循环过程都不再发生交换时,则数组排序完成。注:流程中循环开始的说明按照“循环变量:循环初值,循环终值,增量”格式描述;定义SWAP[a,b]为将a和b两数交换。[流程图][问题]将流程图的(1)~(5)处补充完整。
填空题阅读以下说明和C++代码,将解答写入对应栏内。
[说明]
类Stock的定义中有三处错误,分别在代码的第04、06、10行。请补齐下述代码中的空缺(1)~(3),修改错误并给出修改后该行的完整代码,最后完善程序运行后的输出结果。
[C++程序]
01 #include<iostream.h>
02 using namespace std;
03 class Stock{
04 protected:
05 Stock(){shares=0; share_val=0.0;Output();}
06 Stock(int n=0,double pr=3.5): {{U}}(1) {{/U}} {//初始化shares值为n
07 share_val=pr;
08 Output();
09 };
10 void~Stock(){};
11 void Output()(cout<<shares<<';'<<share val<<endl;}
12 public:
13 //成员函数
14 private:
15 //成员变量
16 int shares;
17 double share_val;
18 };
19
20 void main(){ //构造三个Stock对象a,b,C
21 Stock a(1);
22 Stock b;
23 Stock C;Stock();
24 //其他代码省略,且代码无输出
25 }
程序运行后的输出结果为:
1:3.5
{{U}} (2) {{/U}}
{{U}} (3) {{/U}}
填空题[说明]
设计一程序,输入10个整数到一个数组中,调整这10个数在数组中的位置,使得其中最小的一个数成为数组的首元素,最大的一个数成为数组的末元素。
[C++程序]
#include <iostream.h>
#define SIZE 10
void main ( )
{
int data [SIZE];
int m;
cout<<"请输入"<<SIZE<<"个整数:";
for ( m=0;m<SIZE; m++ ){{U}} (1) {{/U}};
int j=0,k=0;
for ( int i=1;i<SIZE; i++ )
if ({{U}} (2) {{/U}}) j=i;
else if ( data[i]<data[k] ){{U}} (3) {{/U}};
if (j>0 ) {
int d=data[0];
{{U}} (4) {{/U}};
data[k]=d;
}
if ( k<SIZE-1 )
{
int d=data [SIZE- 1 ];
data[SIZE- 1 ]=data[j];
{{U}} (5) {{/U}};
}
cout<<end1<<" 排序后: ";
for ( m=0;m<SIZE; m++ ) cout<<data[m]<<" " ;
}
填空题阅读以下说明和Java代码,回答问题。 [说明] 已知类SubClass的getSum方法返回其父类成员i与类SubClass成员j的和;类SuperClass中的getSum为抽象函数,程序中的第14行有错误,请修改该错误并给出修改后的完整结果,然后完善程序中的空缺,当程序运行到第22行且尚未执行第22行语句时成员变量i的值,最后给出程序运行后的输出结果。 [Java代码] 行号 代码 01 public class UainJava 02 public static void main(String[]args) 03 SuperClass s=new SubClass(); 04 System.out.printin(s.getValue()); 05 System.out.printIn(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
填空题【说明】
下面的程序功能的功能是以行为单位对字符串按下面的条件进行排序。排序条件为:从字符串中间一分为二,右边部分按字符的ASCII值降序排序,排序后左边部分与右边部分进行交换。如果原字符串长度为奇数,则最中间的字符不参加排序,字符仍放在原位置上
例如:位置:0 1 2 3 4 5 6 7
源字符串:h g f e a b c d
则处理后字符串:d c b a h g f e
函数ReadDat()实现从文件in.dat中读取数据(每行字符串长度均小于80),函数WriteDat()把结果dat输出到文件out.dat中。
#include<stdio.h>
#include<siring.h>
#include<conio.h>
char dat[20] [80];
void jsSort()
{
int i,j,k,strl;
char ch;
for(i=0;i<20;i++)
strl=strlen(date[i]);
for(j={{U}} (1) {{/U}};j<strl;j++) /*对后半部分的字符串进行排序*/
for(k=j+1;k<strl;k++)
if({{U}} (2) {{/U}})
{
ch=dat[i] [j];
dot[i] [j]=dat[i] [k];
dat[i] [k]=ch;
}
for(j=0;{{U}} (3) {{/U}}j++) /*前后两部分进行交换*/
{
ch = date [i] [j];
dote [i] [j] = date [i] [(strl+1)/2+j];
dat [i] [(strl+1)/2+j]=ch;
}
}
}
void main()
{
reodDat();
isSort();
writeDot();
}
readDat ()
{
FILE * in;
int i=0;
char * p;
{{U}} (4) {{/U}};
while(i<20
if(p) *p=0;
i++;
}
fclose (in);
}
writeDat()
{
FILE * out;
int i;
clrscr ();
out = fopen("out. dat" ,"W");
for(i=0;i<20;i++)
{
printf("%s/n",dar[i]);
printf ({{U}} (5) {{/U}});
}
fclose (out);
}
填空题[函数2.1说明] 编制一个字符替换函数rep(char *s,char *s1,char *s2),实现将已知字符串s中所有属于字符串s1中的字符都用字符串s2中的对应字符代替。 [函数2,1] #include <stdio.h> #define MAX 50 rep(char *s,char *s1,char *s2) char *p; for(; *s; s++) for (p=s1; *p&& (1) ; p++); /*检查当前字符是否在字符串s1中出现*/ if(*p) (2) ; /*当前字符在字符串s1中出现,用字符串s2中的对应字符代替s中的字符*/ [函数2.2说明] 函数Insert_Sort(int n)是一个直接插入排序的程序。其基本思想是,假设待排序的记录存放在数组R[1…n]中。初始时,R[1]自成一个有序区,无序区为R[2…n]。从i=2起直至i=n为止,依次将R[i]插入当前的有序区R[1…i-1]中,生成含n个记录的有序区。 [函数2.2] #define MAX 255 int R[MAX]; void Insert_Sort(int n) int i,j ; for(i=2; i<=n; i++) if( (3) ) R[0]=R[i]; j=i-1; /*R[0]是哨兵,且是R[i]的副本*/ do /*从右向左在有序区R[1…i-1]中查找R[i]的插入位置*/ (4) ; /*将关键字大于R[i]的记录后移*/ j--; while( (5) ); /*当R[i]≥R[j]时终止*/ R[j+1]=R[0]j /*R[i]插入到正确的位置上*/
填空题阅读以下说明和流程图,回答问题将解答填入对应栏。[说明]下面的流程图,用来完成计算一组数组中的中值,其方法是:将数组中的一个值与其他值比较,并计算大于等于被比较数的数值的个数,以及小于等于被比较数的数值的个数,如果两数都大于n/2,则已经找到了中值,否则继续之前的步骤。注:流程中循环开始的说明按照“循环变量:循环初值,循环终值,增量”格式描述;[问题]将流程图的(1)~(5)处补充完整。
填空题【流程图说明】下面的流程(如图1所示)用N-S盒图形式描述了在一棵二叉树排序中查找元素的过程,节点有3个成员:data,left和right。其查找的方法是:首先与树的根节点的元素值进行比较:若相等则找到,返回此结点的地址;若要查找的元素小于根节点的元素值,则指针指向此结点的左子树,继续查找;若要查找的元素大于根节点的元素值,则指针指向此结点的右子树,继续查找。直到指针为空,表示此树中不存在所要查找的元素。【算法说明】【流程图】将上题的排序二叉树中查找元素的过程用递归的方法实现。其中NODE是自定义类型:typedefstructnode{intdata;structnode*left;structnode*right;}NODE;【算法】NODE*SearchSortTree(NODE*tree,inte){if(tree!=NULL){if(tree->data<e){{U}}(4) {{/U}};//小于查找左子树elseif(tree->data<e){{U}}(5){{/U}}; //大于查找左子树elsereturntree;}returntree;}
填空题【说明】
下面的程序构造一棵以二叉链表为存储结构的二叉树算法。
【函数】
BTCHINALR *createbt ( BTCHINALR *bt )
{
BTCHINALR *q;
struct node1 *s [30];
int j,i;
char x;
printf ( "i,x =" ); scanf ( "%d,%c",
while (i!=0 //生成一个结点
{{U}} (1) {{/U}};
q->1child = NULL;
q->rchild = NULL;
{{U}}(2) {{/U}};
if({{U}} (3) {{/U}};)
{j=i/2 //j为i的双亲结点
if(i%2==0
{{U}}(4) {{/U}} //i为j的左孩子
else
{{U}} (5) {{/U}} //i为j的右孩子
}
printf ( "i,x =" ); scanf ( "%d,%c", }
return s[1]
}
填空题【说明】
函数fun1 (int bb[])的功能是:在3位整数(100~999)中寻找符合条件的整数并依次从小到大存入数组中;它既是完全平方数,两位数字又相同,例如144、676等。
【函数2.11】
fun1 (int bb[])
{
int i, j, k=0, g, s, b;
for (i=100; i<=999; i++)
{
g=i%10;
{{U}}(1) {{/U}}
b=i/100;
if ((i== (int) sqrt (i) * (int) sqrt (i))
}
【函数2.2说明】
函数void fun2()的功能是:数组a中有300个四位数,求出数组a千位数上的数减百位数上的数减十位数上的数减个位数上的数大于零的个数CNT,再把所有满足此条件的四位数依次存入数组bb中,然后对数组bb的四位数按小到大的顺序进行排序。例如:9123,9-1-2-3>0,则该数满足条件存入数组bb中,且个数CNT=CNT+1,9812,9-8-1-2<0,则该数不满足条件,忽略。
【函数2.2】
void fun2 ( )
{
int q,b,s,g,i,j;
for (i=0;i<300;i++)
{q=a[i]/1000;
b=a[i]/100%10;
s=a[i]/10%10;
g=a[i]%10;
if (q-b-s-g>0)
{{U}}(3) {{/U}}
}
for ( i=0;i<cnt-1;i++ )
for ( j=i+1;j<cnt;j++ )
if ( bb[i]>bb[j] )
{{{U}} (4) {{/U}}
bb[i]=bb[j];
{{U}}(5) {{/U}}
}
}
填空题阅读以下说明和C++程序,将应填入 (n) 处的字句写在对应栏内。 [说明] 下面程序是为汽车市场编制的一个程序的一部分。其中automobile是基类。 [C++程序] //Auto.h #ifndef AUTO_H #define AUTO_H class automobile (1): int miles_per_gallon; //汽车每加仑行驶公里数 float fuel_capacity; //油箱容积 public: void initialize(int in_mpg,int in_fuel); int get_mpg(void); float get_fuel(void); float travel_distance(void); #endif //Auto.cpp #include"auto.h" void automobile::initialize(int in_mpg,float in fuel) miles_per_gallon=in_mpg; fuel_capacity=in_fuel; ) int automobile::get_mpg() //提供一辆特定汽车每加仑公里数 return miles per_gallon; float automobile::get_fuel() //提供油箱容积 return fuel_capacity; float automobile::travel_distance() return (2) //car.h #ifndef CAR_H #define CAR_H #include"auto.h" class car: (3) int Total_doors; public: void initialize(int in_mpg,float in_fuel,int doors=4); int doors(void); ; #endif //car.cpp #include"car.h" void car::initialize(int in_mpg,float in_fuel,int door) Total_doors=door; miles_per_galion=in_mpg; fuel_capacity=in_fuel; int car::doors(void) return Total doors; //Allauto.cpp #include #include"auto.h" #include"car.h" int main() car sedan; sedan.initialize(24,20.0,4); tout<<"The sedan can travel"<< (4) <<"miles./n"; cout<<"The sedan has"<< (5) <<"doors./n"; return 0;
填空题[说明]某绘图系统存在Point、Line和Square3种图元,它们具有Shape接口,图元的类图关系如图8-6所示。现要将Circle图元加入此绘图系统以实现功能扩充。已知某第三方库已经提供了XCircle类,且完全满足系统新增的Circle图元所需的功能,但XCircle不是由Shape派生而来的,它提供的接口不被系统直接使用。[Java代码1]既使用了XCircle又遵循了Shape规定的接口,既避免了从头开发一个新的Circle类,又可以不修改绘图系统中已经定义的接口。[Java代码2]根据用户指定的参数生成特定的图元实例,并对其进行显示操作。该绘图系统定义的接口与XCircle提供的显示接口及其功能如表8-3所示。[Java代码1]classCircle(1)private(2)pxc;publicCircle()pxc=new(3);publicvoiddisplay()pxc.(4);[Java代码2]publicclassFactorypublic(5)getShapeInstance(inttype)//生成特定类实例Switch(type)case0:returnnewPoint();case1:returnnewRectangle();case2:returnnewLine();case3:returnnewCircle();default:returnnull;;publicclassApppublicstaticvoidmain(Stringargv[])if(argv.length!=1)System.out.println("errorparameters!");return;inttype=(newInteger(argv[0])).intValue();Factoryfactory=newFactory();Shaps;s=factory.(6)if(s==null)System.out.println("Errorgetinstance!");Return;s.display();return;
填空题1】 假设以带头结点的单循环链表作非递减有序线性表的存储结构。函数deleteklist(LinkList head)的功能是删除表中所有数值相同的多余元素,并释放结点空间。 例如:链表初始元素为: (7, 10,10,21,30,42,42,42,51,70) 经算法操作后变为: (7,10,21,30,42,51,70) 【函数3.1】 void deleteklist(LinkList head) LinkNode * p, * q; p=head->next; while(p!=head) q=p->next; while( (1) ) (2) ; free(q); q=p->next; p=p->next; 【说明3.2】 已知一棵完全二叉树存放于一个一维数组T[n]中,T[n]中存放的是各结点的值。下面的程序的功能是:从T[0]开始顺序读出各结点的值,建立该二叉树的二叉链表表示。 【函数3.2】 #include<istream.h> typedef struct node int data; stuct node leftChild, rightchild; BintreeNode; typedef BintreeNode * BinaryTree; void ConstrncTree(int T[], int n, int i, BintreeNode * /*置根指针为空*/ else ptr=-(BTNode * )malloc(sizeof(BTNode) ) ptr->data=T[i]; ConstrucTree(T,n,2, i+1, (4) ); ConstrucTree(T,n, (5) ,ptr->rightchild); main(void) /*根据顺序存储结构建立二叉链表*/ Binarytree bitree;int n; printf("please enter the number of node: /n%s" ;n); int* A = (int *) malloc(n * sizeof(int)); for(int i=0;i<n;i++)scanf(" %d,A+i); /*从键盘输入结点值*/ for(int i=0;i<n;i++)printf(" %d",A[i]); ConstructTree(A, n,0, bitree);
填空题【说明】
为了减少直接插入排序关键字的比较次数,本算法使用了二分(折半)插入法对一个无序数组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];{{U}} (1) {{/U}};high<-i-1;
②找插入位置
循环:当{{U}} (2) {{/U}}时,反复执行
{{U}} (3) {{/U}};
若X.key<R[mid].key
则high<-mid-1
否则{{U}} (4) {{/U}}
③后移
循环:j以-1为步长,从{{U}} (5) {{/U}},反复执行
R[j+1]<-R[j]
④插入
R[low]<-X
3.算法结束
