一、输入输出
基础题
1、在Lab1包中建立一个名为Lab1_1的类,在其中输出一句话:“你好Java!”,然后尝试建立和使用各种类型的变量,功能不限。
package Lab1;
import java.util.Scanner;
public class Lab1_1 {
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("你好Java!");
Scanner sc = new Scanner(System.in);
int n=sc.nextInt();
String str1=sc.next();
System.out.println("欢迎"+n+"号"+"选手!"+str1);
}
}
2、在Lab1包中建立一个名为Lab1_2的类,在其中输出N个斐波那契级数。
package Lab1;
import java.util.Scanner;
public class Lab1_2 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc=new Scanner(System.in);
int n=sc.nextInt();
fac(n);
}
public static void fac(int n) {
int a=0;//0 1
int b=1;//1
int c=1;//1 1+0 2 3 5
for(int i=0;i<n;i++)
{
System.out.println(c);
b=c;
c+=a;
a=b;
}
}
}
3、在包Lab1中创建一个名为Lab1_3的类,实现以下要求:
一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如6的因子为1、2、3,而6=1+2+3。因此6是“完数”。编写一个小应用程序求1000之内的所有完数。
package Lab1;
public class Lab1_3 {
public static void main(String[] args) {
// TODO Auto-generated method stub
// System.out.println(check(6));
for(int i=2;i<=1000;i++)
{
if(check(i))
System.out.println(i);
}
}
public static boolean check(int n) {
int sum=0;
for(int i=2;i<n;i++)
{
if(n%i==0) {
sum+=i;
}
}
if(sum+1==n)return true;
else {
return false;
}
}
}
提高提
1、在包Lab1中创建一个名为Lab1_4的类,实现以下要求:
输入某年某月某日,判断这一天是这一年的第几天?
package Lab1;
import java.util.Scanner;
public class Lab1_4 {
public static void main(String[] args) {
// TODO Auto-generated method stub
int Pmonths[]= {31,28,31,30,31,30,31,31,30,31,30,31};
int Rmonths[]= {31,29,31,30,31,30,31,31,30,31,30,31};
Scanner sc=new Scanner(System.in);
System.out.println("请输入年:");
int y=sc.nextInt();
System.out.println("请输入月:");
int m=sc.nextInt();
System.out.println("请输入日:");
int d=sc.nextInt();
int days=0;
if(y%400==0||(y%100!=0&&y%4==0)) {//闰年
for(int i=0;i<m-1;i++)
{
days+=Rmonths[i];
}
days+=d;
}
else {//平年
for(int i=0;i<m-1;i++)
{
days+=Pmonths[i];
}
days+=d;
}
System.out.println("这一天是这一年的第"+days+"天 ");
}
}
2、在Lab1包中建立一个名为Lab1_5的类,在其中实现汉诺塔范例。
package Lab1;
import java.util.Scanner;
public class Lab1_5 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc = new Scanner(System.in);
System.out.println("一共有多少个汉诺塔牌?");
int n=sc.nextInt();
hanio(n,'A','C','B');
}
public static void hanio(int n,char from,char target,char temp) {
if(n==1) {
System.out.println(from+" -> "+target );
}
else {
hanio(n-1,from,temp,target);
hanio(1, from,target,temp);
hanio(n-1, temp,target,from);
}
}
}
二、流程控制、数组
基本输入输出范例代码:
Scanner sc=new Scanner(System.in);
int n=sc.nextInt();
String str1=sc.next();
System.out.println("欢迎"+n+"号同学"+str1);
基本题
在JavaSE项目中,建立一个名为Lab2的包,完成以下题目:
1、在包Lab2中创建一个名为Lab2_1的类,统计从对键盘输入的一大段内容中所有不同符号的个数(可能字母数字或其他符号,其中字母不分大小写)。
输出格式:
A 5
C 2
* 3
……
……
package Lab2;
import java.util.Scanner;
public class Lab2_1 {
public static void main(String[] args) {
// TODO 自动生成的方法存根
int []a=new int[70000];
Scanner sc=new Scanner(System.in);
String str=sc.nextLine();//输入一串字符串并赋值给str
// int str=sc.nextInt();
System.out.println(str);
str=str.toUpperCase();
for(int i=0;i<str.length();i++)
{
a[str.charAt(i)]++;
}
for (int i = 0; i < a.length; i++) {
if(a[i]!=0) {
System.out.print((char)i );
System.out.println(" "+a[i]);
}
}
}
}
2、在包Lab2中创建一个名为Lab2_2主类及MyMath类,实现以下要求:
a、在MyMath类中建立多个静态函数,形参为一个double数组,函数包括max、min、sum、average。
b、在Lab2_2类的main函数中,建立一个数组并赋值。
c、在main中建立MyMath类的对象,通过该对象调用各个函数,计算数组中所有数据的最小值、最大值、平均值、总和。
事实上,用类的实例调用静态函数本质上就是使用类名调用静态函数,所以在eclipse中,使用实例调用静态函数会产生黄色的警告,表示不建议这么用,但却不会报错
package Lab2;
import java.util.Scanner;
public class Lab2_2 {
public static void main(String[] args) {
// TODO 自动生成的方法存根
Scanner sc=new Scanner(System.in);
int n=sc.nextInt();
double [] arr=new double[n];
for (int i = 0; i < n; i++) {
double b=sc.nextDouble();
arr[i]=b;
}
MyMath m = null;
System.out.println("数组中最大值为:"+m.max(arr));//或将m.改成MyMath.
System.out.println("数组中最小值为:"+m.min(arr));
System.out.println("数组中总和为:"+m.sum(arr));
System.out.println("数组中平均值为:"+m.average(arr));
}
}
class MyMath{
public MyMath() {
// TODO 自动生成的构造函数存根
}
public static double max(double a[]) {
double m=a[0];
for (int i = 0; i < a.length; i++) {
if(a[i]>m)m=a[i];
}
return m;
}
public static double min(double a[]) {
double m=a[0];
for (int i = 0; i < a.length; i++) {
if(a[i]<m)m=a[i];
}
return m;
}
public static double sum(double a[]) {
double m=0;
for (int i = 0; i < a.length; i++) {
m+=a[i];
}
return m;
}
public static double average(double a[]) {
double m=0;
for (int i = 0; i < a.length; i++) {
m+=a[i];
}
return m/a.length;
}
}
3、在包Lab2中创建一个名为Lab2_3的类,实现以下要求:
实现矩阵的转置功能,即用户输入一个矩阵的行列数及具体数据,然后输出其转置后的结果。
输入格式:
2 3 //分别代表行、列
1 2 3
4 5 6
输出格式:
1 4
2 5
3 6
package Lab2;
import java.util.Scanner;
public class Lab2_3 {
public static void main(String[] args) {
// TODO 自动生成的方法存根
Scanner sc=new Scanner(System.in);
int h=sc.nextInt();//行
int l=sc.nextInt();//列
int arr[][]=new int[h][l];
for (int i = 0; i < h; i++) {
for (int j = 0; j < l; j++) {
arr[i][j]=sc.nextInt();
}
}
for (int i = 0; i < l; i++) {
for (int j = 0; j < h; j++) {
System.out.print(arr[j][i]+" ");
}
System.out.println();
}
}
}
4、在包Lab2中创建一个名为Lab2_4