程序填空题
- 如下程序可以打印所有3位的水仙花数,水仙花数是指其值等于它本身每位数字立方和的数,如153就是一个水仙花数。
public class Main {
public static void main(String[] args) {
int i, bit0, bit1, bit2;
for(i = 100; i < 999; ++i) {
bit0 = i % 10;
bit1 = (i/10)%10;
bit2 = i/100;
if(bit0 * bit0 * bit0 + bit1 * bit1 * bit1 + bit2 * bit2 * bit2 == i)
System.out.printf("%d\n", i);
}
}
}
- 程序改错题:求1到5的阶乘的和
功能:求1!+2!+3!+4!+5!
public class Main {
public static void main(String[] args) {
fun();
}
public static void fun(){
int n,j;
//float s=0.0,t=1.0;//此行语句有错误,改正后填到下侧空格内
float s=0.0f,t=1.0f;
for(n=1;n<=5;n++){
//s=1;//此行语句有错误,改正后填到下侧空格内
t = 1;
for(j=1;j<=n;j++){
//t=t*n;//此行语句有错误,改正后填到下侧空格内
t = t*j;
}
//s+t=s;//此行语句有错误,改正后填到下侧空格内
s = s + t;
}
System.out.printf("jiecheng=%.0f\n",s);
}
}
函数题
1. Person类2
在Person类的基础上,添加一个带参数的构造函数,参数分别为姓名,性别,年龄,提供print函数打印其信息
输入描述:
姓名(name),性别(sex)和年龄(age)
输入样例:
Lucy male 23
输出样例:
name:Lucy; sex:male; age:23
裁判测试程序:
import java.util.Scanner;
public class Main{
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
String name = scan.next();
String sex = scan.next();
int age = scan.nextInt();
Person p = new Person(name,sex,age);
p.print();
scan.close();
}
}
/* 你的代码被嵌在这里*/
答案
class Person{
private String name;
private String sex;
private int age;
Person(String name,String sex,int age){
this.name=name;
this.sex=sex;
this.age=age;
}
public void print() {
System.out.println("name:"+name+"; sex:"+sex+"; age:"+age);
}
}
2. 设计Student类
定义一个Student类,表示学生信息。Student类有学号(id,整型)、姓名(name,字符串)、性别(sex,字符型,m表示男性,f表示女性)三个私有数据域;有参构造方法将学号、姓名、性别设置为给定的参数;成员方法display显示学生的信息。
注意,Student类的定义应该这样开始:
class Student {
也就是说,Student类的class前面不要有public。
裁判测试程序样例:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int id = in.nextInt();
String name = in.next();
char sex = in.next().charAt(0);
Student student = new Student(id, name, sex);
student.display();
in.close();
}
}
// 需要同学们完成部分,Student类
class Student {
// 数据成员
// 成员方法
}
答案
class Student{
private int id;
String name = new String();
private char sex;
public Student(int a,String b,char c){
id = a;
name = b;
sex = c;
}
public void display(){
System.out.println(id);
System.out.println(name);
System.out.println(sex);
}
}
3. 创建一个直角三角形类实现IShape接口
创建一个直角三角形类(regular triangle)RTriangle类,实现下列接口IShape。两条直角边长作为RTriangle类的私有成员,类中包含参数为直角边的构造方法。
interface IShape {// 接口
public abstract double getArea(); // 抽象方法 求面积
public abstract double getPerimeter(); // 抽象方法 求周长
}
输入样例:
3.1 4.2
输出样例:
6.51
12.5202
裁判测试程序样例:
import java.util.Scanner;
import java.text.DecimalFormat;
interface IShape {
public abstract double getArea();
public abstract double getPerimeter();
}
/*你写的代码将嵌入到这里*/
public class Main {
public static void main(String[] args) {
DecimalFormat d = new DecimalFormat("#.####");
Scanner input = new Scanner(System.in);
double a = input.nextDouble();
double b = input.nextDouble();
IShape r = new RTriangle(a, b);
System.out.println(d.format(r.getArea()));
System.out.println(d.format(r.getPerimeter()));
input.close();
}
}
答案
//创建一个直角三角形类实现IShape接口
class RTriangle implements IShape {
RTriangle(double a, double b) {
this.a = a;
this.b = b;
}
public double getArea() {
return 0.5 * a * b;
}
public double getPerimeter() {
return (a + b + Math.sqrt(a * a + b * b));
}
private double a;
private double b;
}
4. 学生类
有一个学生类的结构如下:
class Student {
private int no;
private String name;
private int score;
public Student(int _no, String _name, int _score) {
no = _no;
name = _name;
score = _score;
}
public int getNo() {return no;}
public String getName() {return name;}
public int getScore() {return score;}
public void print(){
System.out.println(no + " "+name+" "+score);
}
}
请构造main函数完成如下功能:
从键盘中读入三个学生的信息,比较他们的成绩,按照成绩由高到低排列输出
输入描述:
三个学生的学号、姓名、成绩
输出描述:
由高到低排列输出的三个学生信息
输入样例:
1 wang 89
2 liu 78
3 ma 90
输出样例:
3 ma 90
1 wang 89
2 liu 78
裁判测试程序样例:
/*你的代码被嵌在这里*/
class Student {
private int no;
private String name;
private int score;
public Student(int _no, String _name, int _score) {
no = _no;
name = _name;
score = _score;
}
public int getNo() {return no;}
public String getName() {return name;}
public int getScore() {return score;}
public void print(){
System.out.println(no + " "+name+" "+score);
}
}
答案
import java.util.Arrays;
import java.util.Comparator;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
final int N = 3; // 学生个数
Scanner cin = new Scanner(System.in);
Student[] stu = new Student[N];
for(int i = 0; i < N; i ++ ) {
stu[i] = new Student(cin.nextInt(), cin.next(), cin.nextInt());
}
Arrays.sort(stu, new Comparator<Student>( ) { // 使用 Comparator 建立以什么属性进行排序
@Override
public int compare(Student o1, Student o2) {
// TODO Auto-generated method stub
return o2.getScore() - o1.getScore();
}
});
for(int i = 0; i < N; i ++) {
stu[i].print();
}
}
}
编程题
1. 求n的阶乘
根据输入的整数n,输出n的阶乘
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int n;
n = input.nextInt();
int result = 1;
for (int i=1;i<=n;i++){
result=result*i;
}
System.out.println(result);
}
}
2. 计算公约数和公倍数
输入两个正整数m和n(2<=m和n<=100000),计算它们的最大公约数和最小公倍数并输出。
输入样例:
36 946
输出样例:
最大公约数2
最小公倍数17028
import java.util.Scanner;
public class Main{
public static void main(String args[]){
Scanner input = new Scanner(System.in);
long x = input.nextInt();
long y = input.nextInt();
long max,min;
if (x>y){
max = x;
min = y;
}
else{
max = y;
min = x;
}
long a,c,remainder;
a = max*min;
remainder = max%min;
while(remainder != 0){
max=min;
min=remainder;
remainder=max%min;
}
c = a/min;
System.out.println("最大公约数"+min);
System.out.println("最小公倍数"+c);
}
}
3. 学生类-构造函数
定义一个有关学生的Student类,内含类成员变量:
String name、String sex、int age,所有的变量必须为私有(private)。
1.编写有参构造函数:
能对name,sex,age赋值。
2.覆盖toString函数:
按照格式:类名 [name=, sex=, age=]输出。使用idea自动生成,然后在修改成该输出格式
3.对每个属性生成setter/getter方法
4.main方法中
•输入1行name age sex , 调用上面的有参构造函数新建对象。
输入样例:
tom 15 male
输出样例:
Student [name=‘tom’, sex=‘male’, age=15]
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in=new Scanner(System.in);
String name=in.next();
int age=in.nextInt();
String sex=in.next();
Student a=new Student(name,sex,age);
System.out.println(a.toString());
}
}
class Student{
private String name;
private String sex;
private int age;
Student(String name,String sex,int age){
this.name= name;
this.sex= sex;
this.age=age;
}
@Override
public String toString() {
return "Student [name='" + name + "', sex='" + sex + "', age=" + age + "]";
}//如果是return,主函数就要写System+如果是System,那么主函数就用对象直接调用
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}