Java答案全集实验汇总。
实验2 数据类型和变量的使用
一、程序填空,在屏幕上显示一个短句“Programming in Java is fun!”
import java.io.*;
public class Test10001{
public static void main(String args[]){
/*------------------------*/
System.out.println("Programming in Java is fun!"); }
}
二、程序填空,在屏幕上显示如下网格。
+---+---+
| | |
| | |
+---+---+
import java.io.*;
public class Test10002{
public static void main(String args[]){
/*------------------------*/
System.out.println("+---+---+");
System.out.println("| | |");
System.out.println("| | |");
System.out.println("+---+---+");
}
}
三、编写程序,在屏幕上显示如下图案。(要求:第1行行首无空格,每行行尾无空格)* * * *
* * *
* *
*
public class Test10003{
public static void main(String args[]){
/*------------------------*/
System.out.println("* * * *");
System.out.println(" * * *");
System.out.println(" * *");
System.out.println(" *");
}
}
实验3 运算符和表达式的使用
1、
运行结果:
m=2 k=1
x=1.0 y=2.0 z=-3.0
ch1=-A ch2=A
ch1=-A ch2=a
Hello,Welcome to core Java!
思考题:
(1)字符'A'的Unicode码比字符'a'的Unicode码小32。
(2)假设字符型变量ch中保存一个大写字母,执行ch+=('a'-'A' );后,ch中
是相应的小写字母。例:若ch='B',执行后ch='b'。
2、
运行结果:
m=3 n=2. m大于n吗?true
m=2 n=2. m大于n吗?false
str1=Hello;str2=Hello!
s1和s2相等吗?false
思考题:
(1)s2比s1多一个字符“!”,所以不相同。
(2)s2比s1多一个字符,所以s2比s1大。
3、
运行结果:
逻辑变量b1=true、b2=false
b1^b2(异或运算)的结果是:true
b1^!b2(b2取反后与b1异或运算)的结果是:false
n=31,m=15; m与n的位与运算结果是:15
m、n的位与后左移2位的结果:60
思考题:
(1)若给b1赋值2,则程序出错。因为类型不匹配:不能从int转换为boolean (2)n是十六进制数,化为二进制为0001 1111;
m是八进制数,化为二进制为0000 1111;
所以n&m为0000 1111(二进制),就是十进制数15。
(3)120
(4)左移运算就是乘法运算,左移n位就相当于乘以2^n
4、
运行结果:
(m+n>k)?(m++):(--m+n++)的运算结果:2
float型变量强制转换为int型的结果是:3
int型变量运算:(m+2*n)/k的结果是:2
(m+2*n)/k的结果赋值给float型变量后x=2.0
思考题:
(1)因为temp=(--m+n++),等价于依次执行以下命令:
--m;
temp=(m+n);
n++;
所以,temp=2,m=0,n=3,k=3
(2)因为3.14是double类型,不能赋给float类型的变量x
在3.14后面加F或f,将其转换成float类型,就可以赋值了
(3)此时m=1,n=3,k=3,所以(m+2*n)/k=7/3=2
(4)x=(m+2*n)/(float)k=7/3.0=2.3333333
5、
源程序如下:
public class Ball {
public static void main (String[] args){
float r=6.5f, PI=3.14f,V;
V=4f/3f*PI*r*r*r;
System.out.println("球的半径为"+r);
System.out.println("球的体积为"+V);
}
}
运行结果:
球的半径为6.5
球的体积为1149.7634
实验4 顺序结构程序的设计
程序填空,不要改变与输入输出有关的语句。
一、求两个数的和与差。
输入整数a和b,计算并输出a、b的和与差。
例:
输入
2 -8
输出
The sum is -6
The difference is 10
import java.io.*;
import java.util.Scanner;
public class Test20001{
public static void main(String args[]){
int a, b, sum, diff;
Scanner in=new Scanner(System.in);
a=in.nextInt();
b=in.nextInt();
/*------------------*/
sum=a+b;
diff=a-b;
System.out.println("The sum is "+sum);
System.out.println("The difference is "+diff);
}
}
二、求平方根。
输入1个实数x,计算并输出其平方根。
例:
输入
1.21
输出
The square root of 1.21 is 1.1
import java.io.*;
import java.util.Scanner;
public class Test20002{
public static void main(String args[]){
double x, root;
Scanner in=new Scanner(System.in);
x=in.nextDouble();
/*------------------*/
root=Math.sqrt(x);
System.out.println("The square root of "+x+" is "+root);
}
}
三、华氏温度转换为摄氏温度。
输入华氏温度f,计算并输出相应的摄氏温度c。c = 5/9(f-32).
例:括号内是说明
输入
17.2 (华氏温度)
输出
The temprature is -8.222222222222223
import java.util.Scanner;
public class Test20003 {
public static void main(String[] args) {
Scanner in=new Scanner(System.in);
double f, c;
f=in.nextDouble();
/*------------------*/
c=5.0/9*(f-32); //注意:5/9结果是0
System.out.println("The temprature is "+c);
}
}
四、计算旅途时间。
输入2个整数time1和time2,表示火车的出发时间和到达时间,计算并输出旅途时间。
有效的时间范围是0000到2359,不需要考虑出发时间晚于到达时间的情况。
例:括号内是说明
输入
712 1411(出发时间是7:12,到达时间是14:11)
输出
The train journey time is 6 hrs 59 mins.
import java.util.Scanner;
public class Test20004 {
public static void main(String[] args) {
Scanner in=new Scanner(System.in);
int time1, time2, hours, mins;
time1=in.nextInt();
time2=in.nextInt();
/*------------------*/
/*计算两个时间之间的小时数和分钟数*/
hours=time2/100-time1/100;
mins=time2%100-time1%100;
/*当计算得到的分钟数为负数时进行如下处理*/
hours=mins>0?hours:hours-1;
mins=mins>0?mins:mins+60;
System.out.println("The train journey time is "+hours+" hrs "+ mins+"
mins.");
}
}
五、数字加密。
输入1个四位数,将其加密后输出。方法是将该数每一位上的数字加9,然后除以10取余,做为该位上的新数字,最后将第1位和第3位上的数字互换,第2位和第4位上的数字互换,组成加密后的新数。
例:括号内是说明
输入
1257
输出
The encrypted number is 4601(每一位上的数字加9除以10取余后,得0146,交换后得到4601)
import java.util.Scanner;
public class Test20005 {
public static void main(String[] args) {
Scanner in=new Scanner(System.in);
int number, digit1, digit2, digit3, digit4, newnum;
number=in.nextInt();
/*------------------*/
/*先分离出各位上的数字*/
digit1=number/1000;
digit2=number/100%10; //或
digit2=(number-digit1*1000)/100;
digit3=number/10%10; //或
digit3=(number-digit1*1000-digit2*100)/10;
digit4=number%10;
/*再调整各位上的数字*/
digit1=(digit1+9)%10;
digit2=(digit2+9)%10;
digit3=(digit3+9)%10;
digit4=(digit4+9)%10;
/*最后组成加密后的新数*/
newnum=digit3*1000+digit4*100+digit1*10+digit2;
System.out.println("The encrypted number is "+newnum);
}
}
六、大写字母转换成小写字母。
输入一个大写英文字母,输出相应的小写字母。
例:
输入
G
输出
g
import java.io.*;
public class Test20006 {
public static void main(String[] args) throws IOException {
char ch;
ch=(char)System.in.read();
/*------------------*/
ch+=32; //或ch=(char)(ch+32);
System.out.println(ch);
}
}
七、计算三门课程的平均成绩。
已知某位学生的数学、英语和计算机课程的成绩分别是87分、72分和93分,求该生3门课程的平均分。
本题无输入。
输出示例:
math = 87, eng = 72, comp = 93
average = 84
public class Test20007 {
public static void main(String[] args) {
int math, eng, comp, average;
/**********/
math=87;
eng=72;
comp=93;
average=(math+eng+comp)/3;
System.out.println("math = "+math+", eng = "+eng+", comp = "+comp);
System.out.println("average = "+ average);
}
}
八、计算存款利息。
输入存款金额 money、存期 year 和年利率 rate,根据下列公式计算存款到期时的利息 interest(税前),输出时保留2位小数。
interest = money(1+rate)^year - money
输入输出示例:括号内为说明
输入
1000 3 0.025 (money = 1000, year = 3, rate = 0.025)
输出
interest = 76.89
import java.util.Scanner;
public class Test20008 {
public static void main(String[] args) {
int money, year;
Scanner in=new Scanner(System.in);
/*使用in.nextDouble()和in.nextInt()输入double和int型数据*/
/**********/
money=in.nextInt();
year=in.nextInt();
rate=in.nextDouble();
interest=money*Math.pow((1+rate), year )- money;
//注意:指数运算没有运算符,应使用数学类的方法pow
System.out.println("interest = "+ (int)(interest*100+0.5)/100.0);
//正数保留两位小数
}
}
九、计算两个数的和、差、积、商与余数。
输入2个整数 num1 和 num2,计算并输出它们的和、差、积、商与余数。
输入输出示例:括号内是说明
输入
5 3 (num1=5,num2=3)
输出
5+3=8
5-3=2
5*3=15
5/3=1
5%3=2
import java.util.Scanner;
public class Test20010{
public static void main(String args[]){
int num1,num2;
Scanner in=new Scanner(System.in);
num1=in.nextInt();
num2=in.nextInt();
/*------------------------*/
System.out.println(num1+"+"+num2+"="+(num1+num2));
System.out.println(num1+"-"+num2+"="+(num1-num2));
System.out.println(num1+"*"+num2+"="+(num1*num2));
System.out.println(num1+"/"+num2+"="+(num1/num2));
System.out.println(num1+"%"+num2+"="+(num1%num2));
}
}
十、计算一个3位数的各位数字。
输入一个3位数n,分别求出 n 的个位数字(c)、十位数字(b)和百位数字(a)的值。
输入输出示例:
输入:
152
输出:
number152:digit1=2,digit2=5,digit3=1
import java.util.Scanner;
public class Test20011{
public static void main(String args[]){
int a,b,c,n;
Scanner in=new Scanner(System.in);
n=in.nextInt();
/*------------------------*/
c=n%10;
b=(n/10)%10;
a=(n/100)%10;
System.out.println("number"+n+":digit1="+c+",digit2="+b+",digit3="+a);
}
}
十一、计算x的平方。
输入x,计算x的平方y。并分别以"y=x*x"和"x*x=y"的形式输出 x 和 y 的值。
输入输出示例:
输入:
3
输出:(输出中不能出现空格)
9=3*3
3*3=9
import java.util.Scanner;
import java.util.Scanner;
public class Test20012 {
public static void main(String []args){
int x,y;
Scanner in=new Scanner(System.in);
x=in.nextInt();
/*--------------*/
y=x*x;
System.out.println(y+"="+x+"*"+x);
System.out.println(x+"*"+x+"="+y);
}
实验5 分支结构程序的设计
程序填空,不要改变与输入输出有关的语句。
一、显示两级成绩
输入一个正整数repeat (0 输入一个学生的数学成绩,如果它低于60,输出“Fail”,否则,输出“Pass”。输出使用System.out.println("Pass");及System.out.println("Fail"); 例:括号内是说明 输入 2 (repeat=2) 60 59 输出 Pass Fail import java.util.Scanner; public class Test30001{ public static void main(String[] args){ int ri, repeat; int mark; Scanner in=new Scanner(System.in); repeat=in.nextInt(); for(ri=1; ri<=repeat; ri++){ mark=in.nextInt(); /*------------------*/ if (mark<60) System.out.println("Fail"); else System.out.println("Pass"); } } } 二、找最小值 输入一个正整数repeat (0 输入四个整数,输出其中的最小值。 例:括号内是说明 输入 3 (repeat=3) 12 6 1 90 10 40 30 20 -1 -3 -4 -5 输出 min is 1 (12 6 1 90 中的最小值是1) min is 10 (10 40 30 20 中的最小值是10) min is -5 (-1 -3 -4 -5中的最小值是-5) import java.util.Scanner; public class Test30002 { public static void main(String[] args){ int ri, repeat; int a, b, c, d, min; Scanner in=new Scanner(System.in); repeat=in.nextInt(); for(ri=1; ri<=repeat; ri++){ a=in.nextInt(); b=in.nextInt(); c=in.nextInt(); d=in.nextInt(); /*------------------*/ min=a; if(min>b) min=b; if(min>c) min=c; if(min>d) min=d; System.out.println("min is "+min); } } } 三、求三角形的面积和周长 输入一个正整数repeat (0 输入三角形的三条边a, b, c,如果能构成一个三角形,输出面积area和周长perimeter;否则,输出“These sides do not correspond to a valid triangle”。 在一个三角形中,任意两边之和大于第三边。 三角形的面积计算公式: area*area = s(s-a)(s-b)(s-c) 其中:s = (a+b+c)/2 输出代码: System.out.println("area="+(int)(area*100+0.5)/100.+";perimeter="+(int)(perimet er*100+0.5)/100.); System.out.println("These sides do not correspond to a valid triangle"); 例:括号内是说明 输入 2 (repeat=2) 5 5 3 1 1 4 输出 area=7.15;perimeter=13.0 These sides do not correspond to a valid triangle import java.util.Scanner; public class Test30003 { public static void main(String[] args){ int ri, repeat; float a, b, c, area, perimeter, s; Scanner in=new Scanner(System.in); repeat=in.nextInt(); for(ri=1; ri<=repeat; ri++){ a=in.nextFloat(); b=in.nextFloat(); c=in.nextFloat(); /*------------------*/ if (a+b>c&&a+c>b&&b+c>a) //注意:复合条件的正确写法 { s=(a+b+c)/2; area=(float)Math.sqrt(s*(s-a)*(s-b)*(s-c)); perimeter=a+b+c; System.out.println("area="+(int)(area*100+0.5)/100.+";perimeter="+(int)(perimeter*100+0.5)/1 00.); } else System.out.println("These sides do not correspond to a valid triangle"); } } 四、判断数的符号 输入整数x,若x大于0,y=1;若x等于0,y=0;否则,y=-1,最后输出y。 例:括号内是说明 输入 3 (repeat=3) 2 -8 0 输出 1 (x=2时y=1) -1 (x=-8时y=-1) 0 (x=0时y=0) import java.util.Scanner; public class Test30004{ public static void main(String[] args){ int ri, repeat; int x, y; Scanner in=new Scanner(System.in); repeat=in.nextInt(); for(ri=1; ri<=repeat; ri++){ x=in.nextInt(); /*------------------*/ if(x>0) y=1; else if(x==0) y=0; //注意:=是赋值运算符,==才是比较相等的运算符 else y=-1; System.out.println(y); } } } 五、计算个人所得税 输入一个正整数repeat (0 输入一个职工的月薪salary,输出应交的个人所得税tax。 tax = rate * (salary-850) 当 salary <= 850 时,rate = 0%; 当 850 < salary <= 1350 时,rate = 5%; 当 1350 < salary <= 2850 时,rate = 10%; 当 2850 < salary <= 5850 时,rate = 15%; 当 5850 < salary 时,rate = 20%; 例:括号内是说明 输入 5 (repeat=5) 1010.87 32098.76 800 4010 2850 输出 tax=8.04 tax=6249.75 tax=0.0 tax=474.0 tax=200.0 import java.util.Scanner; public class Test30005 { public static void main(String[] args){ int ri, repeat; float rate, salary, tax; Scanner in=new Scanner(System.in); repeat=in.nextInt(); for(ri=1; ri<=repeat; ri++){ salary=in.nextFloat(); /*------------------*/ if(salary<=850) //注意:实现分段函数时对条件的简化 rate=0; else if(salary<=1350) rate=0.05f; else if(salary<=2850) rate=0.1f; else if(salary<=5850) rate=0.15f; else rate=0.2f; tax=rate*(salary-850); System.out.println("tax="+(int)(tax*100+0.5)/100.0); } } } 六、显示水果的价格 输入一个正整数repeat (0 以下4种水果的单价分别是3.00元/公斤,2.50元/公斤,4.10元/公斤,10.20元/公斤。 [1] apples [2] pears [3] oranges [4] grapes 输入水果的编号,输出该水果的单价。如果输入不正确的编号,显示单价为0。 例:括号内是说明 输入 1 (repeat=1) 3 (oranges的编号) 输出 [1] apples [2] pears [3] oranges [4] grapes price=4.1 import java.util.Scanner; public class Test30006{ public static void main(String[] args){ int ri, repeat; int choice; float price; Scanner in=new Scanner(System.in); repeat=in.nextInt(); for(ri=1; ri<=repeat; ri++){ System.out.println("[1] apples"); System.out.println("[2] pears"); System.out.println("[3] oranges"); System.out.println("[4] grapes"); choice=in.nextInt(); /*------------------*/ switch(choice) { case 1:price=3.0f;break; case 2:price=2.5f;break; case 3:price=4.1f;break; case 4:price=10.2f;break; default: price=0; } System.out.println("price="+price); } } } 七、字母转换 输入一批以问号“?”结束的字符,对“?”以前的每一个字符,如果它是大写字母,输出相应的小写字母;如果它是小写字母,输出相应的大写字母;否则,原样输出。 例: 输入 F=y? 输出 f=Y import java.io.*; public class Test30007 { public static void main(String[] args)throws IOException{ char ch; ch=(char)System.in.read(); while(ch!='?'){ /*------------------*/ if('A'<=ch&&ch<='Z') ch+=32; else if('a'<=ch&&ch<='z')//此处必须使用if结构的嵌套 ch-=32; System.out.print(ch); ch=(char)System.in.read(); } } } 八、计算函数的值 输入一个正整数repeat (0 输入整数 x,计算并输出下列函数 f(x) 的值(保留2位小数,如果答案为3.50,则直接显示为3.5)。 当 x 等于0时,f(x) = 0,当 x 不等于0时, f(x) = 1/x 。 输入输出示例:括号内是说明 输入 3 (repeat=3) 6 (x=6) 10 (x=10) 0 (x=0) 输出 f(6)=0.17 f(10)=0.1 f(0)=0.0 import java.util.Scanner; public class Test30008{ public static void main(String args[]){ int repeat, ri,x; double y; Scanner in=new Scanner(System.in); repeat=in.nextInt(); for(ri = 1; ri <= repeat; ri++){ x=in.nextInt(); /*---------*/ if(x==0) y=0; else y=(int)((1.0/x)*100+0.5)/100.; //或y=Math.rint((1.0/x)*100)/100.; System.out.println("f("+x+")="+y); } } } 说明:对正数y保留两位小数的表达式(int)(y*100+0.5)/100.0 或Math.rint((1.0/x)*100)/100.0 求一元二次方程的根 输入一个正整数repeat (0 a=b=c=0,meaningless (2)a=b=0,c!=0,error (3)x=值(值为-c/b) (4)x1=值1 (值1为(-b+Math.sqrt(d))/(2*a)) x2=值2 (值2为 (-b-Math.sqrt(d))/(2*a))(5)x1=值1+值2i x2=值1-值2i (值1为-b/(2*a),值2为Math.sqrt(-d)/(2*a)) 输入输出示例:括号内为说明输入: 5 (repeat=5) 0 0 0 (a=0,b=0,c=0) 0 0 1 (a=0,b=0,c=1) 0 2 5 (a=0,b=2,c =5) 21 89 35 (a=21,b=89,c=35) 2 2 3 (a=2,b=2,c=3) 输出: a=b=c=0,meaningless a=b=0,c!=0,error x=-2.5 x1=-0.44 x2=-3.8 x1=-0.5+1.12i x2=-0.5-1.12i import java.util.Scanner; public class Test30009{ public static void main(String args[]){ int repeat, ri; int a,b,c,d; double x1,x2; Scanner in=new Scanner(System.in); repeat=in.nextInt(); for(ri = 1; ri <= repeat; ri++){ a=in.nextInt();b=in.nextInt();c=in.nextInt(); /*---------*/ if(a==0&&b==0&&c==0) System.out.println("a=b=c=0,meaningless"); else if(a==0&&b==0&&c!=0) System.out.println("a=b=0,c!=0,error"); else if(a==0&&b!=0){ x1=-(double)c/b; System.out.println("x="+Math.round(x1*100)/100.0); } else { d=b*b-4*a*c; if(d>=0) { x1=(-b+Math.sqrt(d))/(2*a); x2=(-b-Math.sqrt(d))/(2*a); System.out.println("x1="+Math.round(x1*100)/100.0); System.out.println("x2="+Math.round(x2*100)/100.0); } else { x1=-(double)b/(2*a); x2=Math.sqrt(-d)/(2*a); System.out.println("x1="+Math.round(x1*100)/100.0+"+"+Math.round(x2*100)/100.0+"i"); System.out.println("x2="+Math.round(x1*100)/100.0+"-"+Math.round(x2*100)/100.0+"i"); } } } } } 说明:为防止出错,在编程前应考虑周全 当a=b=c=0时,方程有无数解; 当a=b=0,c!=0时,方程无解; 当a=0,b!=0时,方程解为x=-c/b; 当a!=0时,求:d=b*b-4*a*c 若d>=0,有两个不同实根:x=(-b±Math.sqrt(d))/(2*a) 若d<0,有两个不同复根:x=-b/(2*a)±Math.sqrt(-d)/(2*a)i 九、显示五级记分制成绩对应的百分制区间 输入一个正整数 repeat (0 输入五级制成绩(A-E),输出相应的百分制成绩(0-100)区间,要求使用switch语句。 五级制成绩对应的百分制成绩区间为:A(90-100)、B(80-89)、C(70-79)、D(60-69)和E(0-59),如果输入不正确的成绩,显示"Invalid input"。 输入输出示例:括号内是说明 输入 6 A B C D E j (repeat=6,输入的五级成绩分别为A、B、C、D、E和无效的字符j) 输出 90-100 80-89 70-79 60-69 0-59 Invalid input import java.util.Scanner; public class Test30010{ public static void main(String args[]){ int repeat, ri; char ch; Scanner in=new Scanner(System.in); repeat=in.nextInt(); for(ri = 1; ri <= repeat; ri++){ ch=(in.next()).charAt(0); /*输入1个字符*/ /*---------*/ switch(ch) { case 'A':System.out.println("90-100");break; case'B':System.out.println("80-89");break; case'C':System.out.println("70-79");break; case'D':System.out.println("60-69");break; case'E':System.out.println("0-59");break; default: System.out.println("Invalid Java语言程序设计实验指导手册 班级:_______________ 学号:_______________ 姓名:_______________ 电子与信息工程学院计算机科学系 第一部分上机实验的指导思想和要求 一、上机实验的目的 《Java语言程序设计》是计算机专业的主要选修课。Java语言是目前广为流行的程序设计语言之一,适用于网络上编程,满足Internet上软件开发的需要,它是一门概念性和实践性都很强的专业课程。通过学习本课程,应能准确完整地理解Java语言的语法、语义规则;掌握Java语言的数据类型、表达式及控制流程;运用面向对象程序设计思想,正确的阅读、分析程序和设计程序,掌握面向对象程序设计方法,提高程序设计能力,以适应计算机学科不断发展的需要。 通过系统地上机练习,力求能够达到以下三个目的: 1、课堂讲授内容的理解,从计算机语言的基本概念、程序设计的基本方法、语法规则等方面加深理解,打好程序设计、开发软件的良好基础。 2、上机实验中,提高学生对Java语言各部分内容的综合使用能力,逐步掌握Java 语言程序设计的规律与技巧。 3、在对Java程序的调试过程中,提高学生分析程序中出现的错误和排除这些错误的能力。 二、上机实验前的准备工作 在上机实验前应事先做好准备工作,以提高上机实验的效率,准备工作至少应包括: 1、复习和掌握与本实验有关的教学内容; 2、实验前对每次上机需要完成的题目进行认真的分析,列出实验具体步骤; 3、写出符合题目要求的程序清单,准备出调试程序使用的数据,以便提高上机实验的效率。 4、对运行中可能出现的问题事先作出估计,对程序中自己有疑问的地方,应作出记号,以便在上机时给予注意。 三、上机实验的步骤 上机实验一般应包括以下几个步骤: 1、进入Java工作环境(例如命令提示符或MyEclipse集成开发环境)。 2、配置JDK的环境变量。 3、编译并调试Java源程序。如果在编译过程中发现错误,屏幕上会出现“出错信息”,根据提示找到出错位置和原因,加以改正。再进行编译……,如此反复直到程序顺利通过编译为止。 实验5 分支结构程序的设计 1.程序填空题,不要改变与输入输出有关的语句。 20004 计算旅途时间 输入2个整数time1和time2,表示火车的出发时间和到达时间,计算并输出旅途时间。 有效的时间范围是0000到2359,不需要考虑出发时间晚于到达时间的情况。 例:括号内是说明 输入 712 1411(出发时间是7:12,到达时间是14:11) 输出 The train journey time is 6 hrs 59 mins. import java.util.Scanner; public class Test20004 { public static void main(String[] args) { Scanner in=new Scanner(System.in); int time1, time2, hours, mins; time1=in.nextInt(); time2=in.nextInt(); /*------------------*/ /*计算两个时间之间的小时数和分钟数*/ hours=time2/100-time1/100; mins=time2%100-time1%100; /*当计算得到的分钟数为负数时进行调整*/ hours=mins>0?hours:hours-1; mins=mins>0?mins:mins+60; //或:if(mins<0){hours-=1;mins+=60;} System.out.println("The train journey time is "+hours+" hrs "+ mins+" mins."); } } 30001 显示两级成绩 输入一个正整数repeat (0 全国2012年1月高等教育自学考试 Java语言程序设计(一)试题 课程代码:04747 一、单项选择题(本大题共10小题,每小题1分,共l0分) 在每小题列出的四个备选项中只有一个是符合题目要求的,请将其代码填写在题后的括号内。错选、多选或未选均无分。 1.下面供选字符序列中,不属于 ...Java语言关键字的是( ) A.inner B.throw C.false D.throws 2.表达式“-1>>>1”的十进制值是( ) A.-2 B.231-1 C.-(231-1) D.232-1 3.Java语言中,在类定义时用final关键字修饰,是指这个类( ) A.子类必须实现父类未实现的方法 B.没有具体实现代码 C.必须要有实例 D.不能被继承 4.表达式"java程序设计".1ength()的值是( ) A. 0 B.12 C. 8 D.13 5.以下关于BorderLayout布局的叙述中,不正确 ...的是( ) A.把容器内的空间划分成5个区域 B.加入组件应该指明要放入的区域 C.是框架窗口的默认布局 D.一个位置可直接放多个组件 6.利用文件对话框打开或保存文件,在打开文件对话框之前,可用FileFilter类设置筛选条件,其所用的两个方法是( ) A.accept()和getSelectedFile() B.accept()和getDescription() C.accept()和setDescription() D.setDescription()和getDescription() 7.设已经有Graphics2D对象g2d,RoundRectangle2D对象rRect,绘制对象rRect的代码是( ) A.g2d.draw(rRect) B.g2d.drawRoundRect(rRect) C.rRect.draw() D.rRect.drawRoundRect() 8.以下关于线程互斥和同步的叙述中,正确的是( ) A.临界段是线程互斥使用资源的程序段 B.临界段能使线程使用其它线程的资源 浙04747# Java语言程序设计(一)试卷第1页(共12页) 实验11 数组作为方法的参数 1.程序填空题,不要改变与输入输出有关的语句。 60030 编写排序函数(方法) 输入一个正整数repeat (0 Java语言程序设计(郑莉) 第二章习题答案 1.什么是对象、类,它们之间的联系 答:1)对象是包含现实世界物体特征的抽象实体,它反映系统为之保存信息和与它交互的能力。对象是一些属性及服务的封装体,在程序设计领域,可以用“对象=数据+作用于这些数据上的操作”来表示。现实生活中对象是指客观世界的实体;在程序中对象是指一组变量和相关方法的集合。 2)类是既有相同操作功能和相同的数据格式的对象的集合与抽象!3)两者的关系:对象是类的具体实例.。 2.什么是面向对象的程序设计方法它有那些基本特征 答:面向对象程序设计从所处理的数据入手,以数据为中心而不是以服务为中心来描述系统。它把编程问题视为一个数据集合,数据相对于功能而言,具有更强的稳定性。 它的特征:抽象,封装,继承,多态。 3(无用) 4.请解释类属性、实例属性及其区别。 答:实例属性,由一个个的实例用来存储所有实例都需要的属性信息,不同实例的属性值可能会不同。 5.请解释类方法、实例属性及其区别。 答:实例方法表示特定对象的行为,在声明时前面不加static修饰符,在使用时需要发送给一个类实例。 类方法也称为静态方法,在方法声明时前面需加static修饰符,类方法表示具体实例中类对象的共有行为。 区别:实例方法可以直接访问实例变量,调用实例方法,实例方法可以直接访问类变量,调用类方法;类方法可以直接调用类变量和类方法,类方法不能直接调用实例变量和实例方法; 6.类的访问控制符有哪几种具体含义及其区别。 答:类的访问控制符只有public(公共类)及无修饰符(默认类)两种。 区别:当使用public修饰符时表示所有其他的类都可以使用此类;当没有修饰符时,则只有与此类处于同一包中的其他类可以使用类。 7类成员的访问控制符有哪几种他们对类成员分别有哪些访问限制的作用 答:类成员的访问控制符有 public,private,protecte及无修饰符. public(公有的):用public修饰的成分表示公有的,也就是它可以被其他任何对象访问(前提是对累成员所在的类访问有访问权限). Private(保护的):类中限定为private的成员只能被这个类本身 访问,在类外不可见。 proteced(保护的)用该关键字修饰的成分是受保护的,只可以被同一类及其子类的实例对象访问。 无修饰符(默认的):public,private,protected这个三个限定符不是必须写的。如果不写,则表明是“friendly”,相应的成分可以被所在保重的各类访问。 8简述构造方法的特点答:构造方法主要有以下特点: (1)构造方法的方法名与类名相同; (2)构造方法没有返回类型(修饰符void也不能有);(3)构造方法通常被声明为公有的(public); (4)构造方法可以有任意多个参数; (5)构造方法的主要作用是完成对象的初始化工作; (6)构造方法不能在程序中显式的调用; (7)在生成一个对象时,系统会自动调用该类的构造方法为新生成的对象初始化。 9如果在类声明中声明了构造方法,系统是否还提供默认的构造方法 答: 用户在进行类声明时,如果没有声明任何构造方法,系统会赋给此类一个默认(无参)的构造方法。但是,只要用户声明了构造方法,即使没有声明无参的构造方法,系统也不会再赋默认的构造方法。 10:声明Patient类表示在门诊室中的病人。此类对象应包括name(astring)\sex(achar)、age(an integer)、weight(a float0、allergies(a boolean). 声明存取及修改方法。在一个单独的累中,声明测试方法,并生成两个patient的例子: Atient april=new Patient(); (“zhangli”) (‘f’);; (330; ; (true); 那么:”+()); ”+()); ”+()); (“weught: ”+());\ ”+()); 声明并测试toString()方法显示一个病人的aga、sex、name及allergies属性。 答: public class Patient { private String name; private char sex; private int age; private float weight; private boolean allergies; public void setname(String a) { name=a; } public void setsex(char b) { sex=b; } 一、选择题 1.以下叙述正确的是( ): A)在C程序中,main函数必须位于程序的最前面 B) C程序的每行只能写一条语句 C) C语言使用库函数实现输入输出操作 D)注释中的拼写错误会影响编译结果 2、以下说法中正确的是() A) C语言程序总是从第一个的函数开始执行 B) C语言程序总是从main()函数开始执行 C)在C语言程序中,要调用的函数必须在main()函数中定义 D)C语言程序中的main()函数必须放在程序的开始部分 3、下列选项种说法正确的是( ) A)函数由声明部分和执行部分两部分组成 B)语言中main函数一定在程序的开始部分 C)C语言程序总是从第一个定义的函数开始执行 D)C程序的每行中只能写一条语句 4、设有说明:int a;float b; char c; double d; 则表达式1.3*a+2*b*c+d*(int) 2.6 值的类型为( )。 A)doubleB) char C) floatD) int 5、C语言的标识符只能由字母、数字和下划线三种字符组成,且第一个字符( ) A)必须为字母 B)必须为下划线 C)必须为字母或下划线 D)可以是字母、数字和下划线中任一种字符 6、以下不正确的C语言标识符是( )。 A) ABC B) abc C)a_bc D) void 7、下列运算符中优先级最高的是( ) A)< B)+ C)&& D)!= 8、以下选项中属于C语言中合法关键字的是( ) A)Float B)abc C)int D)CASE 9、若x、i、j和k都是int型变量,计算下面表达式后,x的值为( ) x=(i=4,j=16,k=32) A)4 B)16 C)32 D)52 10、在C语言中,要求数据必须是整型的运算符是( ) A)/ B)+ + C)!=D) % 11、若整型变量x的值为8,则下列表达式中值为1的表达式是 A)x+=x-=x B) x%=x-1 C) x%=x%=3 D) x/=x+x 12、若w=1,x=2,y=3,z=4,则条件表达式“w > x? w : y< z ? y : z”的值是( ) A)4 B)3 C)2 D)1 13、有以下程序,程序运行后的输出结果是。 main() {inti=1,j=2,k=3; if(i++==1&&(++j==3||k++==3)) printf("%d %d %d\n",i,j,k); } 《Java语言程序设计》 上机实验指导手册 实验一 Java环境演练 【目的】 ①安装并配置Java运行开发环境; ②掌握开发Java应用程序的3个步骤:编写源文件、编译源文件和运行应用程序; ③学习同时编译多个Java源文件。 【内容】 1.一个简单的应用程序 ?实验要求: 编写一个简单的Java应用程序,该程序在命令行窗口输出两行文字:“你好,很高兴学习Java”和“We are students”。 ?程序运行效果示例: 程序运行效果如下图所示: ?程序模板: Hello.java public class Hello { public static void main (String args[ ]) { 【代码1】//命令行窗口输出"你好,很高兴学习Java" A a=new A(); a.fA(); } } class A { void fA() { 【代码2】//命令行窗口输出"We are students" } } ?实验后的练习: 1.编译器怎样提示丢失大括号的错误? 2.编译器怎样提示语句丢失分号的错误? 3.编译器怎样提示将System写成system这一错误? 4.编译器怎样提示将String写成string这一错误? 2.联合编译 ?实验要求: 编写4个源文件:Hello.java、A.java、B.java和C.java,每个源文件只有一个类,Hello.java是一个应用程序(含有main方法),使用了A、B和C类。将4个源 文件保存到同一目录中,例如:C:\100,然后编译Hello.java。 ?程序模板: 模板1:Hello.java public class MainClass { public static void main (String args[ ]) { 【代码1】 //命令行窗口输出"你好,只需编译我" A a=new A(); a.fA(); B b=new B(); b.fB(); } } 模板2 :A.java public class A { void fA() { 【代码2】 //命令行窗口输出"I am A" } } 模板3 :B.java public class B { void fB() { 【代码3】 //命令行窗口输出"I am B" } } 模板4 :C.java public class C { void fC() { 【代码4】 //命令行窗口输出"I am C" } } ?实验后的练习: 5.将Hello.java编译通过后,不断修改A.java源文件中的代码,比如,在命令行窗口输出“我是A类”或“我被修改了”。要求每次修改A.java源文件后, 实验9-1 Method的使用(二) 1.程序填空题,不要改变与输入输出有关的语句。 50010 十进制转换二进制 输入一个正整数 repeat (0 n=n/2; //获得除2后的商 }while(n>0); System.out.print(t); //本方法无返回值,需要在方法体中输出结果 } } 说明:本题中方法dectobin(n)的输出虽然与要求有所出入,但上传是正确的。 以下用递归算法实现方法的设计: 50001 求1 + 1/2! +....+ 1/n! 输入一个正整数repeat (0 1. 输入两个整数,要求用两个函数求出其最大公约数和最小公倍数,最大公约数和最小公倍数都在主函数中输出。#include 浙大J A V A实验题答案05a n s w e r1 实验5 分支结构程序的设计 1.程序填空题,不要改变与输入输出有关的语句。 20004计算旅途时间 输入2个整数time1和time2,表示火车的出发时间和到达时间,计算并输出旅途时间。 有效的时间范围是0000到2359,不需要考虑出发时间晚于到达时间的情况。 例:括号内是说明 输入 712 1411(出发时间是7:12,到达时间是14:11) 输出 The train journey time is 6 hrs 59 mins. import java.util.Scanner; public class Test20004 { public static void main(String[] args) { Scanner in=new Scanner(System.in); int time1, time2, hours, mins; time1=in.nextInt(); time2=in.nextInt(); /*------------------*/ /*计算两个时间之间的小时数和分钟数*/ hours=time2/100-time1/100; mins=time2%100-time1%100; /*当计算得到的分钟数为负数时进行调整*/ hours=mins>0?hours:hours-1; mins=mins>0?mins:mins+60; //或:if(mins<0){hours-=1;mins+=60;} System.out.println("The train journey time is "+hours+" hrs "+ mins+" mins."); } } 30001 显示两级成绩 输入一个正整数repeat (0 《Java语言程序设计基础教程》练习思考题参考答案 第1章Java程序设计概述 1.9 练习思考题 1、Java运行平台包括三个版本,请选择正确的三项:() A. J2EE B. J2ME C. J2SE D. J2E 解答:A,B,C 2、Java JDK中反编译工具是:() A. javac B. java C. jdb D. javap 解答:D 3、public static void main方法的参数描述是:() A. String args[] B. String[] args C. Strings args[] D. String args 解答:A,B 4、在Java中,关于CLASSPATH环境变量的说法不正确的是:() A. CLASSPATH一旦设置之后不可修改,但可以将目录添加到该环境变量中。 B. 编译器用它来搜索各自的类文件。 C. CLASSPATH是一个目录列表。 D. 解释器用它来搜索各自的类文件。 解答:A 5、编译Java Application源文件将产生相应的字节码文件,扩展名为() A. .java B. .class C. .html D. .exe 解答:B 6、开发与运行Java程序需要经过的三个主要步骤为____________、____________和____________。 7、如果一个Java Applet源程序文件只定义有一个类,该类的类名为MyApplet,则类MyApplet必须是______类的子类并且存储该源程序文件的文件名为______。 8、如果一个Java Applet程序文件中定义有3个类,则使用Sun公司的JDK编译器编译该源程序文件将产生______个文件名与类名相同而扩展名为______的字节码文件。 9、开发与运行Java程序需要经过哪些主要步骤和过程? 10、Java程序是由什么组成的?一个程序中必须要有public类吗?Java源文件的命名规则是怎么样的? 11、编写一个简单的Java应用程序,该程序在命令行窗口输出两行文字:“你好,很高兴学习Java”和“We are students”。 实验8 Method的使用 1.程序填空题,不要改变与输入输出有关的语句。 50001 输入一个正整数repeat (0 实验一 Java实验环境的建立一、实验目的 1.掌握Java编程环境的搭建过程; 2.掌握Jcreator pro软件的使用方法; 3.能使用Java doc文档。 二、实验内容 1.下载并安装,配置JDK环境变量; 2.下载Javadoc压缩包并解压在JDK安装路径下; 3.下载Jcreator pro 并安装和配置使用环境; 4.使用实验环境运行书中实例代码,在屏幕上输出“Hello Java”字符串。 ①Java application程序代码如下: public class HelloJava { public static void main(String args[]) { "Hello Java!"); } } ②Java applet程序代码如下: import .*; public class Hello extends { public void paint(Graphics g) { ("Hello!",30,30); } } 三、试验要求 1、预习试验内容并写出上机报告。 2、实验中出现的问题及实验体会。 一、实验目的: 1.输入、输出操作实现原理和方法 2.掌握程序流程控制的实现方法 3.掌握数组的定义和操作方法 二、实验内容 1.计算 Result=1!+2!+3!+ (10) public class TestJieC{ p ublic static void main(String arg[]){ long result=1; for(int i=1;i<=10;i++) { result=i*result; result+=result; } " "+result); } } 2.计算1---50之间所有素数的和。 public class Test{ p ublic static void main(String args[]){ int count = 0; for(int i = 2;i<=50;i++){ for(int j = 2;j<=i;j++){ if(i>j){ if(i%j == 0){ count++; } } } if(count==0){ 习题2 3.使用“= =”对相同内容的字符串进行比较,看会产生什么样的结果。 答:首先创建一个字符串变量有两种方式:String str = new String("abc"); String str = "abc"; 使用“= =”会因为创建的形式不同而产生不同的结果: String str1 = "abc"; String str2 = "abc"; =str2); ; public class Exercise51{ public static void main(String[] args) throws IOException{ "请输入一个整数:"); InputStreamReader isStream=new InputStreamReader; BufferedReader bfReader=new BufferedReader(isStream); String input=(); int length=()-1; int n=new Integer(input).intValue(); while(length>=0){ int divisor=(int) (10,length); length=length-1; int output=n/divisor; n=n%divisor; ","); } } } 法二:(建议使用) public class Exercise5{ public static void main(String[] args){ int n=1678; int unit; int decimal; int hundred; int thousand; thousand=n/1000%10; hundred=n/100%10; decimal=n/10%10; unit=n%10; "1678包含的数字分别是: "+thousand+','+hundred+','+decimal+', '+unit); } } ; Java程序设计上机实验指导 <内部资料) 学号: 姓名: 专业: 班级: 大连理工大学城市学院 前言 《Java程序设计》是软件工程专业和计算机科学与技术专业的一门重要专业基础课。本指导书结合课堂理论教案与上机实践教案,针对学生在上机操作时的盲目性, 由浅入深地详细描述实验步骤和实验过程,并提供形式多样的编程题目,直观生动,使学生在学习过程中遇到问题能够有的放矢,从而能够更好地提高编程能力。 本指导书的目的旨在加深学生对所学知识点的记忆和理解,每次实验后增设实践题目和课后上机练习,使学生通过思考和课后练习,能够熟练掌握Java 程序设计知识,加快学习效率,并灵活运用该语言进程工程的开发,提高编程的能力,做到快速入门。 由于编者水平和经验有限,疏漏之处在所难免,恳请读者不吝赐教。 目录 上机实验一: Java开发环境设置与简单程序编写 古人云,工欲善其事,必先利其器。没有编程开发的环境,一切都无从谈起。因此我们先学会安装和配置Java开发工具包。Java的开发过程需要编写源程序、编译生成字节码和运行三个部分,除了编写源程序可在任意的文本编辑器中完成外,编译和运行都需要在一定的环境下实现。 目前可供开发人员选择的Java语言开发环境很多,常用的Java开发包是JDK 2015年10月高等教育自学考试全国统一命题考试 Java语言程序设计(一) 试卷 (课程代码04747) 本试卷共13页,满分100分.考试时间150分钟。 考生答题注意事项: 1.本卷所有试题必须在答题卡上作答。答在试卷上无效,试卷空白处和背面均可作草稿纸. 2.第一部分为选择题。必须对应试卷上的题号使用2B铅笔将“答题卡”的相应代码涂黑. 3.第二部分为非选择题。必须注明大、小题号.使用0.5毫米黑色字迹签字笔作答. 4.合理安排答题空间.超出答题区域无效。 第一部分选择题 一、单项选择题(本大题共10小题.每小题1分.共10分) 在每小题列出的四个备选项中只有一个是符合题目要求的。请将其选出并将“答题卡”的相应代码涂黑。未涂、错涂或多涂均无分. 1.以下字符组合中,不能作为Java整型常量的是 A.037 B.0x3ADG C.7000 D.0x3abcL 2.以下程序代码的输出结果是 3.设有数组定义,则x.length的值为 A.2 B.3 C.4 D.5 4. 设有字符串String s=〝ABCDEFGABC〞;,则表达式s.indexOf(〝A〞,7)的值是 A.7 B.6 C.3 D.0 5.以下关于Swing与AWT之间关系的叙述中,正确的是 A.Swing是AWT的提高和扩展 B.在写GUl程序时,AWT和Swing不能同时使用 C.AWT和Swing在不同的平台上都有相同的表示 D.AWT中有一些类是从Swing中的一些继承的 6.以下供选择的类中,其子类能用来创建框架窗口的是 A.JWindow B.JFrame C.JDialog D.JAudio 7.某程序定义了一个子类,并要让它实现多线程,以下正确的步骤是 A.继承Thread类,在类内定义run( )方法,声明和创建线程对象,并让该对象调用 start( )方法。 B.继承Thread类,在类内定义run( )方法,声明线程对象,并让该对象调用start( ) 方法。 c.声明实现Runnable接口,在类内实现run( )方法,声明线程对象,创建线程,并 上机实践1初识Java 实验1一个简单的应用程序 1.相关知识点 Java语言的出现是源于对独立于平台语言的需要,即这种语言编写的程序不会因为芯片的变化而发生无法运行或出现运行错误的情况。目前,随着网络的迅速发展,Java语言的优势越发明显,Java已经成为网络时代最重要的语言之一。 Sun公司要实现“编写一次,到处运行”(Write once,run anywhere的目标,就必须提供相应的Java运行平台,目前Java运行平台主要分为下列3个版本。 (1Java SE:称为Java标准版或Java 标准平台。Java SE 提供了标准的JDK开发平台。利用该平台可以开发Java桌面应用程序和低端的服务器应用程序,也可以开发Java Applet 程序。当前成熟的新的JDK版本为JDK 1.6。 (2Java EE:称为Java企业版或Java企业平台。使用J2EE可以构建企业级的服务应用,Java EE平台包含了Java SE平台,并增加了附加类库,以便支持目录管理、交易管理和企业级消息处理等功能。 (3Java ME:称为Java微型版或Java小型平台。Java ME是一种很小的Java运行环境,用于嵌入式的消费产品中,如移动电话、掌上电脑或其他无线设备等。 无论上述哪种Java运行平台都包括了相应的Java虚拟机(Java Virtual Machine,虚拟机负责将字节码文件(包括程序使用的类库中的字节码加载到内存,然后采用解释方式来执行字节码文件,即根据相应硬件的机器指令翻译一句执行一句。J2SE平台是学习掌握Java语言的最佳平台,而掌握J2SE又是进一步学习J2EE和J2ME所必需的。 2.实验目的 实验14 类的设计和实验题库中未做的题 1.程序填空题,不要改变与输入输出有关的语句。 30009 求一元二次方程的根(选做) 输入一个正整数repeat (0《Java语言程序设计》实验指导手册
浙大JAVA 实验题答案05answer1
04747java语言程序设计(一)20120年01月试卷
浙大JAVA 实验题答案11answer
Java语言程序设计课后习题答案
《高级语言程序设计》复习题及答案
Java语言程序设计上机实验指导手册
浙大JAVA 实验题答案09answer
《高级语言程序设计》答案
浙大JAVA 实验题答案05answer1学习资料
《Java语言程序设计基础教程》习题解答
浙大JAVA实验题答案answer
《java程序设计》实验指导书(完整)
java语言程序设计课后习题答案
应用Java程序方案上机实验指导
自考Java语言程序设计一试题及答案解析
Java 2实用(第4版)实验指导与习题解答_IT168文库答辩
浙大JAVA 实验题答案14answer