填空题[说明] 下面的程序用Dole Rob算法生成N阶(N为奇数)魔方阵(各行、列、对角线数字之和相等)。该算法的过程为:从1开始,按如下方法依次插入各自然数,直到N2为止。 ①在第一行的正中插入1。 ②新位置应当处于最近插入位置的右上方,若该位置已超出方阵的上边界,则新位置取应选列的最下一个位置;若超出右边界,则新位置取应选行的最左一个位置。 ③若最近插入的元素是N的整数倍,则选同列的下一行位置为新位置。 例如,3阶魔方阵如下所示: 8 1 6 3 5 7 4 9 2 [C程序] #include<stdio.h> #include<stdlib.h> #define SIZE 50 main( ) int row, col, n, value; int a[SIZE+1][SIZE+1]; /*不使用下标为0的元素*/ printf("请输入要输出魔方阵的阶数n(奇数, <%d):n=", SIZE); scanf("%d", if(!(n%2) || n<1 || (1) ) printf("输入数据有误!/n"); exit(0); row=1; col=(n+1)/2; value=1; while(value<= (2) ) a[row][col]=value; /*计算下一位置*/ if(value%n!=0) row--; (3) ; if(row<1)row=n; if(col>n) (4) ; else row++; value= (5) ; printf("/n%d阶魔方阵如下所示:/n/n", n); for(row=1; row<=n; row++) for(col=1; col<=n; col++) printf("%5d", a[row][col]); printf("/n");
填空题阅读下列说明、图和C++代码,填补空缺。[说明]已知对某载客车辆(Car)进行类建模,如图12-2所示,其中类Engine表示发动机引擎,类Wheel表示车轮,类Body表示车身,类Driver表示司机,类Passenger表示乘客。constint{{U}}(1){{/U}}=7;//定义最多载客数constintMAX_WHEELS=5;//定义最多轮胎数classBody{//此处代码省略);//车身类classPassenger{//此处代码省略};//乘客类ClassWheel{//此处代码省略};//车轮类ClassDriver{//司机类public:stringname;//表示第几路公交车司机Driver(stringdriverName):marne({{U}}(2){{/U}}){};//构造函数};classEngine{//引擎类public:stringengineNo;//引擎编号Engine(stringengineNo){{{U}}(3){{/U}}->engineNo=engineNo;}//构造函数};ClassCar{//汽车类protected:Engine*engine;Driver*driver;Bodybody;Wheel*wheels[MAX_WHEELS];Passenger*passengers[MAX_PASSENGERS];public:Car(Driver*driver)(//构造函数this->driver=driver;engine=newEngine("TX6536型号引擎");for(intindex=0;index<MAX_WHEELS;index++){wheels[index]=newWheel();}for(intindex=0;indexpassengers[index]=NULL;}}virtual-Car(){//析构函数for(intindex=0;index<MAX_WHEELS;index++)deletewheels[index];delete{{U}}(4){{/U}};}intgetPassengerNumber(){//获取车上乘客数量//此处代码省略}voidgetonpassenger(Passenger*apassenger){//乘客上车//此处代码省略}voidrun(){//开车if(driver==NULL){cout<<"司机尚未上车!";return;}//此处代码省略}};voidmain(){Driverdriver("第五路公交车司机");Carcar({{U}}(5){{/U}});Passengerpassengers[MAX_PASSENGERS];for(intindex=0;index<MAX_PASSENGERS;index++)//乘客上车处理car.getOnPasSenger(car.run();}
填空题类Stock的定义中有两处错误,请指出错误所在行号并给出该行修改后的完整结果。
填空题[说明] 计算机在处理算术表达式时,首先将其转换为后缀表达式。例如,表达式“46+5*(120-37)”的后缀表达式形式为“46 5 120 37- * +”。 计算后缀表达式时,从左至右扫描后缀表达式:若遇到运算对象,则压入栈中;遇到运算符,则从栈中弹出相关运算对象进行计算,并将运算结果压入栈中。重复以上过程,直到后缀表达式扫描结束。例如,后缀表达式“46 5 120 37 - * +”的汁算过程如下。 ①依次将46、5、120、37压入栈中。 ②遇到“-”,取出37、120,计算120-37=83,将其压入栈中。 ③遇到“*”,取出83、5,计算5×83=415,将其压入栈中。 ④遇到“+”,取出415、46,计算46+415=461,将其压入栈中。 ⑤表达式结束,则计算过程完成。 函数computing(char expt[],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(STACK s):若s是空栈,则返回1;否则返回0。 [C函数] int computing(char expr[], int *result) STACK s; int tnum, a, b; char *ptr; InitStack( ptr=expr; pstr /*字符指针指向后缀表达式串的第一个字符*/ while (*ptr!='/0') if(*ptr==' ') /*当前字符是空格*/ (1) ; /*字符指针指向下一字符*/ continue; else if (isdigit(*ptr)) /*当前字符是数字,则将该数字开始的数字串转换为数值*/ tnum= (2) ; while (*ptr>='0' ptr++; push( (4) ); else /*当前字符是运算符或其他符号*/ if (*ptr=='+'||*ptr=='-'||*ptr=='*'||*ptr=='/') if(!IsEmpty(S)) a=Top(s); Pop( /*取运算符的第二个运算数*/ if(!IsEmpty(S)) b=Top(s); Pop( /*取运算符的第一个运算数*/ else return-1; else return -1; switch (*ptr) case'+': Push( break; case'-': Push( break; case'+': Push( break; case'/': Push( break; else return -1; ptr++; /*字符指针指向下一字符*/ /*while*/ if (IsEmpty(s)) return -1; else (5) =Top(s); Pop( /*取运算结果*/ if (!IsEmpty(s)) return -1; return 0;
填空题[说明]已知某二叉树的非叶子节点都有两个孩子节点,现将该二叉树存储在结构数组Ht中。节点结构及数组Ht的定义如下:#defineMAXLEAFNUM30Structnodecharch;char*pstr;intparent;intlchild,rchiid;;StructnodeHt[2*MAXLEAFNUM];该二叉树的n个叶子节点存储在下标为1~n的Ht数组元素中。例如,某二叉树如图8-26所示,其存储结构如图8-27所示,其中,与叶子节点a对应的数组元素下标为1,a的父节点存储在Ht[5],表示为Ht[1].parent=5。Ht[7].parent=0表示7号节点是树根,Ht[7].lchild=3、Ht[7].rchild=6分别表示7号节点的左孩子是3号节点、右孩子是6号节点。如果用“0”或“1”分别标识二叉树的左分支和右分支如图8-26所示,从根节点开始到叶子节点为止,按所经过分支的次序将相应标识依次排列,可得到一个0、1序列,称之为对应叶子节点的编码。例如,图8-26中a、b、c、d的编码分别是100、101、0、11。函数LeafCode(Ht[],n)的功能是:求解存储在Ht中的二叉树中所有叶子节点(n个)的编码,叶子节点存储在Ht[1]~Ht[n]中,求出的编码存储区由对应的数组元素pstr域指示。函数LeafCode从叶子到根逆向求叶子节点的编码。例如,对图8-26中叶子节点a求编码的过程如图8-28所示。[函数]typedefenumStatusERROR,OKStatus;StatusLeafCode(StruetnodeHt[],intn)intpc,pf;inti,start;chartstr[31]='/0');for(i=1;(1);i++)start=29;pc=i;pf=Ht[i].parent;while(Pf!=(2))if((3).lchiid==pc)tstr[--start]='0';elsetstr[-start]='1';pc=(4);pf=Ht[Pf].parent;Ht[i].pstr=(char*)malloc(31-start);if(!Ht[i].pstr)returnERROR;strcpy(Ht[i].pstr,(5);returnOK;
填空题【应用说明5.1】本应用程序的窗体中有一个下拉式列表框(名称为Combol)和两个文本框(名称分别为Txt_Content和Txt_Index)。运行时,用户从Combol的列表中进行选择,程序就会将选中条目的内容以及编号(从0开始)分别在文本框Txt_Content和Txt_Index中显示出来。【程序代码5.1】PrivateSubCombol_Click()Txt_Content.Text=Combol.1Txt_Index.Text=Combol.2EndSub(注:可供2处选择的选项:Number,List,Index,ListIndex,ListCount)【应用说明5.2】本应用程序的运行窗口如下图所示。当用户在输入框(名为Txt_Input)中输入数值数据,并从下拉式列表框(名为CmbOp)中选择所需的运算后。输出框(名为Txt_Output)中就会显示运算的结果。用户单击“清除”按钮(名为CmdClear)后,输入框和输出框都清空。开发该应用的部分程序代码如下:【程序代码5.2】PrivateSubCmbOp_Click()DimDataInAsDouble,DataOutasDoubleDataIn=3SelectCase4Case"取整数部分"DataOut=Int(DataIn)Case"求平方根"IfDataIn<0ThenMagBox"负数不能开平方!"ElseDataOut=sqr(DataIn)EndIfCase"取绝对值"DataOut=Abs(DataIn)025025Txt_Output.Text=str$(DataOut)EndSub
填空题阅读以下说明和C++代码,填补C++代码中的空缺,将解答写在对应栏内。
[说明]
已知某公司按周给员工发放工资,其工资系统需记录每名员工的员工号、姓名、工资等信息。其中一些员工是正式的,按年薪分周发放(每年按52周计算);另一些员工是计时工,以小时工资为基准,按每周工作小时数核算发放。
下面是实现该工资系统的C++代码,其中定义了4个类:工资系统类PayRoll、员工类Emplovee、正式工类Salaried和计时工类Hourly,Salaried和Hourly是Employee的子类。
[C++代码]
//头文件和域名空间略
const int EMPLOYEE_NUM=5;
class Employee{
protected:
int emDCode; //员工号
string name; //员工姓名
double salary; //周发放工资
public:
Employee(const int empCode,const string &name){
this->empCode=empCode; this->name=name;
}
virtual~Employee(){}
virtual void pay()=0;
double getSalary(){return this->salary;}
};
class Salaried ______{
private: double payRate; //年薪
public:
Salaried(const int empCode,const string
}
void pay(){
this->salary=______;//计算正式员工的周发放工资数
cout<<this->name<<":"<<this->salary<<endl;
}
};
class Hourly ______ {
private:
double payRate; //小时工资数
int hours; //周工作小时数
public:
Hourly(const int empCode, const string this->hours=hours,
}
void pay(){
this->saiary=______;//计算计时工的周发放工资数
cout<<this->name<<"::<<this->salary<<endl;
}
};
class PayRoll{
public:
void pay(Employee* e[]){
for (int i=0; i<EMPLOYEE_ NUM; i++){
e[i]->pay();
}
};
int main(){
PayRoll* payRoll=new PayRoll;
______ employees[EMPLOYEE_ NUM]={
new Salaried(1001,"Zhang San",58000.00),
//此处省略对其他职工对象的生成
new Hourly(1005,"L1",12,50.00),
};
payRoll->pay(______);
double total=0.0;
for(int i=0;i<EMPLOYEE_ NUM;i++)
(total+=employees[i]->getSalary(); } //统计周发放工资总额
cout<<"总发放额="<<total<<endl;
delete payRoll; retum 0;
填空题阅读以下说明和Java代码,填补空缺。
[说明]
java.util库中提供了Vector模板类,可作为动态数组使用,并可容纳任意数据类型。
该类的部分方法说明如下所示: 方法名 含义 add(k)
向vector对象的尾部添加一个元素k removeElementAt(i)
删除序号为i的元素(vector元素序号从0开始) isEmpty( )
判断vector对象是否含有元素 size( )
返回vector对象中所包含的元素个数 [Java代码] Import
{{U}}(1) {{/U}}; public class JavaMain {
static private final int {{U}}(2) {{/U}} =6;
public static void main(String[]args) { Vector
theVector=new Vector<{{U}} (3) {{/U}}>( );
//初始化theVector,将theVector的元素设置为0至5 for(int
cEachItem=0; cEachItem<ARRAY_SIZE; cEachItem++) theVector.
add({{U}} (4) {{/U}}); showVector(theVector);
//依次输出theVector巾的元素 theVector. removeElementAt(3);
showVector(theVector); } public static
void showVector(Vector theVector){ if(theVector. isEmpty(
)){ System.out.printin("theVector is empty.");
return; } for(int loop=0;
loop<theVector.size( ); loop++) {
System.out.print(theVector.get(loop));
System.out.print(","); }
System.out.printin( ); }
} 该程序运行后的输出结果为: 0, 1, 2, 3, 4, 5
{{U}} (5) {{/U}}
填空题阅读以下说明和C函数,填补C函数中的空缺。 [说明] 函数numberOfwords(char message[])的功能是计算存储在message字符数组中的一段英文语句中的单词数目,输出每个单词(单词长度超过20时仅输出其前20个字母),并计算每个英文字母出现的次数(即频数),字母计数时不区分大小写。 假设英文语句中的单词合乎规范(此处不考虑单词的正确性),单词不缩写或省略,即不会出现类似don't形式的词,单词之后都为空格或标点符号。 函数中判定单词的规则是: (1)一个英文字母串是单词; (2)一个数字串是单词; (3)表示名词所有格的撇号(')与对应的单词看作是一个单词。 除上述规则外,其他情况概不考虑。 例如,句子“The 1990's witnessed many changes in people's concepts of conservation”中有10个单词,输出如下: The 1990's witnessed many changes in people's concepts of conservation 函数numberOfwords中用到的部分标淮库函数如下所述。 函数原型 说明 int islower(int ch); 若ch表示一个小写英文字母,则返回一个非0整数,否则返回0 int isupper(int ch): 若ch表示一个大写英文字母,则返回一个非0整数,否则返回0 int isalnum(int ch); 若ch表示一个英文字母或数字字符,则返回一个非0整数,否则返回0 int isabha(int ch); 若ch表示一个英文字母,则返回一个非0整数,否则返回0 int isdigit(int ch); 若ch表示一个数字字符,则返回一个非0整数,否则返回0 [C函数] int numberOfwords(char message[]) char wordbuffer[21],i=0; /*i用作wordbuffer的下标*/ ______pstr; int ps[26]=(0); /*ps[0]用于表示字母'A'或'a'的频数*/ /*ps[1]用于表示字母'B'或'b'的频数,依此类推*/ int wordcount er=0; Pstr=message; while (*pstr) if(______(*pstr))/*调用函数判断是否为一个单词的开头字符*/ i=0; do/*将一个单词的字符逐个存入wordbuffer[],并对字母计数*/ wordbuffer[i++]=*pstr; if(isalpha(*pstr)) if______(*pstr))ps[*pstr-'a']++; else ps[*pstr-'A']++; ______; /*pstr指向下一字符*/ while(i<20&&(isalnum(*pstr)||*pstr=='/")); if(i>=20) /*处理超长单词(含名词所有格形式)*/ while(isalnum(*pstr)||*pstr=='\")pstr++; ______='/0';/*设置暂存在wordbuffer中的单词结尾*/ wordcounter++; /*单词计数*/ puts(wordbuffer); /*输出单词*/ ______; /*pstr指向下一字符*/ return wordcounter;
填空题写出下面消息对应的方法编号(如果该消息错误或者没有对应的方法调用,请填写“无”)。
填空题[说明] C++标准模板库中提供了vector模板类,可作为动态数组使用,并可容纳任意数据类型,其所属的命名空问为std。vector模板类的部分方法说明如表12-3所示。 表12-3 vector模板类的部分方法 方法 含义 push_back(k) 向vector对象的尾部添加一个元素k begin() 返回一个迭代器对象,该对象指向vector中的第一个元素 end() 返回一个迭代器对象,该对象指向vector中的最后一个元素 empty() 测试vector对象是否为空 erase(ptr) 删除vector中ptr指向的元素 [C++代码] #include<iostream> #include<vector> using namespace (1) ; typedef vector< (2) >INTZECTOR; const int ARRAY_SIZE=6; void ShowVector(INTVECTOR int main( ) INTVECTOR theVector; //初始化theVector,将theVector的元素依次设置为0至5 for (int cEachItem=0; cEachItem<ARRAY_SIZE; cEachItem++) theVector. push_back( (3) ); ShowVector(theVector); //依次输出theVector中的元素 theVector. erase(theVector. begin( )+3); ShowVector(theVector); void ShowVector(INTVECTOR return; INTVECTOR::iterator (4) ; for(theIterator = theVector.begin( ); theIterator != theVector.end( ); theIterator++) cout<< *theIterator; if(theIterator ! =thevector. end( )-1)cout<<","; cout<<endl; 该程序运行后的输出结果为: 0, 1 , 2, 3, 4, 5 (5)
填空题【函数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
1
&&*(ip+1){
n= *ip -"0"+ 1;
c= *++ip;
for(k=0;k<=n;k++)
2
;
}
else
3
;
*op++ ="-";
ip++;
}
if(op>outstr)
4
;
*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
5
*op++="0"+n-1;
*op++=c;
if(* ip=="_",)
6
;
}
* op="/0";
return op-outstr;
}
填空题阅读下列说明和C++代码,填充代码中的空缺。[说明]某学校在学生毕业时要求对其成绩进行综合评定,学生的综合成绩(GPA)由其课程加权平均成绩(Wg)与附加分(Ag)构成,即GPA=Wg+Ag。设一个学生共修了n门课程,则其加权平均成绩(Wg)定义如下:其中,gradei、Ci分别表示该学生笫i门课程的百分制成绩及学分。学生可以通过参加社会活动或学科竞赛获得附加分(Ag)。学生参加社会活动所得的活动分(Apoints)是直接给出的,而竞赛分(Awards)则由下式计算(一个学生最多可参加m项学科竞赛):其中,li和si分别表示学生所参加学科竞赛的级别和成绩。对于社会活动和学科竞赛都不参加的学生,其附加分按活动分为0计算。下面的程序实现计算学生综合成绩的功能,每个学生的基本信息由抽象类Student描述,包括学号(stuNo)、姓名(name)、课程成绩学分(grades)和综合成绩(GPA)等,参加社会活动的学生由类ActStudent描述,其活动分由Apoints表示,参加学科竞赛的学生由类CmpStudent描述,其各项竞赛的成绩信息由awards表示。[C++代码]#include<string>#include<iostream>usingnamespacestd;constintn=5;/*课程数*/constintm=2;/*竞赛项目数*/classStudentprotected:intstuNo;stringname;doubleGPA;/*综合成绩*/int(*grades)[2];/*各门课程成绩和学分*/public:Student(constintstuNe,conststring&name,intgrades[][2])this->stuNo=stuNo;this->name=name;this->grades=grades;Virtual~Student()intgetstuNo()/*实现略*/stringgetName()/*实现略*/______;doublecomputeWg()inttotalGrades=0,totalCredits=0;for(inti=0;i<N;i++)totalGrades+=grades[i][0]*grades[i][1];totalGredits+=grades[i][1];returnGPA=(double)totalGrades/totalCredits;;classActStudent;publicStudentintApoints;public;ActStudent(constintstuNo,conststringdoublegetGPA()(returnGPA=______;;classCmpStudent:publicStudentprivate:int(*awards)[2];public:CmpStudent(constintstuNo,conststringdoublegetGPA()intAwards=0;for(inti=0;i<M;i++)Awards+=awards[i][0]*awards[i][1];ReturnGPA=______;;intmain()//以计算3个学生的综合成绩为例进行测试intg1[][2]=((80,3),(90,2),(95,3),(85,4),(86,3)),g2[][2]=((60,3),(60,2),(60,3),(60,4),(65,3)),g3[][2]=((80,3),(90,2),(70,3),(65,4),(75,3));//课程成绩intc3[][2]=((2,3),(3,3));//竞赛成绩Student*Student[3]=newActStudent(101,"John",g1,3),//3为活动分newActStudent(102,"Zhang",g2,0),newActStudent(103,"Li",g3,C3),;//输出每个学生的综合成绩for(inti=0;i<3;i++)Cout<<______<<endl;delete*student;return0;
填空题{{B}}试题八{{/B}}阅读以下说明和流程图,填补流程图中的空缺。[说明]某单位动态收集的数据中常包含重复的数据,所以需要进行处理,使得重复的数据仅出现一次。下面流程图的功能是:在n(n≥1)个数据D1,D2,…,Dn中,选出其中所有不重复的k个数据,置于原来前k个数据的位置上。该流程图的算法如下:第1个数据必然被选出,然后从第2个数据开始,逐个考察其余的数据。假设D1,D2,…,Dm(m≥1)是已经选出的、不重复的数据,则对于数据Di(m<i≤n),将其依次与Dm,Dm-1,…,D1进行比较,若没有发现与之相同者,则Di被选出并置于Dm+1的位置上;否则对Di不做处理。例如,如下10个数据:5,2,2,7,4,4,7,1,9,1(n=10)经过上述算法处理后的结果为:5,2,7,4,1,9(k=6)[流程图]本题流程图如图8-32所示。注:循环开始的说明按照“循环变量名:循环初值,循环终值,增量”格式描述。
填空题阅读以下说明和C语言函数,回答问题。
[说明]
下面待修改的C程序完成的功能是:对于给定的一个长正整数,从其个位数开始,每隔一位取一个数字(即取其个位、百位、万位等数字),形成一个新的整数并输出。例如,将该程序修改正确后,运行时若输入“14251382”,则输出的整数为“4532”。下面给出的C程序代码中有5个错误,请指出所有的错误。
[C程序代码] 01 #include <stdio.h>
02 03 int main( ) 04
{ 05 long n, num; 06 int
i; 07 08 do {
09 printf("清输入一个正整数: "); 10 scanf("%id", n);
11 }while(n<=0); 12 k=1;
13 for(i=1; n>=0; i++) { 14
if(i io 2=1) { 15 Rum=num+(n%10)*k;
16 k=k * 10; 17 } 18
n=n/10; 19 } 20
printf("新数据为: %d/n", num); 21 return 0;
22 }
填空题阅读以下说明和Java代码,将应填入______处的语句或语句成分写在对应栏内。
[说明]
某数据文件students.txt的内容为100名学生的学号和成绩,下面的程序将文件中的数据全部读入对象数组,按分数从高到低进行排序后选出排名前30%的学生。
[Java代码]
import java.io.*;
class Student{
private String sNO;//学号
private int Credit;//分数
public int getCredit(){
return Credit;
}
public string toString(){
return"sNO="+this.sNO+",Credit="+this.Credit;
}
Student(String sNO,int Credit){
______=sNO;
______=Credit;
}
}
public class SortStudent{
void sort(Student[]s){//Sort the array s[] in decending order of Credit
for(int i=0;i<s.length-1;i++){
for(int j=i+1:j<s.length;j++){
if(s[i].______<s[j].______){
Student tmp=s[i];
s[i]=s[j];
s[j]=tmp;
}
}
}
}
public static void main(String argv[]){
Student[] testStudent=new Student[size];
try{
BufferedReader in=new BufferedReader(new FileReader("students.txt"));
boolean done=false;
int i=0;
while(!done){
String s=in.readLine(); //每次读取一个学生的学号和成绩
if(s!=null){
String tmp[]=s.split(",");
testStudent[i++]=______(tmp[0],Integer.parselnt(tmp[1]));
}else
done=true;
}
in.closeo();
______=new SortStudent();
ss.sort(testStudent);
System.out.printin("top 30%:");
for(int j=0;j<size*0.3;j++)
System.out.printin(testStudent[j]);
}catch(IOException e){
System.out.printin("io error!");
}catch(NumberFormatException e){
System.out.printin("not a number!");
}
}
______int size=100; //学生总数
}
填空题[说明]已知包含头节点(不存储元素)的单链表的元素已经按照非递减方式排序,函数compress(NODE*head)的功能是去掉其中重复的元素,使得链表中的元素互不相同。处理过程中,当元素重复出现时,保留元素第一次出现所在的节点。图8-29(a)、(b)是经函数compress()处理前后的链表结构示例图。链表的节点类型定义如下:typedefstructNodeintdata;structNode*next;NODE;[C语言函数]voidcompress(NODE*head)NODE*ptr,*q;ptr=(1);/*取得第一个元素节点的指针*/while((2)while(qfree(q);q=ptr->next;(5)=ptr->next;/*endofwhile*//*endofcompress*/
填空题阅读以下说明和流程图,填补流程图中的空缺。[说明]平面上一个封闭区域内稳定的温度函数是一个调和函数,如果区域边界上各点的温度是已知的(非常数),那么就可以用数值方法近似地计算出区域内各点的温度(非负数)。假设封闭区域是矩形,可将整个矩形用许多横竖线切分成比较细小的网格,并以最简单的方式建立坐标系统,从而可以将问题描述为:已知调和函数u(i,j)在矩形0≤i≤m;0≤j≤n)四边上的值,求函数u在矩形内部各个网格点i=1,…,m-1;j=1,…,n-1上的近似值。根据调和函数的特点可以推导出近似算式:该矩形内任一网格点上的函数值等于其上下左右四个相邻网格点上函数值的算术平均值。这样,我们就可以用迭代法来进行数值计算了。首先将该矩形内各网格点上的函数值设置为一个常数,例如u(0,0);然后通过该迭代式计算矩形内个网格点上的新值。这样反复进行迭代计算,若某次迭代后所有的新值与原值之差别都小于预定的要求(例如0.01),则结束求解过程。[流程图]
填空题关于上述Java代码中sh和tr的以下叙述中,哪两个是正确的(写出编号)? ①sh和tr分别引用同一个对象; ②sh和tr分别引用同一类型的不同的对象; ③sh和tr分别引用不同类型的不同对象; ④sh和tr分别引用同一个对象的不同复制; ⑤sh和tr所引用的内存空间是相同的。
填空题【函数1.3说明】
递归函数sum(int a[],int n)的返回值是数组a[]的前n个元素之和。
【函数1.3】
int sum(int a[],int n)
{if
1
return a[n-1]+sum(a,n-1);
else
2
;
}