JAVA04

6 篇文章 0 订阅

0401

输入大于2的一个整数n,按格式画一个菱形。每个数字占输入长度+1位
        输入要求:
        多组输入:
        输入大于2的一个整数n
        输出要求:
        输出一个按符合要求的三菱形
        数据示例1:
        输入:
        3
        输出:
            1                   
          1 2 1                  
        1 2 3 2 1                
          1 2 1                  
            1(最后一行要换行)
import java.util.Scanner;

public class oj_0401 {
    public static void main(String[] args) {
        int n;
        Scanner input = new Scanner(System.in);
        while (input.hasNextInt()) {
            n = input.nextInt();

            for (int i = 1; i <= n; i++) {
              for (int o = 1; o <= (n - i); o++) {
                System.out.printf("  ");
            }
                for (int j = 1; j <= i * 2 - i; j++) {
                    System.out.printf("%d ", j);
                    if (j == i) {
                        for (int t = j - 1; t >= 1; t--) {
                            System.out.printf("%d ", t);
                        }
                    }
                }
                System.out.printf("\n");
            }
            for (int i = 1; i <= n - 1; i++) {
                for (int o = 1; o <= i; o++) {
                    System.out.printf("  ");
                }
                for (int j = 1; j <= n - i; j++) {
                    System.out.printf("%d ", j);
                    if (j == n - i) {
                        for (int t = j - 1; t >= 1; t--) {
                            System.out.printf("%d ", t);
                        }
                    }
                }
                System.out.printf("\n");
            }

        }
    }
}

0402

输入大于2的一个整数n,按格式画一个菱形。每个数字占输入长度+1位
        输入要求:
        多组输入:
        输入大于2的一个整数n
        输出要求:
        输出一个按符合要求的菱形
        数据示例1:
        输入:
        3
        输出:
            1
          2 1 2
        3 2 1 2 3
          2 1 2
            1(最后一行要换行)
        标签
import java.util.Scanner;

public class oj_0402 {
    public static void main(String[] args) {
        int n;
        Scanner input = new Scanner(System.in);
        while (input.hasNextInt()) {
            n = input.nextInt();
            for (int i = 1; i <= n; i++) {
                for (int o = 1; o <= (n - i); o++) {
                    System.out.printf("  ");
                }
                for (int j = i; j >=1; j--) {
                    System.out.printf("%d ", j);
                    if (j == 1) {
                        for (int t = j + 1; t <=i; t++) {
                            System.out.printf("%d ", t);
                        }
                    }
                }
                System.out.printf("\n");
            }
            for (int i = 1; i <= n - 1; i++) {
                for (int o = 1; o <= i; o++) {
                    System.out.printf("  ");
                }
                for (int j = n-i; j >=1; j--) {
                    System.out.printf("%d ", j);
                    if (j == 1) {
                        for (int t = j + 1; t <= n-i; t++) {
                            System.out.printf("%d ", t);
                        }
                    }
                }
                System.out.printf("\n");
            }

        }
    }
}

0403

小刚同学接到任务二,需要小刚将10进制转化成16进制,作为小刚的最佳队友的你,请设计一个Java程序来帮他解决
        输入要求:
        多组输入。输入一个10进制的整数
        输出要求:
        输出相应转化成16进制的数
        数据示例1:
        输入:
        10
        8
        20
        29
        输出:
        a
        8
        14
        1d
import java.util.Scanner;

public class oj_0403 {
    public static void main(String[] args) {
        int n;
        Scanner input = new Scanner(System.in);
        while(input.hasNextInt()){
            n=input.nextInt();
            int r=0,c=0;
            String s="";
            while (n>0){
                r=n%16;
                n=n/16;
            }
            if(r<10)System.out.println(n+r);
            else if (r>=10&&r<=15){
                    char p=(char)(r-10+'a');
                    if(n>0)
                System.out.print(n);
                System.out.println(p);
                }
//            System.out.printf("%x\n",n);
        }
    }
}

0404

老师给小刚一串数字,想让小刚同学来统计这串数字中正数和负数的数量以及他们的总和和均值,老师没有告诉小刚同学这串数字的个数,
        只跟他说了数字串最后一个数字是0。
        老师要求数字串的总和及均值都要保留两位小数!
        请你来设计一个程序来帮助小刚完成任务~
        输入要求:
        多组数据,
        每一组输入n个整型数numi (1<=n<=1000,-999<=numi<=999),每个数字都以空格隔开,当numi为0时表示该组数据输入结束。
        输出要求:
        将任务结果一行输出,依次是正数的个数(int)、负数的个数(int)、数字串的总和(double)、数字串的均值(double)
        ,任务结果之间用空格隔开。
        数据示例1:
        输入:
        1 2 -1 3 0
        输出:
        3 1 5.00 1.25
import java.util.Scanner;

public class oj_0404 {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        int f=0,z=0,c=0;
        double sum=0,avg=0;
        while (true) {
            int x = input.nextInt();
            c++;
            if (x == 0)     // 当读到0时,输入结束
                break;
            if (x > 0) z++;
            else f++;
            sum += x;
            avg=sum/c;
        }
        System.out.printf("%d %d %.2f %.2f",z,f,sum,avg);
    }
}

0405

修改课本中226页二分查找法。
        二分查找法查找一个已经排好序列(假设从小到大)的允许有重复数据数组中所有和key值相等的下标.
        函数原型 public static int[] binSearch(int[] list, int key)
        输入要求:
        多组数据。需要查找的值  数组长度  数组中的数据
        输出要求:
        存在:
        1)只有一个值,返回下标
        2)如果有多个值,返回最低下标和最高下标
        不存在:返回 (应该的位置的负数-1) ,比如查找8,不在,但是如果8在的话,应该是第7号位,所以返回 -7-1 = -8
        数据示例1:
        输入:
        8 10
        1 2 3 4 5 6 7 8 8 9
        8 10
        1 2 3 4 5 6 7 80 80 90
        输出:
        7 8
        -8
import java.util.Scanner;

public class oj_0405 {
    public static void main(String[] args) {
        Scanner input =new Scanner(System.in);
        while (input.hasNextInt()){
            int key=input.nextInt();
            int l=input.nextInt();
            int[] a=new int[l];
            for (int i=0;i<l;i++){
                a[i]=input.nextInt();
            }
            int[] p=binSearch(a,key);
            for (int e : p){
                System.out.print(e+" ");
            }
            System.out.println();
        }
    }
    public static int[] binSearch(int[] list, int key){
        int low=0, high=list.length-1;
        while (low<=high){
            int mid = (low+high)/2;
            if(key==list[mid]){
                int max=mid,min=mid;
                for(int i=mid-1;i>=0;i--){
                    if(list[i]==key){
                        min=i;
                    }
                    else break;
                }
                for(int i=mid+1;i<=list.length-1;i++){
                    if(list[i]==key){
                        max=i;
                    }
                    else break;
                }
                if(max==min)
                    return new int[] {max};
                else
                    return new int[] {min,max};
            }
            if(key<list[mid])
                high=mid-1;
            if(key>list[mid])
                low=mid+1;
        }
        return new int[] {-low-1};
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值