PTA Java作业

7-1 编程题:兔子繁殖问题
已知有一对兔子,每个月可以生一对兔子,而小兔子一个月后又可以生一对小兔子(比如:2月份出生的小兔子4月份可以生育)。也就是说,兔子的对数为:第一个月1对,第二个月2对,第三个月3对,第四个月5对…假设兔子的生育期为两年,且不死。那么问题来了,你能说出每个月的兔子数么?

输入格式:

输入一个数n,表示第n个月,1<=n<=24。

输出格式:

输出这个月兔子的数目。

输入样例:

4

输出样例:

5

import java.util.Scanner;
public class Main {

    public static void main(String[] args) {
        Scanner in=new Scanner(System.in);
        int month=in.nextInt();
        int a=1,b=2,c=0;
        if (month==1)
            System.out.println("1");
        else if (month==2) 
            System.out.println("2");
        else{
            for (int i=3;i<=month ;i++ ) {
            c=a+b;a=b;b=c;
            
            }    
            System.out.println(c);
        }
    }
}


7-2 编程题:空心字母金字塔
输入一个大写的英文字母,输出空心的字母金字塔。

输入格式:

一个大写英文字母。

输出格式:

一个空心的大写英文字母金字塔,其中第1层的“A”在第1行的第40列,列从1开始计数。

输入样例:

E

输出样例:

                                   A
                                  B B
                                 C   C
                                D     D
                               EEEEEEEEE
import java.util.Scanner;
public class Main {

    public static void main(String[] args) {
        Scanner in=new Scanner(System.in);
        char cha = in.next().charAt(0);
        int m = cha-'A';//计算输入的字母与字母A的距离
        for (int i=0;i<m ;i++ ) {//分行输出
            for (int j=1;j<40-i ;j++ ) //先输出字母前的空格
                System.out.print(" ");
            if(i==0)
                System.out.println((char)((int)'A'+i));//如果是第一行,则输出后回车
            else
                System.out.print((char)((int)'A'+i));

            for (int t=1;t<=2*i-1 ;t++ )//输出字母间的空格 
                System.out.print(" ");

            if(i>0)
            	System.out.println((char)((int)'A'+i));//如果不是第一行,则输出第二个字母后回车            
        }

        for (int k=1;k<=40+m ;k++ ) {//输出最后一行
            if (k<40-m) 
                System.out.print(" ");
            else
                System.out.print(cha);
            }   
    }
}

7-3 上三角数字三角形
输入一个正整数n,输出具有n层的上三角数字三角形。
输入格式:

只有一个正整数n,1<=n<=100。

输出格式:

一个上三角数字三角形,每个数字占四个字符位置。

输入样例:

5

输出样例:

   1	2   3   4   5
   6    7   8   9
  10   11  12
  13   14
  15
import java.util.Scanner;
public class Main {
	
	public static void main(String[] args){
	Scanner reader= new Scanner(System.in);
	int n = reader.nextInt();

	int i = 1;
	for (int j=1;j<=n;j++){

		for (int k=n-j+1;k>0;k--)
			System.out.printf("%4d",i++);//每个数字占四个字符位
		System.out.print("\n");	
	}
	}
}

7-4 编程题:统计符合条件元素的个数-hebust
统计1…n的闭区间中,能够被3整除元素的奇数和偶数的个数

输入格式:

输入值n的范围是 【1…1000】

输出格式:

奇数个数,偶数个数

输入样例:

5

输出样例:

1,0

import java.util.Scanner;
public class Main{
    public static void main(String args[]){
        Scanner in = new Scanner (System.in);
        int x=in.nextInt();
        int jishu=0;
        int oushu=0;
        for (int i=1;i<=x ;i++ ) {
            if (i%3==0) {
                if (i%2==0) 
                    oushu++;
                if (i%2==1)
                    jishu++;
            }
        }
        System.out.println(jishu+","+oushu);

    }
}

7-5 编程题:分解质因数
求出区间[a,b]中所有整数的质因数分解。
输入格式:

输入两个整数a,b。数据规模和约定  2<=a<=b<=10000

输出格式:

每行输出一个数的分解,形如k=a1a2a3…(a1<=a2<=a3…,k也是从小到大的)(具体可看样例)

输入样例:

在这里给出一组输入。例如:

3 10

输出样例:

3=3
4=2*2
5=5
6=2*3
7=7
8=2*2*2
9=3*3
10=2*5

import java.util.Scanner;
public class Main{
	public static void main(String args[]){
	Scanner in = new Scanner(System.in);
	int a = in.nextInt();
	int b = in.nextInt();
	int []num=new int[b];

	int i,j,k=0;	
	for (i=2; i<=b;i++ ) {		//将2-b之间的素数用数组存储
		for (j=2;j<=i/2 ;j++ ) {
			if (i%j==0)
				break;
		}
		if(j>i/2){
			num[k]=i;
			k++;
		}
	  }
	  
	  int q = 0;
	for (int p=a;p<=b ;p++ ) {
	  	System.out.print(p+"=");
	  	q=p;
	  		for (int t=0;t<k;t++){
	  			while(q%num[t]==0){	
	  			//将质因数由小到大排列,一直对num[t]取余,直到不能整除,再进行下一个循环
	  				q=q/num[t];
	  				if (q!=1) 
	  					System.out.print(num[t]+"*");
	  				else
	  					System.out.print(num[t]);
	  			}
				if(q==1)//如果已分解结束,则跳出循环
	  			break; 
	  		}
	  	System.out.println("");//换行
	  }
	}
}

7-6 编程题:学投资
小白学习了一些复利投资知识,想比较一下复利能多赚多少钱(所谓复利投资,是指每年投资的本金是上一年的本金加收益。而非复利投资是指每年投资金额不包含上一年的收益,即固定投资额)。假设他每年固定投资M元(整数),每年的年收益达到P(0<P<1,double),那么经过N(整数)年后,复利投资比非复利投资多收入多赚多少钱呢?计算过程使用双精度浮点数,最后结果四舍五入输出整数(Math的round函数)。

输入格式:

M P N

输出格式:

复利收入(含本金),非复利收入(含本金),复利比非复利收入多的部分(全部取整,四舍五入)

输入样例:

10000 0.2 3

输出样例:

17280 16000 1280

import java.util.Scanner;
public class Main{
	public static void main(String args[]){
	Scanner in = new Scanner (System.in);
	int M = in.nextInt();
	double P = in.nextDouble();
	int N = in.nextInt();

	double fu =(double)M;
	double feifu = 0;

	fu = M*Math.pow(1+P,N);
	feifu = M*P*N+M;

	System.out.print(Math.round(fu)+" ");
	System.out.print(Math.round(feifu)+" ");
	System.out.println(Math.round(fu-feifu));	
	}
}

7-8 编程题:数据的规范化处理问题-hebust
在进行数据处理时,输入数据未经过滤,存在一些不符合要求的数据 要求编写数据处理程序,小于0的数据一律指定为0,大于100的数据一律指定为100

输入格式:

输入:所有元素占一行,元素之间使用空格分开,元素均为整数,范围【-300…300】

输出格式:

输出:所有元素占一行,元素之间使用西文逗号分开,最后一个元素末尾保留西文逗号

输入样例:

在这里给出一组输入。例如:

-1 10 105

输出样例:

在这里给出相应的输出。例如:

0,10,100,

import java.util.Scanner;
public class Main{
    public static void main(String args[]){

        Scanner in = new Scanner (System.in);
        String x=in.nextLine();
        String [] example = x.split(" ");//将x用空格分割,储存在数组里
        	//1.split()方法
        for (int i=0 ;i<example.length;i++ ){
        	//2.String length() 方法
        	if (Integer.parseInt(example[i])<0)//将字符转换为integer数据类型
        	//3.Integer.parseInt()的使用
                System.out.print("0,");
			else if (Integer.parseInt (example[i])>100)
                System.out.print("100,");
			else
                System.out.print(example[i]+",");
         }
    }
}
  1. split() 方法
  2. String length() 方法
  3. Integer.parseInt() 的使用

7-9 编程题:复杂情况下的数据统计问题-hebust
复杂环境下的数据统计问题
进行数值统计的时候,可能会混入一些非数值的元素,下面请编程完成对输入序列进行求和统计并输出, 如果遇到非数值元素,则自动跳过,并在最终结果输出行之后另起一行,输出attention

输入格式:

单行输入,元素之间使用空格分开

输出格式:

对元素所对应的整数进行求和并输出

如果遇到非数值元素,则自动跳过,并在最终结果输出行之后另起一行,输出attention

输入样例a:

在这里给出一组输入。例如:

1 2 3 4 5

输出样例a:

在这里给出相应的输出。例如:

15

输入样例b:

在这里给出一组输入。例如:

1 2 3 4 a 5

输出样例b:

在这里给出相应的输出。例如:

15
attention

import java.util.Scanner;
public class Main{
    public static void main(String args[]){

        Scanner in = new Scanner (System.in);
        String x=in.nextLine();
        String [] example = x.split(" ");//同上一题
        int sum = 0;
        boolean p = true;
        for (int i=0 ;i<example.length;i++ ){//1.求数组长度方法
        	if (example[i].charAt(0)>='0'&&example[i].charAt(0)<='9'){//3.chatAt(),如果字符的第一位是数字
                try{//2.try...catch使用
                    sum+=Integer.parseInt(example[i]);}
                    catch(Exception e){//如果将字符转换为Integer数据类型的执行抛出异常
                        p=false;
                        continue;
                    }
             }

            else if (example[i].charAt(0)=='-')//如果是负数
                sum+=Integer.parseInt(example[i]);
                
            else
                p=false;
            
        }
        System.out.println(sum);
        if (p==false) {
            System.out.println("attention");
        }
    }
}

1.length:求数组长度
2.try…catch使用1⃣️ or2⃣️
3.charAt()使用

7-10 编程题:按正整数的相反数字顺序输出
本题目要求输入一个正整数,按数字的相反顺序输出。

输入格式:

输入一个正整数。

输出格式:

按输入正整数的数字相反顺序输出一个数字。

输入样例:

5236

输出样例:

6325

import java.util.Scanner;
public class Main{
	public static void main(String args[]){
	Scanner in = new Scanner(System.in);
	String x = in.nextLine();
	String [] strings; 
	int i = 0;
	for (i=x.length()-1;i>=0;i-- ) {
	System.out.print(x.charAt(i));//按照从后往前的顺序输出	
	}
	}
}
  • 4
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值