Java实验1

1. 求任意输入的10个数的和。

import java.util.Scanner;
public class  S2_1_1{
	public static void main(String[] args){
		int[] a = new int[10];
		Scanner input = new Scanner (System.in);
		System.out.println("请输入十个数(每输入一个按一次回车)");
		int sum=0;
		for(int i=0;i<10;i++){
			a[i]= input.nextInt();
			sum +=a[i];
		}
		System.out.println("sum:"+sum);
	}
}

2.获取三个整数中的最大值(用三元运算符)。

import java.util.Scanner;
public class S2_1_2 {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
        System.out.println("x:");
        int x = sc.nextInt();//输入为整数
        System.out.println("y:");
        int y = sc.nextInt();//输入为整数
        System.out.println("z:");
        int z = sc.nextInt();//输入为整数
		System.out.println("");
		int l=(x>y) ? x:y;//先随便比较两个值的大小
		int max=(l>z) ? l:z;//再比较剩下的
		System.out.println("max:"+max);
	}
}

3.输入年份和月份,输出该年月的天数。

import java.util.Scanner;
public class S2_2_2 {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入年份:");
		int year = sc.nextInt();
		System.out.println("请输入月份:");
		int month = sc.nextInt();

		switch(month){
			case 1:case 3:case 5:case 7:case 8:case 10:case 12:
				System.out.println(year+"年"+month+"月"+"有31天");
				break;
			case 4:case 6:case 9:case 11:
				System.out.println(year+"年"+month+"月"+"有30天");
				break;
			case 2:
				if(year%4==0 || (year%400==0 && year%100!=0))
					System.out.println(year+"年"+month+"月"+"有29天");
				else
					System.out.println(year+"年"+month+"月"+"有28天");
				break;
			default:
				System.out.println("月份输入有误");
		}
	sc.close();
	}
}

4.键盘录入月份的值,输出对应的季节。

import java.util.Scanner;
public class S2_2_1{
	public static void main(String[] args){
		//1.键盘录入月份的值,输出对应的季节
		int month = 0;
		Scanner mt = new Scanner(System.in);
		System.out.println("month: ");
		month = mt.nextInt();

		if(month==3 || month==4 || month==5){
			System.out.println("春季");
		}
		else if(month==6 || month==7 || month==8){
			System.out.println("夏季");
		}
		else if(month==9 || month==10 || month==11){
			System.out.println("秋季");
		}
		else if(month==12 || month==1 || month==2){
			System.out.println("冬季");
		}
	}
}

5.出租车计费问题。

• 开封市的出租车计费方式为:起步2公里内5元,2公里以上每公里收费1.3元,9公里以上每公里收费2元,燃油附加费1元。
• 编写程序,输入公里数,计算出所需的出租车费用。

import java.util.Scanner;
public class  S2_2_3{
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		double cost=0,km=0;
		System.out.println("请输入公里km:");
		km = sc.nextDouble();
		if(km<=2) 
			cost = 5;
		else if(km>2 && km<=9){
			cost = 5+(km-2)*1.3;
		}
		else if(km>9){
			cost = 5+7*1.3+(km-9)*2;
		}
		cost += 1;	//燃油费加1
		System.out.println("车费:"+cost);
	}
}

6.分别用do-while和for循环计算1+1/2!-1/3!+1/4!-1/5!…的前20项之和。

public class S2_3_1 {
	//分别用do-while和for循环计算1+1/2!+1/3!+1/4!+…的前20项之和。
	public static void main(String[] args){
		double sum=0;
		double a=1;//分母
		double b=1;//计数

		//用do-while循环
		do{
			sum = sum+1/a;  //每次循环,分母会变成上一个数乘a+1
			a = a*(b+1);	//阶乘,第一次乘2、第二次乘3......
			b++;
		}while(b<21);
		System.out.println("do-while求1+1/2!...前二十项和为:"+sum);

		//用for循环
		double z = 0;
		for(b = 1 ; b < 21; b++){
			double num = 1;
			for(a = 1;a <= b; a++){
				num *= a;
			}
				z += 1 / num;
		}
		System.out.println("for求1+1/2!...前二十项和为:"+z);
	}
}


7.求1000以内的完全数(一个数等于它的因子之和称为完全数)。

public class S2_3_2 {
	//求1000以内的完全数(一个数等于它的因子之和称为完全数)
	public static void main(String[] args) {
		int num=0;
		for(int i=1;i <=1000;i++)
		{
			int sumt=0;
			for(int j =1;j<i ;j++)
			{	//找这个数的因子
				//如果能被整除就是因子	不包括其本身
				//定义一个数存因子,一个数存和sum要放这个循环外
				int div=0;
				if(i %j ==0)
				{
					div = j ;
					sumt = sumt+div;
				}
			}
			if(sumt==i )
			{
				System.out.println("Found 完全数:"+i );
			}
		}
}
}

8.微信中的一个问题:一筐鸡蛋,1个1个拿,正好拿完。

     2个2个拿,还剩1个。
     3个3个拿,正好拿完。
     4个4个拿,还剩1个。
     5个5个拿,还差1个。
     6个6个拿,还剩3个。
     7个7个拿,正好拿完。
     8个8个拿,还剩1个。
     9个9个拿,正好拿完。

问筐里最少有多少鸡蛋?

public class S2_3_3 
{
	public static void main(String[] args) 
	{
		int egg=0;
		//用一个循环找出
		for(egg=0;;egg++){
			//一个一个拿,正好拿完    (egg%1==0);
			//两个两个拿,还剩一个    (egg%2==1);
			//三个三个拿,正好拿完    (egg%3==0);
			//四个四个拿,还剩一个    (egg%4==1);
			//五个五个拿,还差一个    ((egg+1)%5==0);
			//六个六个拿,还剩三个    (egg%6==3);
			//七个七个拿,正好拿完    (egg%7==0);
			//八个八个拿,还剩一个    (egg%8==1);
			//九个九个拿,正好拿完    (egg%9==0);
			if((egg%1==0) && (egg%2==1) && (egg%3==0) && (egg%4==1) && ((egg+1)%5==0) && (egg%6==3) && (egg%7==0) && (egg%8==1) && (egg%9==0)){
				System.out.println("共有鸡蛋数:"+egg);
				break;
			}
	    }
	}
}

9.求六边形面积,六边形面积可以通过下面公式计算(s是边长):

在这里插入图片描述
注:使用Math类中的方法计算tan值。

//用数学公式计算六边形的面积
import java.util.Scanner;

public class S2_5_1 {
    public static void main(String[] args) {
        //用户输入
        Scanner input = new Scanner(System.in);
        System.out.println("请输入六边形的边长:");
        double s =input.nextDouble();
        //判断输入数据是否合法
        if(s<0)
        {
            System.out.println("输入数据不合法!");
            System.exit(1);
        }

        double area =(6*s*s)/(4*Math.tan(Math.PI/6));
        System.out.println("该六边形的面积为:"+area);
    }
}



10.实现会员注册,要求用户名长度不小于3,密码长度不小于6,若不满足需有提示信息,提示输入有误;注册时两次输入密码必须相同(字符串)。

//会员注册,要求用户名长度不小于3,密码长度不小于6,注册时两次输入密码必须相同
import java.util.Scanner;

public class S2_5_2 {
    public static void main(String[] args) {
        String name;
        String password;
        String twicepassword;

        Scanner input = new Scanner(System.in);
        System.out.println("请输入姓名:");
        name = input.next();
        if(name.length()<3){
            System.out.println("用户名长度不得小于3!");
            System.out.println("请重新输入用户名:");
            name = input.next();
        }

        System.out.println("请输入密码:");
        password = input.next();
        if(password.length()<6){
            System.out.println("密码长度不得小于6");
            System.out.println("请重新输入密码:");
            password = input.next();
        }

        System.out.println("请再次输入密码:");
        twicepassword = input.next();
        if(password!=twicepassword){
            System.out.println("两次密码不一致!");
            System.out.println("请再次输入密码:");
            twicepassword = input.next();
        }

        System.out.println("注册成功!!!");
    }
}

11.找出两个分教最高的学生)编写程序,提示输入学生的个数、每个学生的名字及其分数,最后显示获得最高分的学生和第二高分的学生。

//输入学生个数,每个学生的名字和分数,最后找出两个分数最高的学生
import java.util.Scanner;
public class S2_5_3 {
    public static void main(String[] args) {
        System.out.println("请输入学生个数:");
        Scanner sc = new Scanner(System.in);
        int num =  sc.nextInt();
        if(num<2){
            System.out.println("学生个数过少,请重新输入!");
            System.exit(0); //正常退出
        }
		int i=0;
        double[] grade_arr= new double[num];//创建成绩数组
        String[] name_arr= new String[num];//创建名字数组
        for(i=0;i<num;i++)
        {
            System.out.println("请输入第"+(i+1)+"学生的名字和分数");
            String name=sc.next();
            double grade= sc.nextDouble();
            name_arr[i]=name;
            grade_arr[i]=grade;

        }

        for(int j=0;j<grade_arr.length-1;j++)//将成绩从高到低排序(名字顺序随成绩变动)
        {
            for( i=0;i<grade_arr.length-1;i++)
            {

                if(grade_arr[i]<grade_arr[i+1])
                {
                    double temp1=grade_arr[i];
                    grade_arr[i]=grade_arr[i+1];
                    grade_arr[i+1]=temp1;
                    String temp2=name_arr[i];
                    name_arr[i]=name_arr[i+1];
                    name_arr[i+1]=temp2;
                }
            }
        }
        if(grade_arr[0]==grade_arr[1])//判断前两名成绩是否相同
        {
            System.out.println(name_arr[0]+"和"+name_arr[1]+"的成绩均为 "+grade_arr[0]);
        }
        else
        {
            System.out.println("第一名同学的名字"+name_arr[0]+",他的成绩是 "+grade_arr[0]);
            System.out.println("第二名同学的名字"+name_arr[1]+",他的成绩是 "+grade_arr[1]);
        }
    }
}

12.定义一维数组并初始化,通过键盘任意输入一个数,查找该数是否存在(结果返回下标值)

//定义一维数组并初始化,通过键盘任意输入一个数,查找该数是否存在(结果返回下标值)。
import java.util.Scanner;
public class S2_5_4 {
    public static void main(String[] args) {
        //初始化数组
       int arr[] ={1,11,111,12,2,33,44,6};
       for(int i=0;i<8;i++) {
           System.out.print(arr[i]+" ");
       }
       System.out.println();
       //键入任意一个数
       System.out.println("请输入要查找的数:");
       Scanner sc= new Scanner(System.in);
       int num=sc.nextInt();
       for(int i=0;i<8;i++){
           if(arr[i] == num){
               System.out.println("你所查找的数的下标为"+i);
               break;
           }
           else{
               System.out.println("未找到你要查找的数");
               break;
           }
       }
    }
}

13.编写一个程序,将二维数组a转置后存入数组b(所谓转置就是行列互换)

//编写一个程序,将二维数组a转置后存入数组b(所谓转置就是行列互换)
import java.util.Scanner;
public class S2_5_5 {
    public static void main(String [] args) {
        Scanner sc=new Scanner(System.in);
        System.out.println("请输入二维数组的行:");
        int h = sc.nextInt();
        System.out.println("请输入二维数组的列:");
        int l = sc.nextInt();
        arr(h,l);
    }

    public static void arr(int h,int l){
        Scanner sr = new Scanner(System.in);
        int[][] arrs = new int[h][l];

        //遍历赋值
        for (int i = 0; i < h; i++) {
            for (int j = 0; j < l; j++) {
                System.out.print("给第"+(i+1)+"行"+"第"+(j+1)+"列赋值:");
                arrs[i][j] = sr.nextInt();
            }
            System.out.println();
        }

        //遍历展示数组
        for (int i = 0; i < h; i++) {
            for (int j = 0; j < l; j++) {
                System.out.print(arrs[i][j]+"\t");
            }
            System.out.println();
        }

        //转置
        System.out.println("数组转置后:");
        for (int i = 0; i < l; i++) {
            for (int j = 0; j < h; j++) {
                System.out.print(arrs[j][i]+"\t");
            }
            System.out.println();
        }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值