PTA数字校验与设计一个银行流水账号类

6-3 数字校验

分数 10

全屏浏览

切换布局

作者 殷伟凤

单位 浙江传媒学院

本题要求实现一个函数,校验一个13位正整数号码是否正确。13位号码的最后一位是校验码。通过对前12位数字的加减乘除运算得到一个一位数字,如果和第13位数字相同,表示正确的号码。

1、从最右边第12位开始间隔一位个位数相加,然后乘7。

2、剩下的其余数字相加,然后乘2 。

3、再把两者加起来,除以10取余数

4、和第13位相校验,匹配就正确,不匹配则错误。

裁判测试程序样例:

解释import java.util.Scanner;

public class Main {

    /* 请在这里填写答案 */

    public static void main(String[] args) {

                    Scanner in = new Scanner(System.in);

                    long code = in.nextLong();

 

                    boolean checksumResult = checksum(code);

                    if (checksumResult)

                         System.out.println("The checksum of "+code+" is "+ "correct");

                    else

                            System.out.println("The checksum of "+code+" is "+ "incorrect");

            }

}

 

输入样例1:

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

1234567890126

输出样例1:

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

The checksum of 1234567890126 is correct

输入样例2:

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

2345677654329

输出样例2:

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

The checksum of 2345677654329 is incorrect

代码长度限制

16 KB

时间限制

400 ms

内存限制

64 MB

 

import java.util.Scanner;

public class Main {

    /* 请在这里填写答案 */

    public static boolean checksum(long a){

             int d=(int)(a%10);

              int b=0;

              int c=0;

              int e=0;

              for(int i=12;i>0;i--){

                  e=(int)(a%10);

          a/=10;

          if((i % 2) != 0)

          {

              c+=e;

          }

           else {

               b+=e;

          }

 

      }

      c*=2;b*=7;

      int sum=(c+b)/10%10;

      if(sum==d){

          return true;

 

      }

      return false;

    }

    public static void main(String[] args) {

        Scanner in = new Scanner(System.in);

        long code = in.nextLong();

 

        boolean checksumResult = checksum(code);

        if (checksumResult)

            System.out.println("The checksum of "+code+" is "+ "correct");

        else

            System.out.println("The checksum of "+code+" is "+ "incorrect");

    }

}

5edbea1839a7404b81703fc9dc6ec8f1.png

 

b9a65b4478bc4dcbabf6e5fe5350e7ba.png

7-1 设计一个银行流水账号类

分数 20

全屏浏览

切换布局

作者 曹记东

单位 陕西理工大学

设计一个BankAccount类,这个类包括:

(1)一个int型的balance,表示账户余额。

(2)一个无参构造方法,将账户余额初始化为0。

(3)一个带一个参数的构造方法,将账户余额初始化为输入的参数。

(4)一个getBlance()方法,返回账户余额。

(5)一个withdraw()方法:带一个amount参数,表示从账户余额中提取amount指定的款额,并返回账户余额;

若账户余额不足,则输出相应的提示信息。

(6)一个deposit()方法:带一个amount参数,表示将amount指定的款额存储到该银行账户上。

设计一个Main类进行测试,分别输入账户余额、提取额度以及存款额度,并分别输出账户余额。

输入格式:

依次输入账户余额、提取额度、存款额度,所有数据大于等于0。

输出格式:

依次输出初始账户余额、提取amount额度后的账户余额、存入amount后的账户余额。

输入样例1:

700

500

30

输出样例1:

账户的初始余额是:700

取款后,账户的余额是:200

存款后,账户的余额是:230

输入样例2:

300

500

20

输出样例2:

账户余额不足

账户的初始余额是:300

输入样例3:

-100

50

20

输出样例3:

输入的数据不能为负数

代码长度限制

16 KB

时间限制

400 ms

内存限制

64 MB

栈限制

8192 KB

import java.util.Scanner;

class BankAccout {

    private int balance;

 

    public BankAccout() {

 

    }

 

    public BankAccout(int balance) {

 

        this.balance = balance;

    }

 

    public int getBalance() {

        return balance;

    }

 

    public void setBalance(int balance) {

        this.balance = balance;

    }

 

    public int withdraw(int amount) {

        if ((balance - amount) <= 0) {

            System.out.println("账户余额不足");

            return 0;

        }

        balance = balance - amount;

        return balance;

    }

 

    public int deposit(int amount) {

        balance = balance + amount;

        return balance;

    }

 

}

 

public class Main {

    public static void main(String[] args) {

       Scanner scanner = new Scanner(System.in);

               int a = scanner.nextInt();

               int b=scanner.nextInt();

               int c=scanner.nextInt();

               if(a<0){

                   System.out.println("输入的数据不能为负数");

                   return;

               }

               BankAccout bankAccout = new BankAccout(a);

               if(bankAccout.withdraw(b)==0){

                   System.out.println("账户的初始余额是:"+bankAccout.getBalance());

               }

               else {

                   System.out.println("账户的初始余额是:"+a);

                   System.out.println("取款后,账户的余额是:"+bankAccout.getBalance());

                   System.out.println("存款后,账户的余额是:"+bankAccout.deposit(c));

               }

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值