第二周编程题
1时间换算(5分)
题目内容:

UTC是世界协调时,BJT是北京时间,UTC时间相当于BJT减去8。现在,你的程序要读入一个整数,表示BJT的时和分。整数的个位和十位表示分,百位和千位表示小时。如果小时小于10,则没有千位部分;如果小时是0,则没有百位部分;如果分小于10分,需要保留十位上的0。如1124表示11点24分,而905表示9点5分,36表示0点36分,7表示0点7分。

有效的输入范围是0到2359,即你的程序不可能从测试服务器读到0到2359以外的输入数据。

你的程序要输出这个时间对应的UTC时间,输出的格式和输入的相同,即输出一个整数,表示UTC的时和分。整数的个位和十位表示分,百位和千位表示小时。如果小时小于10,则没有千位部分;如果小时是0,则没有百位部分;如果分小于10分,需要保留十位上的0。

提醒:要小心跨日的换算。

输入格式:

一个整数,表示BJT的时和分。整数的个位和十位表示分,百位和千位表示小时。如果小时小于10,则没有千位部分;如果小时是0,则没有百位部分;如果小时不是0而且分小于10分,需要保留十位上的0。

输出格式:

一个整数,表示UTC的时和分。整数的个位和十位表示分,百位和千位表示小时。如果小时小于10,则没有千位部分;如果小时是0,则没有百位部分;如果小时不是0而且分小于10分,需要保留十位上的0。

输入样例:
933

输出样例:
133

时间限制:500ms内存限制:32000kb

import java.util.Scanner;

public class Timeconversion {
    public static void main(String[] args) {
            int UTC = 0 ;
            int BJT ;
        Scanner input = new Scanner(System.in);
        BJT = input.nextInt();
        if (BJT >= 0 && BJT <= 2359) {
            //四位数
            if ( BJT >1000)
            {
                if ( BJT % 100 >= 8) {
                    UTC = BJT - 8 ;
                }else {
                    UTC =((BJT/100 ) * 100 ) + (60 + ((BJT%100) - 8));
                }
            }
            //三位数
            else if ( BJT < 1000 && BJT >= 0  )
            {
                if ( BJT / 100 != 0)
                {
                    if ( BJT % 100 >= 8 )
                    {
                        UTC = BJT -8;
                    }
                    else if (BJT % 100 < 8)
                    {
                        //(923-((int)(1000.0/923)*100)),(BJT - ((int)(1000.0 / BJT) * 100)) %100
                        UTC = (BJT/100-1)*100 + 60 + BJT%100 -8 ;
                    }
                }
                else if ( BJT / 100 == 0)
                {
                    if ( BJT  >= 8 )
                    {
                        UTC = BJT - 8;
                    }
                    else if ( BJT  < 8 )
                    {
                        UTC = 2300 + (60 + (BJT-8));
                    }

                }
            }
        }
        if ( UTC >= 1000)
        {
            System.out.println(UTC);
        }
        else if (UTC < 1000 && UTC >= 100)
        {
            System.out.println("0" + UTC);
        }
        else if ( UTC < 100 && UTC>= 10 )
        {
            System.out.println("00" + UTC);
        }
        else
        {
            System.out.println("000" + UTC);
        }



    }
}

2信号报告(5分)
题目内容:

无线电台的RS制信号报告是由三两个部分组成的:

R(Readability) 信号可辨度即清晰度.

S(Strength) 信号强度即大小.

其中R位于报告第一位,共分5级,用1—5数字表示.

1---Unreadable

2---Barely readable, occasional words distinguishable

3---Readable with considerable difficulty

4---Readable with practically no difficulty

5---Perfectly readable

报告第二位是S,共分九个级别,用1—9中的一位数字表示

1---Faint signals, barely perceptible

2---Very weak signals

3---Weak signals

4---Fair signals

5---Fairly good signals

6---Good signals

7---Moderately strong signals

8---Strong signals

9---Extremely strong signals

现在,你的程序要读入一个信号报告的数字,然后输出对应的含义。如读到59,则输出:

Extremely strong signals, perfectly readable.

输入格式:

一个整数,信号报告。整数的十位部分表示可辨度,个位部分表示强度。输入的整数范围是[11,59]内有效的数字,这个范围外的数字不可能出现在测试数据中。

输出格式:

一句话,表示这个信号报告的意义。按照题目中的文字,先输出表示强度的文字,跟上逗号和空格,然后是表示可辨度的文字,跟上句号。注意可辨度的句子的第一个字母是小写的。注意这里的标点符号都是英文的。

输入样例:
33

输出样例:

Weak signals, readable with considerable difficulty.

时间限制:500ms内存限制:32000kb

import java.util.Scanner;

public class SignalRepot {
    public static void main(String[] args) {
        int R;
        int S;
        String Rout = "";
        String Sout = "";
        int num ;
        Scanner input = new Scanner(System.in);
        num = input.nextInt();
        if (num>10&&num<60){
            R = num/10 ;
            switch ( R )
            {
                case 1: Rout = "unreadable";break;
                case 2: Rout = "barely readable, occasional words distinguishable";break;
                case 3: Rout = "readable with considerable difficulty";break;
                case 4: Rout = "readable with practically no difficulty";break;
                case 5: Rout = "perfectly readable";break;
            }
            S = num % 10 ;
            switch ( S )
            {
                case 1: Sout = "Faint signals, barely perceptible";break;
                case 2: Sout = "Very weak signals";break;
                case 3: Sout = "Weak signals";break;
                case 4: Sout = "Fair signals";break;
                case 5: Sout = "Fairly good signals";break;
                case 6: Sout = "Good signals";break;
                case 7: Sout = "Moderately strong signals";break;
                case 8: Sout = "Strong signals";break;
                case 9: Sout = "Extremely strong signals";break;
            }
            System.out.println(Sout+", "+Rout);
        }


    }
}