面试上机考试题
【题目】本题程序使用级数来计算cos(x)的值,计算公式是:cos(x)=1-x**2/2!+x**4/4!-x**6/6!……
其中x**n表示x的n次方。
实际计算时要求以从首项开始到绝对值大于等于e的项之和为cos(x)的近似值。本程序利用该级数求cos(pi/4)的值,e值为0.0000001。
【要求】
1、必须先将源程序录入到文件Myf1.java中,而后根据题目的要求以及程序中前后语句的逻辑关系,改正程序中的错误。
2、改错时不允许增加或删除任何语句。
3、改正后的程序文件保存在D盘姓名目录下。
【源程序】
class Cos
{
double cos;
Cos(double x, double e)
{
int n=0;
double sum=1;
int sign=1;
double term=1;
while(Math.abs(term)>=e)
{
term=term*x*x/(n+1)(n+2);
sum=sum+term*sign;
sign=sign*(-1);
n=n+2;
}
cos=sum;
}
}
class Myf1
{
public static void main(String args[])
{
Cos obj=new Cos(Math.PI/4,0.0000001);
System.out.println(cos);
}
}
【题目】
本题程序的功能,找出10~100之间所有可以表示为两个平方数之和的奇数(如,奇数13可表示为平方式4和平方数9之和)。采用的算法是:遍历10~100之间的所有奇数,对于每个数判断其是否可以表示为两个平方数之和(即对于任意小于该奇数x的数i,如果i和x-i均为技术,则说明其可以表示为两个平方数之和)。最后将满足条件的所有数以形如“13=4+9”的形式输出。
【要求】
1、必须先将源程序录入到文件Myf2.java中,而后根据题目的要求以及程序中前后语句的逻辑关系,改正程序中的错误。
2、改错时不允许增加或删除任何语句。
3、改正后的程序文件保存在D盘姓名目录下。
【源程序】
public class Myf2
{
public static void main(String args[])
{
int m;
for(int j=11;j<=100;j+=2)
{
if(m=result(j)!=0)
System.out.println(j+"="+m+"+"+(j-m));
}
}
static int result(int x)
{
int k;
for(int i=1;i<x-1;i++)
{
k=x-i;
if(isPfh(i)||isPfh(k))
return i;
}
return 0;
}
static boolean isPfh(int y)
{
boolean flag;
for(int i=0;i<=Math.sqrt(y);i++)
{
if(i*i==y)
{
flag=true;
break;
}
}
return flag;
}
}
【题目】
编程输出一个正整数的所有素数因子,该正整数由命令行参数给出。
【要求】
1、必须先将源程序录入到文件Myf3.java中,而后根据题目的要求以及程序中前后语句的逻辑关系,改正程序中的错误。
2、改错时不允许增加或删除任何语句。
3、改正后的程序文件保存在D盘姓名目录下。
【源程序】
class Myf3
{
public static void main(String args[])
{
if(args.length<1)
{
System.err.println("请输入一个正整数!");
System.exit(0);
}
int n=args[0];
System.out.println(n+"的所有素数因子有:");
for(int m=2;m<=n;m++)
{
if(n%m==0)
if(isPrime(m))
System.out.println(m);
}
}
boolean isPrime(int b)
{
boolean flag=true;
if(b==2) return flag;
int m=(int)(Math.ceil(Math.sqrt(b)));
for(int i=2;i<=m;i++)
{
if(b%i!=0)
{
flag=false;
break;
}
}
return flag;
}
}
【题目】
计算并输出一个字母字符串中每个字母出现的次数,不区分字母大小写。字符串由命令行参数传入。
【要求】
1、必须先将源程序录入到文件Myf4.java中,而后根据题目的要求以及程序中前后语句的逻辑关系,改正程序中的错误。
2、改错时不允许增加或删除任何语句。
3、改正后的程序文件保存在D盘姓名目录下。
【源程序】
class Myf4
{
public static void main(String args[])
{
if(args.length!=1)
{
System.err.println("请向程序传递一个参数!");
System.exit(-1);
}
String s=args[0];
int[] letterCount=new int[26];
String s2=s.toUpperCase();
char[] letters=s.toCharArray();
for(int count=0;count<=letters.length;count++)
{
char lett=letters[count];
if((lett>='A')&(lett<='Z'))
{
letterCount[lett-'A']++;
}
}
System.out.println("字符串s中每个字母出现的次数是:");
for(char count='A';count<='Z';count++)
System.out.print(count+":"+letterCount[count]+"\t");
System.out.println();
}
}
【题目】
本题程序建立了一个Judgment,模拟裁判小组给选手打分。该类包括:
(1)私有成员变量:double[] a:存储各位裁判给一位选手打的分。数组长度为裁判人数。
(2)成员方法:有3个:
构造方法 Judgment(double[] fa):用裁判给的分数创建Judgment对象。裁判给的分数由fa传递。
方法double ave():返回选手得分。裁判所给的分数中的最高分和最低分去掉,剩余分数的平均值为选手最后得分。
方法int getNumber():返回裁判总人数。
建立好Judgment类后,编写了一个测试类,创建一个Judgment对象,在main方法中用数据{8.7,9.5,9.0,9.3,9.8,9.4,9.2,9.4,8.3}作为9名裁判给一名选手打的分数,将形式为:
裁判人数:*
运动员得分:****
的信息在屏幕中输出。
【要求】
1、必须先将源程序录入到文件Myf5.java中,而后根据题目的要求以及程序中前后语句的逻辑关系,填充程序中的空行。
2、填空时注意一个空行只允许填入一个java语句。
3、改正后的程序文件保存在D盘姓名目录下。
【源程序】
class Myf5
{
public static void main(String args[])
{
double[] ra={8.7,9.5,9.0,9.3,9.8,9.4,9.2,9.4,8.3};
________________________________
System.out.println("裁判人数:"+j.getNumber());
System.out.println(____________________________);
}
}
class Judgment
{
private double[] a;
Judgment(double[] fa)
{
__________________________
}
double ave()
{
double max=a[0];
double min=a[0];
double sum=0;
for(int i=0;i<a.length;i++)
{
if(a[i]>max) max=a[i];
if(a[i]<min) min=a[i];
_____________________________
}
_____________________________________
}
int getNumber()
{
return a.length;
}
}
【题目】
本题程序建立了一个类PhoneCard(电话卡),实现电话接通一次扣除电话卡余额0.5元的功能。该类包括:
(1)成员变量:private int password:代表电话卡密码;
long cardNumber:代表电话卡卡号;
double balance:代表电话卡余额;
boolean connected:代表电话是否接通。
(2)成员方法:有4个:
构造方法 PhoneCard()。
方法boolean performConnection(long cn, int pw):实现接入电话操作,cn电话卡号,pw密码。当参数cn为当前电话卡的卡号并且参数pw为当前电话卡的密码,则认为电话接通,返回true,否则认为电话未接通,返回false。
方法double getBalance():返回电话卡余额。如电话接通,则返回电话卡余额;如电话未接通,则返回数值-1。
方法void performDial():电话接通,电话卡余额扣除0.5元。
建立好PhoneCard类后,编写了一个测试类,在main方法中建立了一个PhoneCard对象(卡号:12345,密码:123,卡上余额:30),在屏幕中输出接通一次后电话卡余额。
【要求】
1、必须先将源程序录入到文件Myf6.java中,而后根据题目的要求以及程序中前后语句的逻辑关系,填充程序中的空行。
2、填空时注意一个空行只允许填入一个java语句。
3、改正后的程序文件保存在D盘姓名目录下。
【源程序】
class Myf6
{
public static void main(String args[])
{
PhoneCard pc=new PhoneCard(12345,123,30);
__________________________________
pc.performDial();
System.out.println(pc.getBalance());
}
}
class PhoneCard
{
private int password;
long cardNumber;
double balance;
boolean connected;
public PhoneCard(long cn, int pw, double bal)
{
cardNumber=cn;
password=pw;
balance=bal;
______________________________
}
boolean performConnection(long cn, int pw)
{
__________________________________
{
connected=true;
}
else
{
connected=false;
}
__________________________________
}
double getBalance()
{
if(connected) return balance;
else return -1;
}
void performDial()
{
if(connected)
______________________________
}
}
【题目】
本题程序建立了一个用于分析文本的类:WordAnalysis。该类包括:
(1)成员变量:StringBuffer sb:存储一段文本。
(2)成员方法:有3个:
构造方法 WordAnalysis():将从键盘输入的一段英文文本中存入成员变量sb。要求输入的文本中单词之间只以一个空格分隔,整个文本以“#”结束。存入sb的内容不包括“#”。
方法int getWordNum():返回sb中的单词数。
方法int getCharNum():返回sb中的字符数(不包括空格)。
建立好WordAnalysis类后,编写了一个测试类,建立了一个WordAnalysis对象,调用方法getWordNum()和getCharNum()获取了文本中的单词数与字符数。
【要求】
1、必须先将源程序录入到文件Myf7.java中,而后根据题目的要求以及程序中前后语句的逻辑关系,填充程序中的空行。
2、填空时注意一个空行只允许填入一个java语句。
3、改正后的程序文件保存在D盘姓名目录下。
【源程序】
import java.util.Scanner;
class Myf7
{
public static void main(String args[])
{
Scanner scanner = new Scanner(System.in);
String line=scanner.nextLine();
(____________________)
System.out.println("输入文本中的单词数为 "+obj.getWordNum());
System.out.println("输入文本中的字符数为 "+obj.getCharNum());
}
}
class WorldAnalysis
{
StringBuffer sb;
WorldAnalysis(String line)
{
if(line.charAt(line.length()-1)=='#')
(__________________________)
sb=new StringBuffer(line);
}
int getWordNum()
{
int count;
char ch;
(________________)
for(int i=0;i<sb.length();i++)
{
ch=sb.charAt(i);
if(ch==' ')
{
count ++;
}
}
(____________________)
return count;
}
int getCharNum()
{
int count;
count=0;
char ch;
for(int i=0;i<sb.length();i++)
{
ch=sb.charAt(i);
(______________________)
{
count++;
}
}
return count;
}
}
【题目】
本题程序建立了一个书类:Book,用于模拟图书馆的图书借阅情况。该类包括:
(1)成员变量:
String author:存储作者名。
String title:存储书名。
private int status:存储书的借阅情况,0表示在馆内,1表示已借出。初始值为0.
(2)构造方法:
public Book(String n, String t):创建一个Book类的对象,将参数n和t的值分别赋给成员变量author和title。
(3)公有成员方法:有3个:
public int getStatus():返回变量status的值。
public void setStatus(int s):将参数s的值赋给变量status。
public String show():以字符串“… by … is …”的形式返回书的名称、作者和借阅情况(根据变量status的值来输出是“在馆内”或“已借出”),例如“狂人日记 by 鲁迅 is 在馆内”。
建立好Book类后,编写了一个测试类,建立两个Book类的对象b1和b2,它们的参数分别是“巴金”,“家”和“易中天”,“品三国”。然后将b2对象的借阅情况设为“已借出”状态,最后调用各自的show方法输出b1和b2的相关信息。
【要求】
1、必须先将源程序录入到文件Myf8.java中,而后根据题目的要求以及程序中前后语句的逻辑关系,填充程序中的空行。
2、填空时注意一个空行只允许填入一个java语句。
3、改正后的程序文件保存在D盘姓名目录下。
【源程序】
class Myf8
{
public static void main(String args[])
{
Book b1=new Book("巴金","家");
Book b2=new Book("易中天","品三国");
(__________________________________)
System.out.println(b1.show());
System.out.println(b2.show());
}
}
class Book
{
String author;
String title;
private int status;
Book(String n, String t)
{
author=n;
title=t;
(____________________)
}
public int getStatus()
{
return status;
}
(_____________________________)
{
status=s;
}
public String show()
{
String statusstr="";
(___________________________)
(___________________________)
statusstr+=" is 已借出";
else
statusstr+=" is 在馆内";
return statusstr;
}
}
某公司上机考试用的,谁能解决下
[ 本帖最后由 mh034008 于 2012-1-11 07:37 编辑 ]