阅读以下说明和Java代码,将应填入(n)处的字句写在对应栏内。
[说明]
本程序的功能是给公司的员工Tom,Jack,Green增加薪水。三人的职位分别是programmer, Manager,CEO。
程序由6个类组成:WorkerTest是主类,programmer,Manager,CEO三个类,薪水增加的规则是 programmer的涨幅是5%;Manager的是10%;CEO也是Manager,但是它除了有Manager的涨幅,还有1000元的bonus。接口SalaryRaise提供了一个增加薪水的方法raise()。
[java程序]
public class WorkerTest {
public WorkerTest() {}
public static void main(String[] args) {
Programmer programmer = new Programmer("Tom" ,3000);
Manager manager = new Manager("Jack" ,4000);
CEO ceo = new CEO("Green" ,4000);
Worker [] worker = new Worker[3];
programmer, raise();
manager, raise();
ceo. raise();
worker[0] = programmer;
worker [1] = manager;
worker[2] = ceo;
for (int i = 0 ;i < worker, length; i + + ) {
System. out. prinfln (" Name:" + worker [i]. getName () +" \ tSalary:" + worker [i]. getSalary ());
public interface SalaryRaise { void raise(); }
public class Worker {
public String name;
public double (1);
public Worker() {}
public String getName() {return name;}
public void setName(String name) {this. name = name;}
public double getSalary() {return salary;}
public void setSalary(double salary) { this. salary = salary; }
}
public class Programmer extends Worker implements (2) {
public Programmer() {}
public void raise() {
double pets=0.05;
double sala = this. getSalary() * (1 + pers);
this. setSalary (sala);
public Programmer(Siring name, double salary) t
this. name = name;
this. salary = salary;
public class Manager extends (3) implements SalaryRaise {
public Manager() { }
public Manager(String name, double salary) {
this. name = name;
this. salary = salary;
}
public void raise() {
double pets = 0.1;
double sala = this. getSalary() * (1 + pers);
this. setSalary(sala);
}
}
public class CEO extends Manager implements SalaryRaise {
public CEO() {}
public CEO(String name,double salary) {
this. name = name;
this. salary = salary;
}
public void raise() {
double bonus = 1000;
(4);
double sala = this. getSalary();
(5);
this. setSalary(sala);
}
}
第1题
阅读以下函数说明和C语言函数,将应填入(n)处的字句写在对应栏内。
【说明】
编写程序,生成一个新文本文件,它由一个已知文本文件的所有偶数行组成。要求已知文本文件名和新文本文件名均从键盘输入。请填空完善程序。
【C语言程序】
include<stdio.h>
main()
{
FILE *oldf,*newf;
char ch,fname[20];
int i;
do{
printf("Enter name of existed text file to be read:");
scanf("%s",fname);
if((oldf=fopen(fname,"r"))==NULL)
printf("File %s can't open!\n",fname);
}while(oldf==NULL);
do{
printf("Enter mane of new text file to be written:");
scanf("%s",fname);
if(((1)==NULL)
printf("File %s can't open!\n",fname);
}while((2));
i=1;
while(!feof(oldf))
{
while((ch=fgetc(oldf))!=(3))
{
if(i%2==(4))
fputc(ch,newf);
}
fputc('\n',newf);
(5);
}
fclose(oldf);
fclose(newf);
}
第2题
阅读下列算法说明和算法,将应填入(n)处的语句写在对应栏内。
【说明】
本程序可以将字符串s1中出现的所有s2子串替换成s3,形成一个新串,但不破坏字符串s1。
【代码】
include<stdio.h>
include<stdlib.h>
include<string.h>
char*replace(char *s1, char *s2,char *s3)
{ char *p, *q, *r, *s; int |2,|3, i=0;
|2=strlen(s2);
|3=strlen(s3);
p=s1;
while((p=strstr(p,s2))!=NULL)
{ i++; /* 统计s2串出现的次数*/
(1);
}
i=(2);
s=r=(char*)malloc(i); /*分配动态内存存放新字符串*/
p=s1;
while(1)
{ q=strstr(p, s2); /* s2串是否在s1中出现,q是首次出现的位置*/
if(q!=NULL)
{ i=q-p;
(3);
r+=i;
(4);
r+=|3;
p=q+|2; /*将指向s1串的指针移到s2子串出现的位置后,
为下一次循环做好准备*/
}
else /*q为空,表示剩余的s1串中已经没有s2*/
{ (5);
break; /*终止循环*/
}
}
return(s); /*返回指向所形成的新串的指针*/
}
void main()
{ char *a="sabcababde", *b="ab", *c="efg", *d;
d=replace(a, b, c); printf("result=%s\n", d); free(d);
}
第3题
阅读以下说明和C++程序,将应填入(n)处的字句写在对应栏内。
[说明]
下面程序实现十进制向其它进制的转换。
[C++程序]
include"ioStream.h"
include"math.h"
include
typedef struct node {
int data;
node*next;
}Node;
Class Transform.
{
DUDlic:
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;
}
}
第4题
阅读以下说明、Java代码和HTML文档,将应填入(n)处的字句写在对应栏内。
【说明】
当用户启动html浏览器并首次打开下面的html文档时,Java Applet小程序在显示面板上显示字符串“欢迎您!”;当html页面被其他窗口遮挡后再次显示时,小程序在显示面板上显示“欢迎您回来!”
[Java代码]
import java.awt.*;
import java.applet.*;
public class HelloApplet extends (1) {
public void paint( (2) ){
g.drawString(message,10,20);
message="欢迎您回来!";
}
public void (3) (){
message="欢迎您!";
}
private (4) message;
}
[HTML文档]
<html>
<head>
<title>HTML Test HelloApplet Page</title>
</head>
<body>
Test HenoApplet 小程序<br>
<applet
codebase="."
code="(5)"
name="TestApplet"
width="400"
height="300"
>
</applet>
</body>
</html>
第5题
阅读以下说明和Java代码,将应填入(n)处的字句写在对应栏内。
【说明】
有一种猜数字游戏,开始时程序随机产生四个不相同的个位数字(顺序固定),然后玩家输入猜测的四个数字。程序比较后给出提示,本次猜数字有几个数字完全正确,有几个数字数值正确但是位置错误。玩家重复猜测直至结果完全正确。例如,程序生成“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 "继续努力";
}
}
………………
第6题
阅读下列程序说明和C++程序,把应填入其中(n)处的字句,写对应栏内。
【说明】
下面的程序实现了类String的构造函数、析构函数和赋值函数。
已知类String的原型为:
class String
{
public:
String(coust char * str = NULL); //普通构造函数
String( const String &other); //拷贝构造函数
~String(void); //析构函数
String & perate =(const String &other); //赋值函数
private:
char * m_data; // 用于保存字符串
};
//String 的析构函数
String:: ~String (void)
{
(1);
}
//String 的普通构造函数
String: :String( const char * str)
{
if (2)
{
m_data = new char[1];
*m_data = '\0';
}
else
{
int length = strlen(str);
m_data = new ehar[ length + 1 ];
strepy(m_data, str);
}
}
//拷贝的构造函数
String:: String( const String &other)
{ int length = strlen(other. m_data);
m_data = new char[ length + 1 ];
strepy(m_data, other, m_data); //赋值函数
String & String::operate = (eonst String &other) //
{
if (3)
return * this;
delete [] m_clara; //释放原有的内存资源
int length = strlen( other, m_data);
m_data = new chart length + 1 ];
(4);
return (5);
}
第7题
阅读下列函数说明和C代码,把应填入其中n处的字句写在答卷的对应栏内。
【函数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);
}
* p='\0';
return op-outstr;
}
第8题
阅读以下应用说明及Visual Basic程序代码,将应填入(n)处的字句写在对应栏内。
【说明】
已知窗体上有两个名为cmdGene和cmdSort的命令按钮。单击cmdCene按钮时,随机产生10个[1,100]范围内的整数并将它们放在数组intA中;单击cmdSort按钮时,用选择法排序这10个数并输出。
【程序代码】
Dim intA(1 To 10)As integer
Private Sub cmdGene_Click( )
Dim intl As Integer
Randomize
For intl = 1 To 10
intA(intl) =(1)
Next intl
End Sub
Private Sub cmdSort_Click( )
Dim intl, intJ,intMin, intTemp As Integer
For intl = 1 To 9
intMin = intA(intl)
For intJ=(2) To 10
If intA(intJ) < intMin Then
Temp = intA(intJ)
intA(intJ)=(3)
intMin = intTemp
End If
Next intJ
(4)
(5)
For intl = 1 To 10
Print Str(intA(intl))+" ";
Next intl
Next lntl
End Sub
第9题
阅读下列程序说明和C代码,将应填入(n)处的字句写在对应栏内。
【说明】
下面的程序功能的功能是以行为单位对字符串按下面的条件进行排序。排序条件为:从字符串中间一分为二,右边部分按字符的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=(1);j<strl;j++) /*对后半部分的字符串进行排序*/
for(k=j+1;k<strl;k++)
if( (2) )
{
ch=dat[i] [j];
dot[i] [j]=dat[i] [k];
dat[i] [k]=ch;
}
for(j=0; (3) 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;
(4);
while(i<20 && fgets(dat[i],80,in)!=NULL)
{
p = strchr(date [i],"\n");
if(p) *p=0;
i++;
}
fclose (in);
}
writeDat()
{
FILE * out;
int i;
clrscr ();
ut = fopen("out. dat" ,"W");
for(i=0;i<20;i++)
{
printf("%s\n",dar[i]);
printf ((5));
}
fclose (out);
}
第10题
阅读下列说明和C++程序,将应填入(n)处的字句写在对应栏内。
【程序1说明】
程序1中定义了数组的类模板,该模板使得对于任意类型的二维数组,可以在访问数组元素的同时,对行下标和列下标进行越界判断,并给出相应的提示信息(C++语言本身不提供对下标越界的判断)。
【程序1】
include < iostream. h >
template < class T > class Array2D;
template < class T > class Array2DBody {
friend (1);
T * tempBody;
int iRows, iColumns, iCurrentRow;
Array2DBody(int Rows,int Cols) {
tempBody =(2);
iRows = Rows;
iColumns = Cols;
iCurrentRow = -1;
}
public:
T& operator[ ] (int j){
bool row_ error, column_ error;
row_ error = column_ error = false;
try {
if ( iCurrentRow < 0||iCurrentRow > = iRows)
row_ error = true;
if( j < 0||j > = iColumns)
column_error = true;
if( row_error = = true [ [ column_ error = = true)
(3);
}
catch(char) {
if (row_error = = true)
cerr < < "行下标越界"[" < < iCurrentRow < < "]";
if( colmnn_error = = true)
cerr< <"列下标越界[" < <j< <"]";
cout < < "\n";
}
return tempBody[ iCurrentRow * iColumns + j ];
}
~ Array2 DBody ( ) { delete [ ] tempBody; } }; template < class T > class Array2D {
Array2DBody < T > tBody;
public:
Array2DBody < T > & operalor[ ] (int i) {
tBody, iCurreutRow = i;
(4);
Array2D(int Rows,int Cols): (5) {} };
void main( )
{
Array2D <int> al ( 10,20 );
Array2D <double> a2(3,5);
int bl;
double b2;
b1=a1[-5][10];//有越界提示:行下标越界[-5]
b1=a1[10][15];//有越界提示:行下标越界[10]
b1=a1[1][4];//没有越界提示
b2=a2[2][6];//有越界提示:列下标越界[6]
b2=a2[10][20];//有越界提示:行下标越界[10]列下标越界[20]
b2=a2[1][4];//没有越界提示
}
为了保护您的账号安全,请在“上学吧”公众号进行验证,点击“官网服务”-“账号验证”后输入验证码“”完成验证,验证成功后方可继续查看答案!