以下为老师布置的实验作业:
1. 程序填空题
(1)该程序可以在命令行窗口输出希腊字母表,请补全代码。
public class GreekAlphabet {
public static void main(String[] args) {
int startPosition=0,endPosition=0;
char cStart='α',cEnd='ω';
startPosition=cStart; //cStart做int型转换据运算,并将结果赋值给startPosition
endPosition=cEnd; //cEnd做int型转换运算,并将结果赋值给endPosition
System.out.println("希腊字母\'α\'在unicode表中的顺序位置:"+startPosition);
System.out.println("希腊字母表:");
for(int i=startPosition;i<=endPosition;i++) {
char c='\0';
c=(char)i; //i做char型转换运算,并将结果赋值给c
System.out.print(" "+c);
if((i-startPosition+1)%10==0)
System.out.println("");
}
}
}
运行结果:
希腊字母'α'在unicode表中的顺序位置:945
希腊字母表:
α β γ δ ε ζ η θ ι κ
λ μ ν ξ ο π ρ ? σ τ
υ φ χ ψ ω
(2)该程序在命令行窗口输出数组的引用以及元素的值,请补全代码。
public class InputArray {
public static void main(String[] args) {
int [] a = {100,200,300};
System.out.println("数组a的长度:"+ a.length);// 输出数组a的长度
System.out.println("数组a的引用:"+ a);// 输出数组a的引用
int b[][]= {{1}, {1,1},{1,2,1}, {1,3,3,1},{1,4,6,4,1}};
System.out.println("二维数组b的一维数组的个数:"+(b.length-1));// 输出二维数组b的一维数组的个数
System.out.println(b[4][2]);
b[4] = a;//将数组a的引用赋给b[4]
System.out.println(b[4][2]);
}
}
运行结果:
数组a的长度:3
数组a的引用:[I@123a439b
二维数组b的一维数组的个数:4
6
300
(3)该程序中用户从键盘输入一个1~9999之间的数字,程序判断这个数是几位数,并判断这个数是否是回文数,请补全代码。(回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数)
import java.util.Scanner;
public class Number {
public static void main(String[] args) {
int number=0,d5,d4,d3,d2,d1;
Scanner reader = new Scanner(System.in);
System.out.println("输入一个1至99999之间的数");
number = reader.nextInt();
if(number>0 && number<100000) //判断number在1至99999之间的条件
{ d5 = number/10000; //计算number的最高位(万位)d5
d4 = number%10000/1000; //计算number的千位d4
d3 = number%1000/100; //计算number的百位d3
d2 = number%100/10;
d1 = number%10;
if(number/10000 > 0) //判断number是5位数的条件
{ System.out.println(number+"是5位数");
if(number == d5+10*d4+100*d3+1000*d2+10000*d1) //判断number是回文数的条件
{ System.out.println(number+"是回文数");
}
else
{ System.out.println(number+"不是回文数");
}
}
else if(number/10000==0 && number/1000>0) //判断number是4位数的条件
{ System.out.println(number+"是4位数");
if(number == d4+10*d3+100*d2+1000*d1) //判断number是回文数的条件码
{ System.out.println(number+"是回文数");
}
else
{ System.out.println(number+"不是回文数");
}
}
else if(number/1000==0 && number/100>0) //判断number是3位数的条件
{ System.out.println(number+"是3位数");
if(number == d3+10*d2+100*d1) //判断number是回文数的条件
{ System.out.println(number+"是回文数");
}
else
{ System.out.println(number+"不是回文数");
}
}
else if(d2!=0)
{ System.out.println(number+"是2位数");
if(d1==d2)
{ System.out.println(number+"是回文数");
}
else
{ System.out.println(number+"不是回文数");
}
}
else if(d1!=0)
{ System.out.println(number+"是1位数");
System.out.println(number+"是回文数");
}
}
else
{System.out.printf("\n%d不在1至99999之间",number);
}
}
}
运行结果:
输入一个1至99999之间的数
123
123是3位数
123不是回文数
2.编程题
(1) 写一个程序,在main方法里面定义一个数组,输出排序前的数组,将数组中的元素从小到大进行排序,输出排序后的数组。(程序1)
/*方法一:冒泡排序*/
public class BubbleSort {
public static void main(String[] args) {
int [] a= {9,5,3,6,4};
System.out.print("冒泡排序前:");
printArray(a); //打印数组元素
bubbleSort(a); //调用排序方法
System.out.print("冒泡排序后:");
printArray(a); //打印数组元素
}
//定义打印数组方法,接收一个参数
public static void printArray(int[] a) {
//循环遍历数组的元素
for(int i=0;i<a.length;i++) {
System.out.print(a[i]+" "); //打印元素和空格
}
System.out.print("\n");
}
//定义冒泡排序方法
public static void bubbleSort(int[] a) {
//定义外层循环
for(int i=0;i<a.length-1;i++) {
for(int j=0;j<a.length-i-1;j++) {
if(a[j]>a[j+1]) { //比较相邻元素
//下面的三行代码用于交换两个元素
int temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
System.out.print("第"+(i+1)+"轮排序后:");
printArray(a); //每轮比较结束打印数组元素
}
}
}
运行结果:
冒泡排序前:9 5 3 6 4
第1轮排序后:5 3 6 4 9
第2轮排序后:3 5 4 6 9
第3轮排序后:3 4 5 6 9
第4轮排序后:3 4 5 6 9
冒泡排序后:3 4 5 6 9
(2) 写一个方法,用来计算三角形的面积(参数为三个边长,实型,由键盘输入,面积计算用海伦公式:
,p为三角形的半周长p=(a=b=c)/2,使用方法Math.sqrt(),请查询JDK帮助文档,java.lang.Math类里面定义的方法),在main方法里面调用该方法,输出面积计算的结果。(程序2)
import java.util.Scanner;
public class Area_of_triangle {
public static void main(String[] args) {
double a;
double b;
double c;
Scanner reader = new Scanner(System.in);
System.out.println("输入所求三角形的三个边长");
a = reader.nextInt();
b = reader.nextInt();
c = reader.nextInt();
double s = Area(a,b,c); //调用Area方法
System.out.println("三角形的面积为"+s);
reader.close();
}
//下面定义了一个求三角形面积的方法,接受三个参数
public static double Area(double a,double b,double c) {
double p =(a+b+c)/2;
double s = Math.sqrt(p*(p-a)*(p-b)*(p-c));
return s; //返回三角形的面积
}
}
运行结果:
输入所求三角形的三个边长
3 4 5
三角形的面积为6.0
(3) 使用一个二维数组存放如下图形的字符
*
* * *
* * * * *
* * * * # * *
找到字符#,并打印出它在二维数组中的下标。(程序3)
public class Test3 {
public static void main(String[] args) {
char [] [] str=new char[4][]; //定义一个长度为4的二维数组
str[0]=new char[] {'*'}; //存放字符
str[1]=new char[] {'*','*','*'};
str[2]=new char[] {'*','*','*','*','*'};
str[3]=new char[] {'*','*','*','*','#','*','*'};
for(int i=0;i<str.length;i++) { //遍历数组元素
System.out.println(str[i]); //打印数组
for(int j=0;j<str[i].length;j++) { //遍历每行的元素
if (str[i][j]=='#') { //找出#,并输出下标
System.out.println("#的行下标为"+i+",列下标为"+j);
}
}
}
}
}
运行结果:
*
***
*****
****#**
#的行下标为3,列下标为4