PTA基础编程题目集

 7-1 厘米换算英尺英寸 

如果已知英制长度的英尺foot和英寸inch的值,那么对应的米是(foot+inch/12)×0.3048。现在,如果用户输入的是厘米数,那么对应英制长度的英尺和英寸是多少呢?别忘了1英尺等于12英寸。

输入格式:

输入在一行中给出1个正整数,单位是厘米。

输出格式:

在一行中输出这个厘米数对应英制长度的英尺和英寸的整数值,中间用空格分开。

输入样例:

170

结尾无空行

输出样例:

5 6

结尾无空行

代码:

import java.util.Scanner;
public class aa {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int a= sc.nextInt();
        int foot= (int)Math.floor(a/30.48);
        int inch= (int)((a/30.48-foot)*12);
        System.out.println(foot+" "+inch);
        }
}

7-2 然后是几点 (15 分)

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

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

输入格式:

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

输出格式:

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

输入样例:

1120 110

结尾无空行

输出样例:

1310

结尾无空行

代码:

import java.util.Scanner;
public class aa {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String a =sc.nextLine();
        String b[] =a.split(" ");
        int c = Integer.parseInt(b[0]);
        int d = Integer.parseInt(b[1]);
        int m = (c%100+d)%60;
        c = (c/100)+((c%100+d)/60);
        System.out.print(c);
        System.out.print(m);
        }
}

7-3 逆序的三位数 (10 分)

程序每次读入一个正3位数,然后输出按位逆序的数字。注意:当输入的数字含有结尾的0时,输出不应带有前导的0。比如输入700,输出应该是7。

输入格式:

每个测试是一个3位的正整数。

输出格式:

输出按位逆序的数。

输入样例:

123

结尾无空行

输出样例:

321

代码:

import java.util.Scanner;
public class aa {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int a=sc.nextInt();
        int x,y,z;
        x=a/100;y=a/10%10;z=a%10;//百位、十位、个位
        System.out.println(z*100+y*10+x);
        }
}

7-4 BCD解密 (10 分)

BCD数是用一个字节来表达两位十进制的数,每四个比特表示一位。所以如果一个BCD数的十六进制是0x12,它表达的就是十进制的12。但是小明没学过BCD,把所有的BCD数都当作二进制数转换成十进制输出了。于是BCD的0x12被输出成了十进制的18了!

现在,你的程序要读入这个错误的十进制数,然后输出正确的十进制数。提示:你可以把18转换回0x12,然后再转换回12。

输入格式:

输入在一行中给出一个[0, 153]范围内的正整数,保证能转换回有效的BCD数,也就是说这个整数转换成十六进制时不会出现A-F的数字。

输出格式:

输出对应的十进制数。

输入样例:

18

结尾无空行

输出样例:

12

代码:

import java.util.Scanner;
public class aa {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int a=sc.nextInt();
        int b =a/16;
        int c =a%16;
        System.out.println(b*10+c);
        }
}

7-5 表格输出 (5 分)

本题要求编写程序,按照规定格式输出表格。

输入格式:

本题目没有输入。

输出格式:

要求严格按照给出的格式输出下列表格:

------------------------------------
Province      Area(km2)   Pop.(10K)
------------------------------------
Anhui         139600.00   6461.00
Beijing        16410.54   1180.70
Chongqing      82400.00   3144.23
Shanghai        6340.50   1360.26
Zhejiang      101800.00   4894.00
------------------------------------

代码:

import java.util.Scanner;
public class aa {
    public static void main(String[] args) {
        System.out.println("------------------------------------");
        System.out.println("Province      Area(km2)   Pop.(10K)");
        System.out.println("------------------------------------");
        System.out.println("Anhui         139600.00   6461.00");
        System.out.println("Beijing        16410.54   1180.70");
        System.out.println("Chongqing      82400.00   3144.23");
        System.out.println("Shanghai        6340.50   1360.26");
        System.out.println("Zhejiang      101800.00   4894.00");
}
}

7-6 混合类型数据格式化输入 (5 分)

本题要求编写程序,顺序读入浮点数1、整数、字符、浮点数2,再按照字符、整数、浮点数1、浮点数2的顺序输出。

输入格式:

输入在一行中顺序给出浮点数1、整数、字符、浮点数2,其间以1个空格分隔。

输出格式:

在一行中按照字符、整数、浮点数1、浮点数2的顺序输出,其中浮点数保留小数点后2位。

输入样例:

2.12 88 c 4.7

结尾无空行

输出样例:

c 88 2.12 4.70

代码:

import java.util.Scanner;
public class aa {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String a =sc.nextLine();
        String b[] =a.split(" ");
        float a1 = Float.parseFloat(b[0]);
        int a2 = Integer.parseInt(b[1]);
        char a3 = b[2].charAt(0);
        float a4 = Float.parseFloat(b[3]);//3214
        System.out.printf("%c %d %.2f %.2f",a3,a2,a1,a4);
    }
}

7-7 12-24小时制 (15 分)

编写一个程序,要求用户输入24小时制的时间,然后显示12小时制的时间。

输入格式:

输入在一行中给出带有中间的:符号(半角的冒号)的24小时制的时间,如12:34表示12点34分。当小时或分钟数小于10时,均没有前导的零,如5:6表示5点零6分。

提示:scanf的格式字符串中加入:,让scanf来处理这个冒号。

输出格式:

在一行中输出这个时间对应的12小时制的时间,数字部分格式与输入的相同,然后跟上空格,再跟上表示上午的字符串AM或表示下午的字符串PM。如5:6 PM表示下午5点零6分。注意,在英文的习惯中,中午12点被认为是下午,所以24小时制的12:00就是12小时制的12:0 PM;而0点被认为是第二天的时间,所以是0:0 AM

输入样例:

21:11

结尾无空行

输出样例:

9:11 PM

代码:

import java.util.Scanner;
public class aa {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String a =sc.nextLine();
        String b[] =a.split(":");
        int h= Integer.parseInt(b[0]);
        int m = Integer.parseInt(b[1]);
        if(h<12&&h>=0){
            System.out.printf("%d:%d AM",h,m);
        }else{
            if(h>12&&h<24){
                System.out.printf("%d:%d PM",h%12,m);
            }
            if(h==12){
                System.out.printf("%d:%d PM",h,m);
            }
        }
    }
}

7-8 超速判断 (10 分)

模拟交通警察的雷达测速仪。输入汽车速度,如果速度超出60 mph,则显示“Speeding”,否则显示“OK”。

输入格式:

输入在一行中给出1个不超过500的非负整数,即雷达测到的车速。

输出格式:

在一行中输出测速仪显示结果,格式为:Speed: V - S,其中V是车速,S或者是Speeding、或者是OK

输入样例1:

40

结尾无空行

输出样例1:

Speed: 40 - OK

结尾无空行

输入样例2:

75

输出样例2:

Speed: 75 - Speeding

代码:

import java.util.Scanner;
public class aa {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int a= sc.nextInt();
        if(a>60){
            System.out.println("Speed: "+a+" - Speeding");
        }else {
            System.out.println("Speed: "+a+" - OK");
        }
    }
}

7-9 用天平找小球 (10 分)

三个球A、B、C,大小形状相同且其中有一个球与其他球重量不同。要求找出这个不一样的球。

输入格式:

输入在一行中给出3个正整数,顺序对应球A、B、C的重量。

输出格式:

在一行中输出唯一的那个不一样的球。

输入样例:

1 1 2

结尾无空行

输出样例:

C

代码:

import java.util.Scanner;
public class aa {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String a =sc.nextLine();
        String b[]=a.split(" ");
        int A=Integer.parseInt(b[0]);
        int B=Integer.parseInt(b[1]);
        int C=Integer.parseInt(b[2]);
        if(A==B){
            System.out.println("C");
        }else if(A==C){
            System.out.println("B");
        }else{
            System.out.println("A");
        }
    }
}

7-10 计算工资 (15 分)

某公司员工的工资计算方法如下:一周内工作时间不超过40小时,按正常工作时间计酬;超出40小时的工作时间部分,按正常工作时间报酬的1.5倍计酬。员工按进公司时间分为新职工和老职工,进公司不少于5年的员工为老职工,5年以下的为新职工。新职工的正常工资为30元/小时,老职工的正常工资为50元/小时。请按该计酬方式计算员工的工资。

输入格式:

输入在一行中给出2个正整数,分别为某员工入职年数和周工作时间,其间以空格分隔。

输出格式:

在一行输出该员工的周薪,精确到小数点后2位。

输入样例1:

5 40

结尾无空行

输出样例1:

2000.00

结尾无空行

输入样例2:

3 50

输出样例2:

1650.00

代码:

import java.util.Scanner;
public class aa {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String a =sc.nextLine();
        String b[]=a.split(" ");
        int y=Integer.parseInt(b[0]);
        int w=Integer.parseInt(b[1]);
        if(y<5){
            if(w<40){
                System.out.printf("%.2f",(float)w*30);
            }else{
                System.out.printf("%.2f",(float)1200+(w-40)*45);
            }
        }else{
            if(w<40){
                System.out.printf("%.2f",(float)w*50);
            }else{
                System.out.printf("%.2f",(float)2000+(w-40)*75);
            }
        }
    }
}

7-11 分段计算居民水费 (10 分)

为鼓励居民节约用水,自来水公司采取按用水量阶梯式计价的办法,居民应交水费y(元)与月用水量x(吨)相关:当x不超过15吨时,y=4x/3;超过后,y=2.5x−17.5。请编写程序实现水费的计算。

输入格式:

输入在一行中给出非负实数x。

输出格式:

在一行输出应交的水费,精确到小数点后2位。

输入样例1:

12

结尾无空行

输出样例1:

16.00

结尾无空行

输入样例2:

16

输出样例2:

22.50

代码

import java.util.Scanner;
public class aa {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int a= sc.nextInt();
        if(a<15){
            System.out.printf("%.2f",(float)4*a/3);
        }else{
            System.out.printf("%.2f",(float)2.5*a-17.5);
        }
    }
}

7-12 两个数的简单计算器 (10 分)

本题要求编写一个简单计算器程序,可根据输入的运算符,对2个整数进行加、减、乘、除或求余运算。题目保证输入和输出均不超过整型范围。

输入格式:

输入在一行中依次输入操作数1、运算符、操作数2,其间以1个空格分隔。操作数的数据类型为整型,且保证除法和求余的分母非零。

输出格式:

当运算符为+-*/%时,在一行输出相应的运算结果。若输入是非法符号(即除了加、减、乘、除和求余五种运算符以外的其他符号)则输出ERROR

输入样例1:

-7 / 2

结尾无空行

输出样例1:

-3

结尾无空行

输入样例2:

3 & 6

输出样例2:

ERROR

代码:

import java.util.Scanner;
public class aa {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String a =sc.nextLine();
        String b[] = a.split(" ");
        int a1 = Integer.parseInt(b[0]);
        int a2= Integer.parseInt(b[2]);
        switch( b[1]){
            case "+":
                System.out.println(a1+a2);break;
            case "-":
                System.out.println(a1-a2);break;
            case "*":
                System.out.println(a1*a2);break;
            case "/":
                System.out.println(a1/a2);break;
            case "%":
                System.out.println(a1%a2);break;
            default:
                System.out.println("ERROR");
        }
    }
}

7-13 日K蜡烛图 (15 分)

股票价格涨跌趋势,常用蜡烛图技术中的K线图来表示,分为按日的日K线、按周的周K线、按月的月K线等。以日K线为例,每天股票价格从开盘到收盘走完一天,对应一根蜡烛小图,要表示四个价格:开盘价格Open(早上刚刚开始开盘买卖成交的第1笔价格)、收盘价格Close(下午收盘时最后一笔成交的价格)、中间的最高价High和最低价Low。

如果Close<Open,表示为“BW-Solid”(即“实心蓝白蜡烛”);如果Close>Open,表示为“R-Hollow”(即“空心红蜡烛”);如果Open等于Close,则为“R-Cross”(即“十字红蜡烛”)。如果Low比Open和Close低,称为“Lower Shadow”(即“有下影线”),如果High比Open和Close高,称为“Upper Shadow”(即“有上影线”)。请编程序,根据给定的四个价格组合,判断当日的蜡烛是一根什么样的蜡烛。

输入格式:

输入在一行中给出4个正实数,分别对应Open、High、Low、Close,其间以空格分隔。

输出格式:

在一行中输出日K蜡烛的类型。如果有上、下影线,则在类型后加上with 影线类型。如果两种影线都有,则输出with Lower Shadow and Upper Shadow

输入样例1:

5.110 5.250 5.100 5.105

结尾无空行

输出样例1:

BW-Solid with Lower Shadow and Upper Shadow

结尾无空行

输入样例2:

5.110 5.110 5.110 5.110

输出样例2:

R-Cross

输入样例3:

5.110 5.125 5.112 5.126

输出样例3:

R-Hollow

代码:

import java.util.Scanner;
public class aa {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String a = sc.nextLine();
        String b[] = a.split(" ");
        float open = Float.parseFloat(b[0]);
        float high = Float.parseFloat(b[1]);
        float low = Float.parseFloat(b[2]);
        float close = Float.parseFloat(b[3]);
        if (close < open) {
            if (low<open && low<close) {
                if(high>open && high>close){
                    System.out.println("BW-Solid with Lower Shadow and Upper Shadow");
                }else{
                    System.out.println("BW-Solid with Lower Shadow");
                }
            }else if(high>open && high>close){
                System.out.println("BW-Solid with Upper Shadow");
            }else{
                System.out.println("BW-Solid");
            }
        }
        else if(close>open){
            if (low<open && low<close) {
                if(high>open && high>close){
                    System.out.println("R-Hollow with Lower Shadow and Upper Shadow");
                }else{
                    System.out.println("R-Hollow with Lower Shadow");
                }
            }else if(high>open && high>close){
                System.out.println("R-Hollow with Upper Shadow");
            }else{
                System.out.println("R-Hollow");
            }
        }
        else{
            if (low<open && low<close) {
                if(high>open && high>close){
                    System.out.println("R-Cross with Lower Shadow and Upper Shadow");
                }else{
                    System.out.println("R-Cross with Lower Shadow");
                }
            }else if(high>open && high>close){
                System.out.println("R-Cross with Upper Shadow");
            }else{
                System.out.println("R-Cross");
            }
        }
    }
}

7-14 求整数段和 (15 分)

给定两个整数A和B,输出从A到B的所有整数以及这些数的和。

输入格式:

输入在一行中给出2个整数A和B,其中−100≤A≤B≤100,其间以空格分隔。

输出格式:

首先顺序输出从A到B的所有整数,每5个数字占一行,每个数字占5个字符宽度,向右对齐。最后在一行中按Sum = X的格式输出全部数字的和X

输入样例:

-3 8

结尾无空行

输出样例:

   -3   -2   -1    0    1
    2    3    4    5    6
    7    8
Sum = 30

结尾无空行

代码:

import java.util.Scanner;
public class aa {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String a = sc.nextLine();
        String b[] = a.split(" ");
        int A = Integer.parseInt(b[0]);
        int B = Integer.parseInt(b[1]);
        int i=0,sum=0;
        while(A<=B){
            sum+=A;
            i+=1;
            System.out.printf("%5d",A);
            A+=1;
            if(i%5==0){
                System.out.println();
                i=0;
            }
        }
        System.out.println();
        System.out.println("Sum = "+sum);
    }
}

7-15 计算圆周率 (15 分)

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

2π​=1+31​+3×52!​+3×5×73!​+⋯+3×5×7×⋯×(2n+1)n!​+⋯

输入格式:

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

输出格式:

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

输入样例:

0.01

结尾无空行

输出样例:

3.132157

结尾无空行

代码:

import java.util.Scanner;
public class aa {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        double a = sc.nextDouble();
        double sum=0;
        for(int i=0;;i++){
            if(fenzi(i)/fenmu(i)<a){
                sum+=fenzi(i)/fenmu(i);
                break;
            }else{
                sum+=fenzi(i)/fenmu(i);
            }
        }
        System.out.printf("%6f",sum*2.0);
    }

    public static double fenzi(int i) {
        double sf =1;
        if (i == 0) {
            return 1;
        }else{
            for (int j = 1; j <= i; j++) {
                sf = sf * j;
            }
        }
        return sf;
    }
    public static double fenmu(int i){
        double sm=1;
        for(int j=0;j<=i;j++){
            sm =sm*(2*j+1);
        }
        return sm;
    }
}

7-16 求符合给定条件的整数集 (15 分)

给定不超过6的正整数A,考虑从A开始的连续4个数字。请输出所有由它们组成的无重复数字的3位数。

输入格式:

输入在一行中给出A。

输出格式:

输出满足条件的的3位数,要求从小到大,每行6个整数。整数间以空格分隔,但行末不能有多余空格。

输入样例:

2

结尾无空行

输出样例:

234 235 243 245 253 254
324 325 342 345 352 354
423 425 432 435 452 453
523 524 532 534 542 543

结尾无空行

代码:

import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int a = sc.nextInt();
        int b = 0;
        for (int i = a; i <= a + 3; i++) {
            for (int j = a; j <= a + 3; j++) {
                for (int k = a; k <= a + 3; k++) {
                    if (i != j && i != k && j != k) {
                        b+=1;
                        if(b%6==0){
                            if(b==24){
                                System.out.printf("%d%d%d",i,j,k);
                                break;
                            }
                            System.out.printf("%d%d%d\n",i,j,k);
                        }else{
                            System.out.printf("%d%d%d ",i,j,k);
                        }
                    }
                }
            }
        }
    }
}

7-17 爬动的蠕虫 (15 分)

一条蠕虫长1寸,在一口深为N寸的井的底部。已知蠕虫每1分钟可以向上爬U寸,但必须休息1分钟才能接着往上爬。在休息的过程中,蠕虫又下滑了D寸。就这样,上爬和下滑重复进行。请问,蠕虫需要多长时间才能爬出井?

这里要求不足1分钟按1分钟计,并且假定只要在某次上爬过程中蠕虫的头部到达了井的顶部,那么蠕虫就完成任务了。初始时,蠕虫是趴在井底的(即高度为0)。

输入格式:

输入在一行中顺序给出3个正整数N、U、D,其中D<U,N不超过100。

输出格式:

在一行中输出蠕虫爬出井的时间,以分钟为单位。

输入样例:

12 3 1

结尾无空行

输出样例:

11

结尾无空行

代码:

import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String a =sc.nextLine();
        String b[]= a.split(" ");
        int n =  Integer.parseInt(b[0]);
        int u =  Integer.parseInt(b[1]);
        int d =  Integer.parseInt(b[2]);
        int s=0;
        for(int i=0;;){
            s+=u;
            i+=1;
            if(s>=n){
                System.out.print(i);
                break;
            }
            s-=d;
            i+=1;
        }
    }
}

7-18 二分法求多项式单根 (20 分)

二分法求函数根的原理为:如果连续函数f(x)在区间[a,b]的两个端点取值异号,即f(a)f(b)<0,则它在这个区间内至少存在1个根r,即f(r)=0。

二分法的步骤为:

  • 检查区间长度,如果小于给定阈值,则停止,输出区间中点(a+b)/2;否则
  • 如果f(a)f(b)<0,则计算中点的值f((a+b)/2);
  • 如果f((a+b)/2)正好为0,则(a+b)/2就是要求的根;否则
  • 如果f((a+b)/2)与f(a)同号,则说明根在区间[(a+b)/2,b],令a=(a+b)/2,重复循环;
  • 如果f((a+b)/2)与f(b)同号,则说明根在区间[a,(a+b)/2],令b=(a+b)/2,重复循环。

本题目要求编写程序,计算给定3阶多项式f(x)=a3​x3+a2​x2+a1​x+a0​在给定区间[a,b]内的根。

输入格式:

输入在第1行中顺序给出多项式的4个系数a3​、a2​、a1​、a0​,在第2行中顺序给出区间端点a和b。题目保证多项式在给定区间内存在唯一单根。

输出格式:

在一行中输出该多项式在该区间内的根,精确到小数点后2位。

输入样例:

3 -1 -3 1
-0.5 0.5

结尾无空行

输出样例:

0.33

结尾无空行

代码:


import java.util.Scanner;
public class Main{
	static float[] A=new float[4];
//	static float[] A={1,-3,-1,3};
	public static void main(String[] args) {
		Scanner sc=new Scanner(System.in);
		for(int i=3;i>=0;i--){
			A[i]=sc.nextFloat();
		}
		float a=sc.nextFloat();
		float b=sc.nextFloat();
		//保留两位有效小数
		System.out.println(new java.text.DecimalFormat("0.00").format(solve(a,b)));
		}
 
	
	public static float solve(float a,float b) {
		float x=(a+b)/2;
		float res=0;
		//中点的f值很小但不一定是根 
		if(b-a<=0.01){//注意:如果设置:b-a<=0,答案错误
			return x;
		}
		//注意:考虑区间端点是根的情况
		if(f(a)==0){
			return a;
		} 
		if(f(b)==0){
			return b;
		} 
		
		if(f(a)*f(b)<0){
			if(f(x)==0){
				res=x;
			} else if((f(x)*f(a)>0))//同号
				return solve(x,b);
			else if((f(x)*f(b)>0))
				return solve(a,x);
		}
		return res;
	}
	
	public static float f(float x) {
		return A[3]*x*x*x+A[2]*x*x+A[1]*x+A[0];
	}	
}

————————————————
版权声明:本文为CSDN博主「ThisAmy」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/ThisAmy/article/details/88375778

7-19 支票面额 (15 分)

一个采购员去银行兑换一张y元f分的支票,结果出纳员错给了f元y分。采购员用去了n分之后才发觉有错,于是清点了余额尚有2y元2f分,问该支票面额是多少?

输入格式:

输入在一行中给出小于100的正整数n。

输出格式:

在一行中按格式y.f输出该支票的原始面额。如果无解,则输出No Solution

输入样例1:

23

结尾无空行

输出样例1:

25.51

结尾无空行

输入样例2:

22

输出样例2:

No Solution

代码:

import java.util.Scanner;
public class Main{
    public static void main(String args[]){
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int i=0;
        for(int y=0;y<100;y++){
            for(int f=0;f<100;f++){
                if(98*f-199*y==n){//自己列个不等式可以得出
                    i+=1;
                    System.out.print(y+"."+f);
                }
            }
        }
        if(i==0){
            System.out.print("No Solution");
        }
        }
}

7-20 打印九九口诀表 (15 分)

下面是一个完整的下三角九九口诀表:

1*1=1   
1*2=2   2*2=4   
1*3=3   2*3=6   3*3=9   
1*4=4   2*4=8   3*4=12  4*4=16  
1*5=5   2*5=10  3*5=15  4*5=20  5*5=25  
1*6=6   2*6=12  3*6=18  4*6=24  5*6=30  6*6=36  
1*7=7   2*7=14  3*7=21  4*7=28  5*7=35  6*7=42  7*7=49  
1*8=8   2*8=16  3*8=24  4*8=32  5*8=40  6*8=48  7*8=56  8*8=64  
1*9=9   2*9=18  3*9=27  4*9=36  5*9=45  6*9=54  7*9=63  8*9=72  9*9=81  

本题要求对任意给定的一位正整数N,输出从1*1N*N的部分口诀表。

输入格式:

输入在一行中给出一个正整数N(1≤N≤9)。

输出格式:

输出下三角N*N部分口诀表,其中等号右边数字占4位、左对齐。

输入样例:

4

结尾无空行

输出样例:

1*1=1   
1*2=2   2*2=4   
1*3=3   2*3=6   3*3=9   
1*4=4   2*4=8   3*4=12  4*4=16  

结尾无空行

代码:

import java.util.Scanner;
public class Main{
    public static void main(String args[]){
        Scanner sc =new Scanner(System.in);
        int n = sc.nextInt();
        for(int i =1;i<=n;i++){
            for(int j=1;j<=i;j++){
                if(i==j && i!=n){
                    System.out.printf("%d*%d=%-4d\n",j,i,i*j);
                }else if(i==j&& i==n){
                    System.out.printf("%d*%d=%-4d",j,i,i*j);
                }else {
                    System.out.printf("%d*%d=%-4d",j,i,i*j);
                }
            }
        }
    }
}

7-21 求特殊方程的正整数解 (15 分)

本题要求对任意给定的正整数N,求方程X2+Y2=N的全部正整数解。

输入格式:

输入在一行中给出正整数N(≤10000)。

输出格式:

输出方程X2+Y2=N的全部正整数解,其中X≤Y。每组解占1行,两数字间以1空格分隔,按X的递增顺序输出。如果没有解,则输出No Solution

输入样例1:

884

结尾无空行

输出样例1:

10 28
20 22

结尾无空行

输入样例2:

11

输出样例2:

No Solution

代码:

import java.util.ArrayList;
import java.util.Scanner;
import static java.lang.Math.pow;
public class Main{
    public static void main(String args[]){
        Scanner sc =new Scanner(System.in);
        int n = sc.nextInt();
        boolean s=false;
        int a[] =new int[50];
        int b[] =new int[50];
        int i=0;
        for(int x=1;x<=100;x++){
            for(int y=1;y<=100;y++){
                if(pow(x,2)+pow(y,2)==n){
                    if(x<=y){
                        s=true;
                        a[i]=x;b[i]=y;
                        i+=1;
                    }else{
                        break;
                    }
                }
            }
        }
        for(int j=0;j<i;j++){
            if(i==j){
                System.out.printf("%d %d",a[j],b[j]);
            }else {
                System.out.printf("%d %d\n",a[j],b[j]);
            }
        }
        if(!s){
            System.out.println("No Solution");
        }
    }
}

7-22 龟兔赛跑 (20 分)

乌龟与兔子进行赛跑,跑场是一个矩型跑道,跑道边可以随地进行休息。乌龟每分钟可以前进3米,兔子每分钟前进9米;兔子嫌乌龟跑得慢,觉得肯定能跑赢乌龟,于是,每跑10分钟回头看一下乌龟,若发现自己超过乌龟,就在路边休息,每次休息30分钟,否则继续跑10分钟;而乌龟非常努力,一直跑,不休息。假定乌龟与兔子在同一起点同一时刻开始起跑,请问T分钟后乌龟和兔子谁跑得快?

输入格式:

输入在一行中给出比赛时间T(分钟)。

输出格式:

在一行中输出比赛的结果:乌龟赢输出@_@,兔子赢输出^_^,平局则输出-_-;后跟1空格,再输出胜利者跑完的距离。

输入样例:

242

结尾无空行

输出样例:

@_@ 726

结尾无空行

代码:

import java.util.Scanner;
public class Main{
    public static void main(String args[]){
        Scanner sc =new Scanner(System.in);
        int n = sc.nextInt();
        int gs=0,ts=0;//wg=3,tz=9
        for(int i=0;i<n;i++){
            if((i%10)==0 && ts>=gs && i!=0){
                for(int j=0;j<30;j++){
                    if(i<n){
                        i+=1;
                        gs+=3;
                    }else{
                        break;
                    }
                }
            }
            if(i<n){
                gs+=3;
                ts+=9;
            }
        }
        if(ts>gs){
            System.out.printf("^_^ %d",ts);
        }else if(ts==gs){
            System.out.printf("-_- %d",ts);
        }else {
            System.out.printf("@_@ %d",gs);
        }
    }
}

7-28 猴子选大王 (20 分)

一群猴子要选新猴王。新猴王的选择方法是:让N只候选猴子围成一圈,从某位置起顺序编号为1~N号。从第1号开始报数,每轮从1报到3,凡报到3的猴子即退出圈子,接着又从紧邻的下一只猴子开始同样的报数。如此不断循环,最后剩下的一只猴子就选为猴王。请问是原来第几号猴子当选猴王?

输入格式:

输入在一行中给一个正整数N(≤1000)。

输出格式:

在一行中输出当选猴王的编号。

输入样例:

11

结尾无空行

输出样例:

7

结尾无空行

import java.util.Scanner;
public class aa {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n =sc.nextInt();
        int m=3,count=1,index=1;
        int a[] = new int[1000];
        for(int j=1;j<=n;j++){
            a[j-1]=j;
        }
        while(count<n){
            for(int i=0;i<n;i++){
                if(a[i]!=0){
                    if(index%3==0){
                        a[i]=0;
                        count++;
                        index=1;
                    }else{
                        index++;
                    }
                }
            }
        }
        for(int j=0;j<n;j++){
            if(a[j] !=0){
                System.out.println(a[j]);
                break;
            }
        }
    }
}

7-31 字符串循环左移 (20 分)

输入一个字符串和一个非负整数N,要求将字符串循环左移N次。

输入格式:

输入在第1行中给出一个不超过100个字符长度的、以回车结束的非空字符串;第2行给出非负整数N。

输出格式:

在一行中输出循环左移N次后的字符串。

输入样例:

Hello World!
2

结尾无空行

输出样例:

llo World!He

结尾无空行

import java.util.Scanner;
public class aa {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String a = sc.nextLine();
        int b =sc.nextInt();
        b= b%a.length();
        for(int i=b;i<a.length();i++){
            System.out.print(a.charAt(i));
        }
        for(int j =0;j<b;j++){
            System.out.print(a.charAt(j));
        }
        }
}

7-32 说反话-加强版 (20 分)

给定一句英语,要求你编写程序,将句中所有单词的顺序颠倒输出。

输入格式:

测试输入包含一个测试用例,在一行内给出总长度不超过500 000的字符串。字符串由若干单词和若干空格组成,其中单词是由英文字母(大小写有区分)组成的字符串,单词之间用若干个空格分开。

输出格式:

每个测试用例的输出占一行,输出倒序后的句子,并且保证单词间只有1个空格。

输入样例:

Hello World   Here I Come

结尾无空行

输出样例:

Come I Here World Hello

结尾无空行

import java.util.Scanner;
public class aa {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String a = sc.nextLine();
        String b[] = a.trim().split("\\s+");
        for(int i=b.length-1;i>=0;i--){
            System.out.print(b[i]+" ");
        }
        }
}

7-34 通讯录的录入与显示 (10 分)

通讯录中的一条记录包含下述基本信息:朋友的姓名、出生日期、性别、固定电话号码、移动电话号码。 本题要求编写程序,录入N条记录,并且根据要求显示任意某条记录。

输入格式:

输入在第一行给出正整数N(≤10);随后N行,每行按照格式姓名 生日 性别 固话 手机给出一条记录。其中姓名是不超过10个字符、不包含空格的非空字符串;生日按yyyy/mm/dd的格式给出年月日;性别用M表示“男”、F表示“女”;固话手机均为不超过15位的连续数字,前面有可能出现+

在通讯录记录输入完成后,最后一行给出正整数K,并且随后给出K个整数,表示要查询的记录编号(从0到N−1顺序编号)。数字间以空格分隔。

输出格式:

对每一条要查询的记录编号,在一行中按照姓名 固话 手机 性别 生日的格式输出该记录。若要查询的记录不存在,则输出Not Found

输入样例:

3
Chris 1984/03/10 F +86181779452 13707010007
LaoLao 1967/11/30 F 057187951100 +8618618623333
QiaoLin 1980/01/01 M 84172333 10086
2 1 7

结尾无空行

输出样例:

LaoLao 057187951100 +8618618623333 F 1967/11/30
Not Found

结尾无空行

import java.util.Scanner;
public class aa {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String w = sc.nextLine();
        int a = Integer.parseInt(w);
        String q[][] = new String[a][5];
        for(int j=0;j<a;j++){
            String c = sc.nextLine();
            String b[] = c.split(" ");
            for(int i=0;i<5;i++){
                q[j][i]=b[i];
            }
        }//0342
        String  c= sc.nextLine();
        String y[]=c.split(" ");
        int d = Integer.parseInt(y[0]);
        for(int i=0;i<d;i++){
            int e= Integer.parseInt(y[i+1]);
            if(e<a){
                System.out.println(q[e][0]+" "+q[e][3]+" "+q[e][4]+" "+q[e][2]+" "+q[e][1]);
            }else{
                System.out.println("Not Found");
            }
        }
        }
}

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
PTA浙大版《数据结构(第2版)》题目集PTA浙大版《数据结构(第2版)》题目集PTA浙大版《数据结构(第2版)》题目集PTA浙大版《数据结构(第2版)》题目集PTA浙大版《数据结构(第2版)》题目集PTA浙大版《数据结构(第2版)》题目集PTA浙大版《数据结构(第2版)》题目集PTA浙大版《数据结构(第2版)》题目集PTA浙大版《数据结构(第2版)》题目集PTA浙大版《数据结构(第2版)》题目集PTA浙大版《数据结构(第2版)》题目集PTA浙大版《数据结构(第2版)》题目集PTA浙大版《数据结构(第2版)》题目集PTA浙大版《数据结构(第2版)》题目集PTA浙大版《数据结构(第2版)》题目集PTA浙大版《数据结构(第2版)》题目集PTA浙大版《数据结构(第2版)》题目集PTA浙大版《数据结构(第2版)》题目集PTA浙大版《数据结构(第2版)》题目集PTA浙大版《数据结构(第2版)》题目集PTA浙大版《数据结构(第2版)》题目集PTA浙大版《数据结构(第2版)》题目集PTA浙大版《数据结构(第2版)》题目集PTA浙大版《数据结构(第2版)》题目集PTA浙大版《数据结构(第2版)》题目集PTA浙大版《数据结构(第2版)》题目集PTA浙大版《数据结构(第2版)》题目集PTA浙大版《数据结构(第2版)》题目集PTA浙大版《数据结构(第2版)》题目集PTA浙大版《数据结构(第2版)》题目集PTA浙大版《数据结构(第2版)》题目集PTA浙大版《数据结构(第2版)》题目集PTA浙大版《数据结构(第2版)》题目集PTA浙大版《数据结构(第2版)》题目集PTA浙大版《数据结构(第2版)》题目集PTA浙大版《数据结构(第2版)》题目集PTA浙大版《数据结构(第2版)》题目集PTA浙大版《数据结构(第2版)》题目集PTA浙大版《数据结构(第2版)》题目集PTA浙大版《数据结构(第2版)》题目集PTA浙大版《数据结构(第2版)》题目集PTA浙大版《数据结构(第2版)》题目集PTA浙大版《数据结构(第2版)》题目集PTA浙大版《数据结构(第2版)》题目集PTA浙大版《数据结构(第2版)》题目集PTA浙大版《数据结构(第2版)》题目集PTA浙大版《数据结构(第2版)》题目集PTA浙大版《数据结构(第2版)》题目集PTA浙大版《数据结构(第2版)》题目集PTA浙大版《数据结构(第2版)》题目集PTA浙大版《数据结构(第2版)》题目集PTA浙大版《数据结构(第2版)》题目集PTA浙大版《数据结构(第2版)》题目集PTA浙大版《数据结构(第2版)》题目集PTA浙大版《数据结构(第2版)》题目集PTA浙大版《数据结构(第2版)》题目集PTA浙大版《数据结构(第2版)》题目集PTA浙大版《数据结构(第2版)》题目集PTA浙大版《数据结构(第2版)》题目集PTA浙大版《数据结构(第2版)》题目集PTA浙大版《数据结构(第2版)》题目集PTA浙大版《数据结构(第2版)》题目集PTA浙大版《数据结构(第2版)》题目集PTA浙大版《数据结构(第2版)》题目集PTA浙大版《数据结构(第2版)》题目集PTA浙大版《数据结构(第2版)》题目集PTA浙大版《数据结构(第2版)》题目集PTA浙大版《数据结构(第2版)》题目集PTA浙大版《数据结构(第2版)》题目集PTA浙大版《数据结构(第2版)》题目集PTA浙大版《数据结构(第2版)》题目集PTA浙大版《数据结构(第2版)》题目集PTA浙大版《数据结构(第2版)》题目集PTA浙大版《数据结构(第2版)》题目集PTA浙大版《数据结构(第2版)》题目集PTA浙大版《数据结构(第2版)》题目集PTA浙大版《数据结构(第2版)》题目集PTA浙大版《数据结构(第2版)》题目集PTA浙大版《数据结构(第2版)》题目集PTA浙大版《数据结构(第2版)》题目集PTA浙大版《数据结构(第2版)》题目集PTA浙大版《数据结构(第2版)》题目集PTA浙大版《数据结构(第2版)》题目集PTA浙大版《数据结构(第2版)》题目集PTA浙大版《数据结构(第2版)》题目集PTA浙大版《数据结构(第2版)》题目集PTA浙大版《数据结构(第2版)》题目集PTA浙大版《数据结构(第2版)》题目集PTA浙大版《数据结构(第2版)》题目集PTA浙大版《数据结构(第2版)》题目集PTA浙大版《数据结构(第2版)》题目集
PTA-数据结构与算法题目集 PTA-数据结构与算法题目集 PTA-数据结构与算法题目集 PTA-数据结构与算法题目集 PTA-数据结构与算法题目集 PTA-数据结构与算法题目集 PTA-数据结构与算法题目集 PTA-数据结构与算法题目集 PTA-数据结构与算法题目集 PTA-数据结构与算法题目集 PTA-数据结构与算法题目集 PTA-数据结构与算法题目集 PTA-数据结构与算法题目集 PTA-数据结构与算法题目集 PTA-数据结构与算法题目集 PTA-数据结构与算法题目集 PTA-数据结构与算法题目集 PTA-数据结构与算法题目集 PTA-数据结构与算法题目集 PTA-数据结构与算法题目集 PTA-数据结构与算法题目集 PTA-数据结构与算法题目集 PTA-数据结构与算法题目集 PTA-数据结构与算法题目集 PTA-数据结构与算法题目集 PTA-数据结构与算法题目集 PTA-数据结构与算法题目集 PTA-数据结构与算法题目集 PTA-数据结构与算法题目集 PTA-数据结构与算法题目集 PTA-数据结构与算法题目集 PTA-数据结构与算法题目集 PTA-数据结构与算法题目集 PTA-数据结构与算法题目集 PTA-数据结构与算法题目集 PTA-数据结构与算法题目集 PTA-数据结构与算法题目集 PTA-数据结构与算法题目集 PTA-数据结构与算法题目集 PTA-数据结构与算法题目集 PTA-数据结构与算法题目集 PTA-数据结构与算法题目集 PTA-数据结构与算法题目集 PTA-数据结构与算法题目集 PTA-数据结构与算法题目集 PTA-数据结构与算法题目集 PTA-数据结构与算法题目集 PTA-数据结构与算法题目集 PTA-数据结构与算法题目集 PTA-数据结构与算法题目集 PTA-数据结构与算法题目集 PTA-数据结构与算法题目集 PTA-数据结构与算法题目集 PTA-数据结构与算法题目集 PTA-数据结构与算法题目集 PTA-数据结构与算法题目集 PTA-数据结构与算法题目集 PTA-数据结构与算法题目集 PTA-数据结构与算法题目集 PTA-数据结构与算法题目集 PTA-数据结构与算法题目集 PTA-数据结构与算法题目集 PTA-数据结构与算法题目集 PTA-数据结构与算法题目集 PTA-数据结构与算法题目集 PTA-数据结构与算法题目集 PTA-数据结构与算法题目集 PTA-数据结构与算法题目集 PTA-数据结构与算法题目集 PTA-数据结构与算法题目集 PTA-数据结构与算法题目集 PTA-数据结构与算法题目集 PTA-数据结构与算法题目集 PTA-数据结构与算法题目集 PTA-数据结构与算法题目集 PTA-数据结构与算法题目集 PTA-数据结构与算法题目集 PTA-数据结构与算法题目集 PTA-数据结构与算法题目集 PTA-数据结构与算法题目集 PTA-数据结构与算法题目集 PTA-数据结构与算法题目集 PTA-数据结构与算法题目集 PTA-数据结构与算法题目集 PTA-数据结构与算法题目集 PTA-数据结构与算法题目集 PTA-数据结构与算法题目集 PTA-数据结构与算法题目集 PTA-数据结构与算法题目集 PTA-数据结构与算法题目集 PTA-数据结构与算法题目集 PTA-数据结构与算法题目集 PTA-数据结构与算法题目集 PTA-数据结构与算法题目集 PTA-数据结构与算法题目集 PTA-数据结构与算法题目集 PTA-数据结构与算法题目集 PTA-数据结构与算法题目集 PTA-数据结构与算法题目集 PTA-数据结构与算法题目集 PTA-数据结构与算法题目集 PTA-数据结构与算法题目集 PTA-数据结构与算法题目集 PTA-数据结构与算法题目集 PTA-数据结构与算法题目集 PTA-数据结构与算法题目集 PTA-数据结构与算法题目集 PTA-数据结构与算法题目集 PTA-数据结构与算法题目集 PTA-数据结构与算法题目集 PTA-数据结构与算法题目集 PTA-数据结构与算法题目集 PTA-数据结构与算法题目集 PTA-数据结构与算法题目集 PTA-数据结构与算法题目集 PTA-数据结构与算法题目集 PTA-数据结构与算法题目集 PTA-数据结构与算法题目集 PTA-数据结构与算法题目集 PTA-数据结构与算法题目集 PTA-数据结构与算法题目集 PTA-数据结构与算法题目集 PTA-数据结构与算法题目集 PTA-数据结构与算法题目集 PTA-数据结构与算法题目集 PTA-数据结构与算法题目集 PTA-数据结构与算法题目集 PTA-数据结构与算法题目集 PTA-数据结构与算法题目集 PTA-数据结构与算法题目集 PTA-数据结构与算法题目集 PTA-数据结构与算法题目集 PTA-数据结构与算法题目集
PTA_基础编程答案_整章 包括但不限于如下 7-1 厘米换算英尺英寸 15 27785 103313 0.27 7-2 然后是几点 15 20063 78572 0.26 7-3 逆序的三位数 10 24732 62644 0.39 7-4 BCD解密 10 14066 23357 0.60 7-5 表格输出 5 15169 36439 0.42 7-6 混合类型数据格式化输入 5 15719 36076 0.44 7-7 12-24小时制 15 14687 51855 0.28 7-8 超速判断 10 15328 39238 0.39 7-9 用天平找小球 10 15145 33252 0.46 7-10 计算工资 15 14241 35238 0.40 7-11 分段计算居民水费 10 12907 35261 0.37 7-12 个数简单计算器 10 12912 33359 0.39 7-13 日K蜡烛图 15 9280 34024 0.27 7-14 求整数段和 15 11461 55664 0.21 7-15 计算圆周率 15 9826 33135 0.30 7-16 求符合给定条件的整数集 15 8986 21898 0.41 7-17 爬动的蠕虫 15 9739 24881 0.39 7-18 二分法求多项式单根 20 7282 31752 0.23 7-19 支票面额 15 7375 21837 0.34 7-20 打印九九口诀表 15 10325 35138 0.29 7-21 求特殊方程的正整数解 15 7799 22600 0.35 7-22 龟兔赛跑 20 7446 29142 0.26 7-23 币值转换 20 4333 18467 0.23 7-24 约分最简分式 15 6728 15335 0.44 7-25 念数字 15 6724 20180 0.33 7-26 单词长度 15 5648 37409 0.15 7-27 冒泡法排序 20 7255 24045 0.30 7-28 猴子选大王 20 6144 13327 0.46 7-29 删除字符串中的子串 20 4798 15074 0.32 7-30 字符串的冒泡排序 20 4752 14741 0.32 7-31 字符串循环左移 20 4527 13605 0.33 7-32 说反话-加强版 20 4030 25470 0.16 7-33 有理数加法 15 4476 10862 0.41 7-34 通讯录的录入与显示 10 4323 19524 0.22 7-35 有理数均值 20 3281 17202 0.19 7-36 复数四则运算 15 2530 10103 0.25 7-37 整数分解为若干项之和 20 2437 4673 0.52 7-38 数列求和-加强版 20 4692 35190 0.13 当前显示1 - 38项,共38项

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值