JAVA实验报告实验四 流程控制与数组

实验  流程控制与数组

实验目的:

  1. 掌握Java语言顺序结构、选择结构和循环结构程序设计。

2. 掌握数组的定义和初始化。

3. 掌握对一维和二维数组元素的引用方法。

实验学时 4学时

实验内容

1. 可以用整型数的16个二进制位表示16支足球队小组出线的情况,每一位代表一支参赛队,其值为1表时该队出线,其值为0表示该队未能出线。假定从int的低16位由低位向高位分别代表第1队、第2队、第3队……第16队,如果当前表示出线情况的int型值为50083,请输出哪些队获得了出线权?

提示:如果 n & 1 的结果等于1,说明第1队出线  

如果 n & 2 的结果等于2,说明第2队出线  

如果 n & 4 的结果等于4,说明第3队出线  

如果 n & 8 的结果等于8,说明第4队出线  

package test1;
import java.util.Scanner;
public class test1 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int n=50083;
		int j=1;
		System.out.println(Integer.toBinaryString(n));
		for(int i=1;i<=16;i++){
			if((n&j)==j)
				System.out.println("第"+i+"队出线");
			j=j*2;
		}
	}

}

2. 两位数13和62具有很有趣的性质:把它们个位数字和十位数字对调,其乘积不变, 即13*62=31*26。 编程序求共有多少对这种性质的两位数(个位与十位相同的不在此列,如11、22,重复出现的不在此列,如 13*62与62*13)。

public class class1 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int count=0;
int i,j;
for(i=10;i<100;i++){
	for(j=i;j<100;j++){
		if(((i%10)*10+i/10)*((j%10)*10+j/10)==i*j){
			if(i/10==i/10&&j/10==j%10){
				continue;
			}
			else if(i/10!=i%10&&j/10!=j%10){
				count++;
			}
		}
	}
}
System.out.println(count);
	}

}

3. 验证歌德巴赫猜想。一个充分大的偶数(大于或等于6)可以分解为两个素数之和。 试编程序,将 6至50之间全部偶数表示为两个素数之和。

package test;

public class test {

	public static boolean isprime(int a) {
		if (a == 1) {
			return false;
		} else {
			for (int i = 2; i < Math.sqrt(a); i++) {
				if (a % i == 0) {
					return false;
				}

			}
		}
		return true;
	}

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		for (int i = 6; i <= 50; i++) {
			int m = 0;
			if (i % 2 == 0) {
				for (int j = 1; j <= i; j++) {
					for (int k = 1; k <= i; k++) {
						if (isprime(j) && isprime(k) && (j + k == i)) {
							System.out.println(i + "=" + j + "+" + k);
							m = 1;
							break;
						}
					}
					if (m == 1)
						break;
				}

			}
		}
	}

}

4. 输入1到7之间的某个整数,输出相应的星期:Monday、 Tuesday 等等,用switch语句实现。

import java.util.Scanner;
public class test {
public static void main(String[] args) {
  Scanner input=new Scanner(System.in); //定义扫描键盘输入的对象
  int a = input.nextInt();     //从键盘输入文本中,读入一个整数
  float b = input.nextFloat();  //从键盘输入文本中,读入一个浮点数
  float c = input.nextFloat();
 //相当于C语言的scanf(“%d%f%f”,&a,&b,&c);
 …
input.close();
 }
}
package test;

import java.util.Scanner;

public class test {
	public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        System.out.print("请输入一个1~7的整数:");
        int num = input.nextInt();
        if(num>7){
            System.out.println("输入错误"); 
        }
     
        if(num>0&&num<=7){
            switch (num){
                case 1:
                    System.out.println("星期一");
                    break;
                case 2:
                    System.out.println("星期二");
                    break;
                case 3:
                    System.out.println("星期三");
                    break;
                case 4:
                    System.out.println("星期四");
                    break;
                case 5:
                    System.out.println("星期五");
                    break;
                case 6:
                    System.out.println("星期六");
                    break;
                case 7:
                    System.out.println("星期日");
                    break;
            }
        }

    }
	}

5. 打印如下形式的杨辉三角形 

               1

               1   1

               1   2   1

               1   3   3   1

               1   4   6   4   1

               1   5   10  10  5   1

   ........................

    输出前10行。

package test;

public class test {

	public static void main(String[] args) {

        int[][] a = new int[10][];
        for (int i = 0; i < a.length; i++) {
            a[i] = new int[i + 1];
        }

        for (int i = 0; i < a.length; i++) {
            a[i][0] = 1; 
            a[i][i] = 1; 
        }
        for (int i = 2; i < a.length; i++) {
            for (int j = 1; j < i; j++) {
                a[i][j] = a[i - 1][j - 1] + a[i - 1][j];
            }
        }
        for (int i = 0; i < a.length; i++) {
            for (int j = 0; j <= i; j++) {
                System.out.print(a[i][j] + "\t");
            }
            System.out.println();
        }
    }
}

6. 编写程序,完成下列功能:

(1)输入20个整数到数组中;

(2)对20个数按从大到小的顺序排序,输出排序后的数组;

(3)输入一个整数x;

(4)在数组中,用二分法查找x。如果找到了输出x在数组中的下标,找不到输出-1。

package test1;
import java.util.Scanner;
public class test1 {
static int Search(int a[],int x)
{
	int left=0;
	int right=a.length-1;
	while(left<right)
	{
		int mid=(left+right)/2;
		if(x>a[mid])
			{left=mid+1;
			}if(x<a[mid])
			{right=mid-1;
			}else{
				return mid;
			}}
			return -1;
	
}
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner input=new Scanner(System.in);
		System.out.println("输入20个整数:");
		int a[]=new int [20];
		int temp;
		for(int n=0;n<a.length;n++){
		 a[n]=input.nextInt();}
		System.out.println("输入一个整数x:");
		int i=input.nextInt();
		int b=Search(a,i);
		System.out.println("下标为:"+b);
		for(int n=0;n<a.length;n++)
		{for(int j=0;j<a.length-1;j++){
				if(a[j]<a[j+1])
				{
				temp=a[j];
				a[j]=a[j+1];
				a[j+1]=temp;
				}
		}	
		}
		for(int n=0;n<a.length;n++){
			System.out.print(a[n]+" ");}
		System.out.println();
		
		
	}

}

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值