填空题[说明]已知对某载客车辆(Car)进行类建模,如图12-2所示,其中类Engine表示发动机引擎,类Wheel表示车轮,类Body表示车身,类Driver表示司机,类Passenger表示乘客。constint(1)=7;//定义最多载客数constintMAX_WHEELS=5;//定义最多轮胎数classBody//此处代码省略);//车身类classPassenger//此处代码省略;//乘客类ClassWheel//此处代码省略;//车轮类ClassDriver//司机类public:stringname;//表示第几路公交车司机Driver(stringdriverName):marne((2));//构造函数;classEngine//引擎类public:stringengineNo;//引擎编号Engine(stringengineNo)(3)->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(4);intgetPassengerNumber()//获取车上乘客数量//此处代码省略voidgetonpassenger(Passenger*apassenger)//乘客上车//此处代码省略voidrun()//开车if(driver==NULL)cout<<"司机尚未上车!";return;//此处代码省略;voidmain()Driverdriver("第五路公交车司机");Carcar((5));Passengerpassengers[MAX_PASSENGERS];for(intindex=0;index<MAX_PASSENGERS;index++)//乘客上车处理car.getOnPasSenger(car.run();
填空题【函数1.1说明】
函数strcpy(char * destination,char * source)将字符串source复制到字符串destination。
【函数1.1】
void strcpy (char * destination,char*source)
{while
_______
;}
填空题【说明】
下面的Java程序演示了如何在用户等待载入主程序时显示logo图片的例子。logo图片mylogo.gif存放在文件夹image下面。显示logo图片的是一个线程类logo。
【Java程序】
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.ImageIcon.*;
import java.lang.Runnable;
public class mainFrame extends JFrame
{
public static void main(String[] args)
{
Logo lg=new Logo("image/mylogo.gif");
lg.
1
;
mainFrame main_framE = new mainFrame();
main_frame.setTitle("使用logo图片示例程序”);
Thread.sleep
1
;//程序暂时挂起
main_frame.setVisible(true);
lg.
2
;//使logo图片不可见
}
}
class Logo extends JWindow implements
3
{
String filename;//Logo图像文件的文件名
public Logo(Stringname){
filename = name;
}
public void run()
{
ImageIcon ig = new ImageIcon(filename);
JButton btn = new JButton(ig); //将图片给JButton显示
getContentPane().
4
; //将按钮加到JPanel里
Toolkit kit = Toolkit.getDefauhToolkit();
Dimension screenSize = kit.getScreenSize(); //获得屏幕的大小
setLocation(screenSize.width/4,screenSize.height/4);
//将Logo窗口显示在屏幕宽的1/4,高的1/4处
setSize(ig. getIconWidth(),ig. getIconHeight()); //将Logo窗口大小设成图像的大小
toFront(); //将Logo窗口显示为最前面的窗口
setVisible(true)
5
; //显示该窗口
}
public void setNOtVisible()
{
setVisible(false);
}
}
填空题[说明]
用输入/输出写一个程序,让用户输入一些姓名和电话号码。每一个姓名和号码将加在文件里。用户通过点“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)
{
________
("Enter a name (enter "done" to quit)");
________
(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++)
{
________
;
}
fos.write (",");
for (int i=0
________
;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<
________
)
}
line[i]= ( byte ) 0;
}
}
填空题写出下面消息对应的方法编号(如果该消息错误或者没有对应的方法调用,请填写“无”)。
填空题[说明]著名的菲波那契数列定义式为:f1=1,f2=1,fn=fn-1+fn-2(n=3,4,…)因此,从第1项开始的该数列为1,1,2,3,5,8,13,21,…。函数fib1和fib2分别用递归方式和迭代方式求解菲波那契数列的第n项(调用fib1、fib2时可确保参数n获得一个正整数1。[C函数代码]
填空题写出下面消息对应的方法编号(如果该消息错误或者没有对应的方法调用,请填写“无”)。
填空题1说明】
函数create能够建立具有任意行和任意列的动态二维整数数组。
【函数4.1程序】
#include“stdio.h”
int * * create(int row, int col )
{ int * * x,i;
x=(int * *)
1
;
for(
2
)
x[i]=(int *)malloc(col * sizeof(int));
3
;
}
【函数4.2说明】
函数main()能够判断输入年是否为闰年。
【函数4.2程序】
main()
{int year,n;
scanf(“input year %d”,&year);
n=(
4
||
5
);
if(n==1)printf(“%d is a leap year/n”,year);
else printf(“%d is not a leap year/n”,year);
}
填空题【说明】
有一种猜数字游戏,开始时程序随机产生四个不相同的个位数字(顺序固定),然后玩家输入猜测的四个数字。程序比较后给出提示,本次猜数字有几个数字完全正确,有几个数字数值正确但是位置错误。玩家重复猜测直至结果完全正确。例如,程序生成“1234”,玩家猜测“1630”,则提示"位置正确的有:“1”个,位置错误的有:“1”个,完全错误的有“2”个。
下面的两个Java函数是猜数字游戏里面使用的两个函数,第一个用于产生四个不相同的数字。第二个函数先判断输入是否合法,若合法则进行比较,并给出提示。
【Java程序】
………………
private String randNum()//产生答案数字
{
int[] digits={0,1,2,3,4,5,6,7,8,9};
Random mum=new Random((new Date()).getTime());
for(int i=0;i<10;i++)
{
int p=Math.abs(rnum.nextInt())%10;
int tmp=digits[p];//tmp是临时存储数字的变量
1
;
digits[i]=tmp;
}
return Integer.toString(digits[0])+Integer.toString(digits[1])
+Integer.toString(digits[2])+Integer.toString(digits[3]);
}
String checkAnswer(String guess,Stdng answer)
{
if guess.length()!=4)return "要输入4个数字!";
int num=0;
try{ num=
2
;} //判断输入是否是数字
catch(NumberFormatException ex)
{return "要输入数字!";}//catch
int[]timesDigit={0,0,0,0,0,0,0,0,0,0};
for(int i=0;i<4;i++){
int ptr=num%10;
num=num/10;
if
3
//输入数字有重复
return "数字有重复!";
}//for
int a=0;
int b=0;
for(int j=0;j<4;j++)
{
int pos=answer.indexOf(guess.substring(j,j+1));
if
4
//当前数字完全正确
a++;
else if(pos>=0)
b++;
}
if
5
//答案完全正确
return "恭喜!答对了!!";
else{
textAreaContent+= "位置正确的有:"+a+"个,位置错误的有:"+b+"
个,完全错误的有"+(4-a-b)+"个/n";
return "继续努力";
}
}
………………
填空题[说明]已知对某载客车辆(Car)进行类建模,如图13-2所示,其中类Engine表示发动机引擎,类Wheel表示车轮,类Body表示车身,类Driver表示司机,类Passenger表示乘客。[Java代码]classBody//此处代码省略;//车身类classPassenger//此处代码省略;//乘客类classWheel//此处代码省略;//车轮类classDriver//司机类publicStringname;//表示第几路公交车司机publicDriver(StringdriverName)name=driverName;//构造函数;classEngine//引擎类publicStringengineNo;//引擎编号publicEngine(StringengineNo)this.engineNo=engineNo;//构造函数;publicclassCar//汽车类staticfinalint(1)=7;//定义最多载客数staticfinalintMAX_WHEELS=5;//定义最多轮胎数protectedEngineengine;protectedDriverdriver;protectedBodybody=newBody();protectedWheel[]wheels;protectedPassenger[]passengers;publicCar(Driverdriver)//构造函数(2).driver=driver;engine=newEngine("TX6536型号引擎");wheels=newWheel[MAX_WHEELS];passengers=newPassenger[MAX_PASSENGERS];for(intindex=0;index<MAX_WHEELS;index++)wheels[index]=newWheel();for(intindex=0;index<MAX_PASSENGERS;index++)passengers[index]=null;intgetPassengerNumber()//获取车上乘客数量//此处代码省略voidgetOnPassenger(PassengeraPassenger)//乘客上车//此处代码省略voidrun()//开车if((3))(System.out.printin("司机尚未上车!");return;//此处代码省略publicstaticvoidmain(Stringargs[])Driverdriver=newDriver("第五路公交车司机");Carcar=newCar((4));for(intindex=0;index<MAX_PASSENGERS;index++)car.getOnPassenger((5)Passenger());car.run();
填空题阅读以下说明和Java程序,填充程序中的空缺,将解答填入对应栏内。[说明]下面的程序用来计算并寻找平面坐标系中给定点中最近的点对(若存在多对,则输出其中的一对即可)。程序运行时,先输入点的个数和一组互异的点的坐标,通过计算每对点之间的距离,从而确定出距离最近的点对。例如,在图所示的8个点中,点(1,1)与(2,0.5)是间距最近的点对。[Java代码]importJava.util.Scanner;classGPointprivatedoubiex,y;publicvoidSetX(aoublex)this.x=x;publicvoidsetY(doubley)this.y=y;publicdoublegetX()returnthis.x;publicdoublegetY()returnthis.y;classFindNearestPointspublicstaticvoidmain(String[]rgs)Scannerinput=newScanner(System.in);System.out.print("输入点的个数:");intnumberOfPoints=input.nextint();______points=newGPoint[numberOfPoints];//创建保存点坐标的数组System.out.print("请输入"+numberofPoints+"个点的坐标");for(inti=0;i<points.length;i++)points[i]=______;points[i].setX(input.nextDouble());points[i].setY(input.nextDouble());FindNearestPointsfnp=newFindNearestPoints();intp1=0,p2=1;//p1和p2用于表示距离最近的点对在数组中的下标doubleshortestDistance=fnp.getDistance(points[p1],points[p2]);//计算每一对点之间的距离for(inti=0;i<points.length;i++)for(intj=1+1;j<______;j++)doubletmpDistance=fnp.______;//计算两点间的距离if(______)p1=i;p2=j;shortestDistance=tmpDistance;System.out.println("距离最近的点对是("+points[p1].getX()+","+points[p1].getY()+")和("+points[p2].getX()+","+points[p2].getY()+")");publicdoublegetDistance(GPointpt1,GPointpt2)retumMath.sqrt((pt2.getX()-pt1.getX())*(pt2.getX()-ptllgetX())+(pt2.getY()-pt1.getY())*(pt2.getY()-pt1.getY());
填空题阅读以下说明和C函数,填充函数中的空缺。 [说明] 函数GetDateId(DATE date)的功能是计算并返回指定合法日期date是其所在年份的第几天。例如,date表示2008年1月25曰时,函数的返回值为25,date表示2008年3月3日时,函数返回值为63。 函数Kday_Date(int theyear,int k)的功能是计算并返回指定合法年份theyear(theyear≥1900)的第天(1≤k≤365)所对应的日期。例如,2008年的第60天是2008年2月29日,2009年的第60天是2009年3月1日。 函数isLeapYear(int y)的功能是判断y代表的年份是否为闰年,是则返回1,否则返回0。 DATE类型定义如下: typedef struct int year,month,day; DATE; [C函数1] int GetDateId(DATE date) Const int days_month[13]=(0,31,28,31,30,31,30,31,31,30,31,30,31); int i,date_id=date.day; for(i=0;i<______;i++) date_id+=days_month[i]; if(______&&isLeapYear(date.year))date_id++; return date_id; [C函数2] ______Kday_Date(int theyear,int k) int i; DATE date; int days_month[13]=(0,31,28,31,30,31,30,31,31,30,31,30,31); assert(k>=1&&k<=365&&theyear>=1900); /*不满足断言时程序终止*/ date.year=______; if(isLeapYear(date.year))days_month[2]++; for(i=1;;) k=k-davs_month[i++]; if(k<=0)(date.day=k+______;date.month=i-1;break; return date;
填空题阅读以下说明和C函数代码,回答问题。[说明]著名的菲波那契数列定义式为:f1=1,f2=1,fn=fn-1+fn-2(n=3,4,…)因此,从第1项开始的该数列为1,1,2,3,5,8,13,21,…。函数fib1和fib2分别用递归方式和迭代方式求解菲波那契数列的第n项(调用fib1、fib2时可确保参数n获得一个正整数1。[C函数代码]
填空题阅读以下说明和C程序,填补空缺。
[说明] 下面的程序按照以下规则输出给定名词的复数形式。
(1)若名词以“y”结尾,则删除y并添加“ies”。
(2)若名词以“s”、“ch”或“sh”结尾,则添加“es”。
(3)其他所有情况,直接添加“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({{U}} (1) {{/U}}) {
pstr[n-1]='i'; pstr[n]='e'; pstr[n+1]='s'; {{U}}(2) {{/U}};
} 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'; } {{U}} (4) {{/U}};
} 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={{U}}
(5) {{/U}}; printf("%s: %s/n", wc[i], ps);
/*输出单词及其复数形式*/ free(ps);
/*释放空间*/ } system("pause");
}
填空题{{B}}试题三{{/B}}阅读以下说明和C函数,回答问题。
[说明]
计算机在处理算术表达式时,首先将其转换为后缀表达式。例如,表达式“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==' ') {
/*当前字符是空格*/ {{U}} (1)
{{/U}}; /*字符指针指向下一字符*/
continue; }
else if
(isdigit(*ptr)) {
/*当前字符是数字,则将该数字开始的数字串转换为数值*/
tnum={{U}} (2) {{/U}};
while (*ptr>='0'
ptr++;
}
push({{U}} (4) {{/U}});
} 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 { {{U}}
(5) {{/U}}=Top(s); Pop( /*取运算结果*/
if (!IsEmpty(s)) return -1;
return 0; } }
填空题阅读以下说明和C++代码,填补空缺。
[说明]
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 {{U}}(1) {{/U}};
typedef vector<{{U}} (2) {{/U}}>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({{U}} (3) {{/U}});
ShowVector(theVector); //依次输出theVector中的元素 theVector.
erase(theVector. begin( )+3);
ShowVector(theVector); } void
ShowVector(INTVECTOR return; } INTVECTOR::iterator
{{U}}(4) {{/U}}; for(theIterator =
theVector.begin( ); theIterator != theVector.end(
); theIterator++){ cout<< *theIterator;
if(theIterator ! =thevector. end( )-1)cout<<",";
} cout<<endl; }
该程序运行后的输出结果为: 0, 1 , 2, 3, 4, 5 {{U}}
(5) {{/U}}
填空题阅读以下说明和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!=rimll) String tmp[]=s.split(","); testStudent[i++]=______(tmp[0],Integer.parseInt(tmp[1])); else done=true; in.closeo(); ______=new SortStudent(); ss.Soft(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.println("not a number!"); ______int size=100; //学生总数
填空题阅读以下说明和流程图,填补流程图中的空缺。[说明]本流程图用于计算菲波那契数列a1=1,a2=1,an=an-1+an-2,|n=3,4,...的前n项(n≥2)之和S。例如,菲波那契数列前6项之和为200计算过程中,当前项之前的两项分别动态地保存在变量A和B中。[流程图]
填空题[说明] java.util库中提供了Vector模板类,可作为动态数组使用,并可容纳任意数据类型。 该类的部分方法说明如下所示: 方法名 含义 add(k) 向vector对象的尾部添加一个元素k removeElementAt(i) 删除序号为i的元素(vector元素序号从0开始) isEmpty( ) 判断vector对象是否含有元素 size( ) 返回vector对象中所包含的元素个数 [Java代码] Import (1) ; public class JavaMain static private final int (2) =6; public static void main(String[]args) Vector theVector=new Vector< (3) >( ); //初始化theVector,将theVector的元素设置为0至5 for(int cEachItem=0; cEachItem<ARRAY_SIZE; cEachItem++) theVector. add( (4) ); 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 (5)
填空题阅读以下说明和C程序,填充函数中的空缺。[说明]N个游戏者围成一圈,从1~N顺序编号,游戏方式如下;从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,直到剩余一个游戏者为止,该游戏者即为获胜者。下面的函数playing(Linklisthead)模拟上述游戏过程并返回获胜者的编号。其中,N个人围成的圈用一个包含N个结点的单循环链表来表示,如图1所示,游戏者的编号放在结点的数据域中。在函数中,以删除结点来模拟游戏者退出圈子的处理。整型变量c(初值为1)用于计数,指针变量p的初始值为head(如图1所示)。游戏时,从p所指向的结点开始计数,p沿链表中的指针方向遍历结点,c的值随p的移动相应地递增。当c计数到2时,就删除p所指结点的下一个结点(因下一个结点就表示报数到3的游戏者),如图2所示,然后将c设置为0后继续游戏过程。结点类型定义如下:typedefstructnode{intcode;/*游戏者的编号*/structnode*next;}NODE,*LinkList;[C函数]intP1aying(LinkListhead,intn){/*head指向含有n个结点的循环单链表的第一个结点(即编号为1的游戏者)*/LinkListp=head,q;intthewinner,c=1;while(n>________){if(c==2){/*当c等于2时,p所指向结点的后继即为将被删除的结点*/q=p->next;p->next=________;printf("%d\t",q->code);/*输出退出圈子的游戏者编号*/free(q);}/*if*/p=________;}/*while*/theWinner=________;free(p);returntheWinner;/*返回最后一个游戏者(即获胜者)的编号*/}
