java_study

Java_study

7-2

有时候人们用四位数字表示一个时间,比如 1106 表示 11 点零 6 分。现在,你的程序要根据起始时间和流逝的时间计算出终止时间。

读入两个数字,第一个数字以这样的四位数字表示当前时间,第二个数字表示分钟数,计算当前时间经过那么多分钟后是几点,结果也表示为四位数字。当小时为个位数时,没有前导的零,例如 5 点 30 分表示为 530;0 点 30 分表示为 030。注意,第二个数字表示的分钟数可能超过 60,也可能是负数。

输入格式:
输入在一行中给出 2 个整数,分别是四位数字表示的起始时间、以及流逝的分钟数,其间以空格分隔。注意:在起始时间中,当小时为个位数时,没有前导的零,即 5 点 30 分表示为 530;0 点 30 分表示为 030。流逝的分钟数可能超过 60,也可能是负数。

输出格式:
输出四位数字表示的终止时间,当小时为个位数时,没有前导的零。题目保证起始时间和终止时间在同一天内。

输入样例:
1120 110
输出样例:
1310

import java.util.Arrays;
import java.util.Scanner;

@SuppressWarnings("AlibabaRemoveCommentedCode")
public class Main {
   public static void main(String[] args){
      Scanner input=new Scanner(System.in);
      String firstTime=input.next();
      int firstHour=0;
      int firstMinute=0;
      int allPastMinute=input.nextInt();
      int endHour=0;
      int endMinute =0;
      if(firstTime.length()==4) {
           firstHour=(firstTime.charAt(0)-'0')*10+(firstTime.charAt(1)-'0');
           firstMinute=(firstTime.charAt(2)-'0')*10+(firstTime.charAt(3)-'0');
      }
      else {
          firstHour=(firstTime.charAt(0)-'0');
          firstMinute=(firstTime.charAt(1)-'0')*10+(firstTime.charAt(2)-'0');
      }
      int allFirstMinute=firstMinute+firstHour*60;
      int allEndMinute=allFirstMinute+allPastMinute;
      endHour=allEndMinute/60;
      endMinute=allEndMinute%60;
      
      
         
      if(endMinute<10) {
            System.out.print(endHour+"0"+endMinute);
         }
         else{
            System.out.printf("%d%d",endHour,endMinute);
         }
   }
}

7-15

根据下面关系式,求圆周率的值,直到最后一项的值小于给定阈值。

​2

​π
​​ =1+
​3

​1
​​ +
​3×5

​2!
​​ +
​3×5×7

​3!
​​ +⋯+
​3×5×7×⋯×(2n+1)

​n!
​​ +⋯

输入格式:
输入在一行中给出小于1的阈值。

输出格式:
在一行中输出满足阈值条件的近似圆周率,输出到小数点后6位。

输入样例:
0.01
输出样例:
3.132157

import java.util.Arrays;
import java.util.Scanner;
public class Main {
   public static void main(String[] args){
      Scanner input=new Scanner(System.in);
      double inti=input.nextDouble();
      int i=1;
      double sum=1.0;
      for(double number=1;number>inti;i++)
      {
         number= (double)(number/(2*i+1))*i;
         sum+=number;
      }
      System.out.printf("%.6f",2*sum);
   }

}

7-29

输入2个字符串S1和S2,要求删除字符串S1中出现的所有子串S2,即结果字符串中不能包含S2。

输入格式:
输入在2行中分别给出不超过80个字符长度的、以回车结束的2个非空字符串,对应S1和S2。

输出格式:
在一行中输出删除字符串S1中出现的所有子串S2后的结果字符串。

输入样例:
Tomcat is a male ccatat
cat
输出样例:
Tom is a male

import java.util.Arrays;
import java.util.Scanner;

@SuppressWarnings("AlibabaRemoveCommentedCode")
public class Main {
   public static void main(String[] args){
      Scanner input=new Scanner(System.in);
      String sFirst=input.nextLine();
      String sLast=input.nextLine();
      StringBuilder newS= new StringBuilder();
      while(true)
      {
         newS.delete(0,newS.length());
         if(sFirst.contains(sLast))
         {
            for(int i=0;i<sFirst.indexOf(sLast);i++)
            {
               newS.append(sFirst.charAt(i));
            }
            sFirst=sFirst.substring(sFirst.indexOf(sLast)+sLast.length(),sFirst.length());
            sFirst=newS+sFirst;
         }
         else {
            break;
         }
      }
      System.out.print(sFirst);
   }

}

7-27

7-27 冒泡法排序 (20 分)
将N个整数按从小到大排序的冒泡排序法是这样工作的:从头到尾比较相邻两个元素,如果前面的元素大于其紧随的后面元素,则交换它们。通过一遍扫描,则最后一个元素必定是最大的元素。然后用同样的方法对前N−1个元素进行第二遍扫描。依此类推,最后只需处理两个元素,就完成了对N个数的排序。

本题要求对任意给定的K(<N),输出扫描完第K遍后的中间结果数列。

输入格式:
输入在第1行中给出N和K(1≤K<N≤100),在第2行中给出N个待排序的整数,数字间以空格分隔。

输出格式:
在一行中输出冒泡排序法扫描完第K遍后的中间结果数列,数字间以空格分隔,但末尾不得有多余空格。

输入样例:
6 2
2 3 5 1 6 4
输出样例:
2 1 3 4 5 6

import java.util.Arrays;
import java.util.Scanner;

@SuppressWarnings("AlibabaRemoveCommentedCode")
public class Main {
   public static void main(String[] args){
      Scanner input=new Scanner(System.in);
     int []numberInt=new int[101];
     int n,k;
     n=input.nextInt();
     k=input.nextInt();
     for(int i=0;i<n;i++) {
        numberInt[i]=input.nextInt();
     }
     int temp=0;
     for(int j=0;j<k;j++) {
        for(int h=0;h<n-j-1;h++){
           if(numberInt[h]>numberInt[h+1]) {
              temp=numberInt[h];
              numberInt[h]=numberInt[h+1];
              numberInt[h+1]=temp;
           }
        }
     }
     for(int i=0;i<n;i++) {
        System.out.print(numberInt[i]);
        if(i!=n-1) {
           System.out.print(" ");
        }
     }
   }

}
posted @ 2022-03-04 21:18  在天边偷看小天使  阅读(15)  评论(0)    收藏  举报  来源