1. 程式人生 > >[Java][MOOC]《Java基礎+進階》-浙江大學

[Java][MOOC]《Java基礎+進階》-浙江大學

基礎篇:

1.溫度轉換

題目內容:
寫一個將華氏溫度轉換成攝氏溫度的程式,轉換的公式是:
°F = (9/5)*°C + 32
其中C表示攝氏溫度,F表示華氏溫度。
程式的輸入是一個整數,表示華氏溫度。輸出對應的攝氏溫度,也是一個整數。
提示,為了把計算結果的浮點數轉換成整數,需要使用下面的表示式:
(int)x;
其中x是要轉換的那個浮點數。

注意:除了題目要求的輸出,不能輸出任何其他內容,比如輸入時的提示,輸出時的說明等等都不能。這道題目要求轉換後的數字,程式就只能輸出這個數字,除此之外任何內容都不能輸出。

輸入格式:
一個整數。

輸出格式:
一個整數。

輸入樣例:
100

輸出樣例:
37

時間限制:500ms
記憶體限制:32000kb

import java.util.Scanner;

public class TempChange{
	
	public static void main(String[] args){
		int f;
		double c;
		Scanner in = new Scanner(System.in);
		f = in.nextInt();
		c = (5.0 / 9) * (f - 32);
		System.out.println((int)c);
		in.close();
	}
}

2.時間換算

題目內容:
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 TimeStamp {  
  
	public
static void main(String[] args) { Scanner in = new Scanner(System.in); int bjt; int g, s; bjt = in.nextInt(); g = bjt % 10; s = bjt % 100 / 10; bjt = bjt / 100; if(bjt < 8){ bjt = (bjt + 24 - 8); System.out.print(bjt); System.out.print(s); System.out.println(g); } else if(bjt == 8) { if(s != 0) System.out.print(s); System.out.println(g); } else if(bjt > 8){ System.out.print(bjt - 8); System.out.print(s); System.out.println(g); } } }

3.訊號報告

題目內容:
無線電臺的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 ReadabilityStrength {

	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		int rs = in.nextInt();
		int rs1 = rs / 10;
		int rs2 = rs % 10;
		switch (rs2) {
		case 1:
			System.out.print("Faint signals, barely perceptible");
			break;
		case 2:
			System.out.print("Very weak signals");
			break;
		case 3:
			System.out.print("Weak signals");
			break;
		case 4:
			System.out.print("Fair signals");
			break;
		case 5:
			System.out.print("Fairly good signals");
			break;
		case 6:
			System.out.print("Good signals");
			break;
		case 7:
			System.out.print("Moderately strong signals");
			break;
		case 8:
			System.out.print("Strong signals");
			break;
		case 9:
			System.out.print("Extremely strong signals");
			break;
		}
		System.out.print(", ");
		switch(rs1) {
		case 1:
			System.out.print("unreadable");
			break;
		case 2:
			System.out.print("barely readable, occasional words distinguishable");
			break;
		case 3:
			System.out.print("readable with considerable difficulty");
			break;
		case 4:
			System.out.print("readable with practically no difficulty");
			break;
		case 5:
			System.out.print("perfectly readable");
			break;
		}
		System.out.print(".");
		in.close();
	}
}

4.奇偶個數

題目內容:
你的程式要讀入一系列正整數資料,輸入-1表示輸入結束,-1本身不是輸入的資料。程式輸出讀到的資料中的奇數和偶數的個數。

輸入格式:
一系列正整數,整數的範圍是(0,100000)。如果輸入-1則表示輸入結束。

輸出格式:
兩個整數,第一個整數表示讀入資料中的奇數的個數,第二個整數表示讀入資料中的偶數的個數。兩個整數之間以空格分隔。

輸入樣例:
9 3 4 2 5 7 -1

輸出樣例:
4 2

時間限制:500ms
記憶體限制:32000kb

import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		int num;
		int odd = 0;
		int even = 0;
		do {
			num = in.nextInt();
			if(num != -1) {
				if(num % 2 == 0)
					even++;
				else
					odd++;
			}
		}while(num != -1);
		System.out.println(odd + " " + even);
		in.close();
	}
}

5.數字特徵值

題目內容:
對數字求特徵值是常用的編碼演算法,奇偶特徵是一種簡單的特徵值。對於一個整數,從個位開始對每一位數字編號,個位是1號,十位是2號,以此類推。這個整數在第n位上的數字記作x,如果x和n的奇偶性相同,則記下一個1,否則記下一個0。按照整數的順序把對應位的表示奇偶性的0和1都記錄下來,就形成了一個二進位制數字。比如,對於342315,這個二進位制數字就是001101。

這裡的計算可以用下面的表格來表示:
| 數字 | 3 | 4 | 2 | 3 | 1 | 5 |
| ------ |-------------| -----|
| 數位 | 6 | 5 | 4 | 3 | 2 | 1 |
| 數字奇偶 | 奇 | 偶 | 偶 | 奇 | 奇 | 奇 |
| 數位奇偶 | 偶 | 奇 | 偶 | 奇 | 偶 | 奇 |
| 奇偶一致 | 0 | 0 | 1 | 1 | 0 | 1 |
| 二進位制位值 | 32 | 16 | 8 | 4 | 2 | 1 |

按照二進位制位值將1的位的位值加起來就得到了結果13。

你的程式要讀入一個非負整數,整數的範圍是[0,100000],然後按照上述演算法計算出表示奇偶性的那個二進位制數字,輸出它對應的十進位制值。

提示:將整數從右向左分解,數位每次加1,而二進位制值每次乘2。

輸入格式:
一個非負整數,整數的範圍是[0,1000000]。

輸出格式:
一個整數,表示計算結果。

輸入樣例:
342315

輸出樣例:
13
時間限制:500ms
記憶體限制:32000kb

import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner in = new Scanner(System.in);
		int num = in.nextInt();
		int lastnum,sum = 0,count = 0;
		do {
			count++;
			lastnum = num % 10;
			if((lastnum + count) % 2 == 0) {
				sum += Math.pow(2,count - 1);
			}
			num /= 10;
		}while(num > 0);
		System.out.println(sum);
		in.close();
	}
}

6.素數和

題目內容:
我們認為2是第一個素數,3是第二個素數,5是第三個素數,依次類推。
現在,給定兩個整數n和m,0&lt;n&lt;=m&lt;=2000&lt;n&lt;=m&lt;=200\quad你的程式要計算第n個素數到第m個素數之間所有的素數的和,包括第n個素數和第m個素數。

注意,是第n個素數到第m個素數之間的所有的素數,並不是n和m之間的所有的素數。

輸入格式:
兩個整數,第一個表示n,第二個表示m。

輸出格式:
一個整數,表示第n個素數到第m個素數之間所有的素數的和,包括第n個素數和第m個素數。

輸入樣例:
2 4

輸出樣例:
15

時間限制:500ms
記憶體限制:32000kb


import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		int n = in.nextInt();
		int m = in.nextInt();
		int sum = 0;
		int count = 0;
		int x = 2;
		
		do {
			boolean isPrime = true;
			for(int i = 2; i < x; i++) {
				if(x % i == 0) {
					isPrime = false;
					break;
				}
			}
			if(isPrime) {
				count++;
				if(count >= n && count <= m) {
					sum += x;
				}
			}
			x++;
		}while(0 < count && count <= 200);
		
		System.out.println(sum);
		in.close();	
	}
}

7.念整數

題目內容:
你的程式要讀入一個整數,範圍是[-100000,100000]。然後,用漢語拼音將這個整數的每一位輸出出來。
如輸入1234,則輸出:
yi er san si
注意,每個字的拼音之間有一個空格,但是最後的字後面沒有空格。當遇到負數時,在輸出的開頭加上“fu”,如-2341輸出為:
fu er san si yi

輸入格式:
一個整數,範圍是[-100000,100000]。

輸出格式:
表示這個整數的每一位數字的漢語拼音,每一位數字的拼音之間以空格分隔,末尾沒有空格。

輸入樣例:
-30

輸出樣例:
fu san ling

時間限制:500ms
記憶體限制:32000kb

import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		int num = in.nextInt();
		int count = 0;
		
                if(num == 0)
			System.out.print("ling");
	
        	if(num < 0) {
			num = -num;
			System.out.print("fu ");
		}
		
		// 計算數位
		int temp = num;
		for(;temp > 0;) { 
			temp /= 10;
			count++;
		}
		
		// 從高數位列印到低數位
		for(; count > 0; count--) {
			int x = (num / (int)Math.pow(10, count - 1)) % 10;
			switch(x) {
			case 1:
				System.out.print("yi");
				break;
			case 2:
				System.out.print("er");
				break;
			case 3:
				System.out.print("san");
				break;
			case 4:
				System.out.print("si");
				break;
			case 5:
				System.out.print("wu");
				break;
			case 6:
				System.out.print("liu");
				break;
			case 7:
				System.out.print("qi");
				break;
			case 8:
				System.out.print("ba");
				break;
			case 9:
				System.out.print("jiu");
				break;
			case 0:
				System.out.print("ling");
			}
			if(count != 1)  
				System.out.print(" ");    
		}
		in.close();
	}
}

8. 多項式加法

題目內容:
一個多項式可以表達為x的各次冪與係數乘積的和,比如:
2x6+3x5+12x3+6x+20
現在,你的程式要讀入兩個多項式,然後輸出這兩個多項式的和,也就是把對應的冪上的係數相加然後輸出。
程式要處理的冪最大為100。

輸入格式:
總共要輸入兩個多項式,每個多項式的輸入格式如下:
每行輸入兩個數字,第一個表示冪次,第二個表示該冪次的係數,所有的係數都是整數。第一行一定是最高冪,最後一行一定是0次冪。
注意第一行和最後一行之間不一定按照冪次降低順序排列;如果某個冪次的係數為0,就不出現在輸入資料中了;0次冪的係數為0時還是會出現在輸入資料中。

輸出格式:
從最高冪開始依次降到0冪,如:
2x6+3x5+12x3-6x+20
注意其中的x是小寫字母x,而且所有的符號之間都沒有空格,如果某個冪的係數為0則不需要有那項。

輸入樣例:
6 2
5 3
3 12
1 6
0 20
6 2
5 3
2 12
1 6
0 20

輸出樣例:
4x6+6x5+12x3+12x2+12x+40

時間限制:500ms
記憶體限制:32000kb

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        final int MAX_POWER = 100;
        int[] coefficients = new int[MAX_POWER+1];

        // INPUT
        coefficientPutIn(coefficients);
        
        // OUTPUT
        int count = 0;
        boolean only0 = true;
        for (int i = MAX_POWER; i >= 0; i--){
            // 係數不為零才輸出
            if (coefficients[i] != 0){
                count++;
                only0 = false;
               
                // 1.係數部分
                // 1.1係數符號:係數大於0且不是第一個數,左邊添“+”號
                if (coefficients[i] > 0){
                    if (count != 1){
                        System.out.print("+");
                    }
                }
                
                // 1.2係數數字:係數為1或-1,不顯示“1”(除非是常數項)
                if (coefficients[i] != 1 && coefficients[i] != -1){
                    System.out.print(coefficients[i]);
                }
                else if (coefficients[i] == 1)
                {
                    if (i == 0){
                        System.out.print("1");
                    }       
                }
                else if (coefficients[i] == -1){
                    System.out.print("-");
                    if (i == 0){
                        System.out.print("1");
                    }                   
                }

                // 2.x部分
                if (i >= 2){
                    System.out.print("x" + i);
                }
                else if (i == 1){
                    System.out.print("x");
                }
                else if (i == 0);               
            }
        }
        // 所有係數都為0的情況
        if (only0){
            System.out.print(0);
        }
    }
    
    private static void coefficientPutIn(int[] coefficients) {
        Scanner in = new Scanner(System.in);
        int cnt = 0;
        while(cnt < 2){
            int power = in.nextInt();
            int coefficient = in.nextInt()
            
           

相關推薦

[Java][MOOC]《Java基礎+》-浙江大學

基礎篇: 1.溫度轉換 題目內容: 寫一個將華氏溫度轉換成攝氏溫度的程式,轉換的公式是: °F = (9/5)*°C + 32 其中C表示攝氏溫度,F表示華氏溫度。 程式的輸入是一個整數,表示華氏溫度。輸出對應的攝氏溫度,也是一個整數。 提示,為了把計算結果的浮

分享6個月java基礎+精簡資料(視訊+原始碼+就業專案+面試報裝)

  每天都有初學者詢問該如何學習,如何快速學習,因精力有限不能一一回復請見諒,現系統整理一套java初學者最佳的學習方法、路線、大綱及視訊資料,並對一些過期的知識點進行剔除!如Struts2,hibernate等舊框架!完全不需要在新手期進行學習,因為外面公司基本不再使用!希望

Java基礎Day13

Java基礎進階Day13 課程大綱 1、Stream 流 ----------------> 重點:操作容器型別的資料(陣列或集合),程式碼比較簡單 2、方法引用 -----------------> 瞭解:方法引用省略太多,把之前的Lambda表示式最簡化的版本,都省

Java基礎Day12

Java基礎進階Day12 課程大綱 1、函式式介面 -------------------------> 理解 2、常用函式式介面 ---------------------> 重點格式 A. Supplier "只出不進" B.

Java基礎Day11

Java基礎進階Day11 課程大綱 1、網路程式設計基礎知識 --------------------> 瞭解(兩種架構、三種要素) 2、TCP通訊流程 -------------------------> 重點(理解服務端和客戶端互動流程步驟) 3、檔案上傳綜合案例

Java基礎Day10

Java基礎進階Day10 課程大綱 1、轉換流 ---------------------------> 重點 (轉換流思想) 2、列印流 ---------------------------> 理解 (讀寫資料) 3、序列化流 -------------------

Java基礎Day09

Java基礎進階Day09 課程大綱 1、IO概述 ---------------------------> 理解 (IO流的基本知識點) 2、四大父類 -------------------------> 理解 (通用方法) 3、增強流 ----------------

Java基礎Day08

Java基礎進階Day08 課程大綱 1、檔案File類 -----------------------> 重點 (基礎的方法介紹) 2、遞迴思想 -------------------------> 理解 (遞迴的步驟) 3、檔案過濾器 ----------------

Java基礎Day07

Java基礎進階Day07 課程大綱 1、執行緒通訊 -------------------------> 重點 (等待喚醒機制) 2、執行緒池 ---------------------------> 理解 (建立基礎執行緒池) 3、Lambda表示式 --------

Java基礎Day06

Java基礎進階Day06 課程大綱 1、執行緒回顧 -------------------------> 理解 (兩種格式、相關方法) 2、執行緒安全 -------------------------> 重點 (安全問題、三種解決) 3、執行緒狀態 ---------

Java基礎Day03

Java基礎進階Day03 課程大綱 1、List集合 ------------------------> 理解 2、資料結構 ------------------------> 理解 3、List的子類 ----------------------> 瞭解 4、S

Java基礎Day02

Java基礎進階 課程大綱 1、Collection集合 -------------> 理解 2、迭代器 Iterator ------------> 重點 3、泛型 -----------------------> 理解 4、鬥地主案例 -------------

Java基礎Day05

Java基礎進階Day05 課程大綱 1、異常 -----------------------------> 重點(異常處理方式) 2、執行緒 -----------------------------> 重點(執行緒和程序等) ​ 第一章 異常 1、異常體

Java基礎Day04

Java基礎進階Day04 課程大綱 1、Map集合 -------------------------------> 重點 2、Debug追蹤 -----------------------------> 重點 3、模擬鬥地主洗牌發牌 -----------------

論“java程序員的路途”如何做到少走彎路,多寫正確有意義的代碼。

cto 優化 set 為什麽 偉大的 不同的 量化 不同 自己 首先說明一下我為什麽會去思考這個問題。本人離開學校也有一段時間了,經過了幾場面試幾次臨時抱佛腳還有遇到的種種問題之後,社會告訴了我,如何做到少走彎路?如何讓自己在何時去寫合適的代碼。其實在我看來這

Java——面向對象

面向 oid dev pre 功能 direction pri 面向對象 必須 抽象類 抽象類:說不清楚的類 抽象方法:說不清楚的方法 p { margin-bottom: 0.25cm; direction: ltr; color: #000000; line-heigh

Java面向對象篇(包裝類,不可變類)

public 不存在 內存空間 test 都是 style system 覆蓋 位置 一. Java 8的包裝類 Java中的8種基本數據類型不支持面向對象的變成機制,也不具備對象的特性:沒有成員變量,方法可以調用。為此,Java為這8 種基本數據類型分別提供

java並發2--

原生 art lex rup 申請 語句 nbsp 繼續 同步控制 五、互斥同步 Java 提供了兩種鎖機制來控制多個線程對共享資源的互斥訪問,第一個是 JVM 實現的 synchronized,而另一個是 JDK 實現的 ReentrantLock。 1.1 synchr

Java後臺開發學習路線

Java後臺開發學習進階路線   轉自:https://blog.csdn.net/wjlgdut/article/details/72867256 這一部分其實也算是今天的重點,這一部分用來回答很多群裡的朋友所問過的問題,那就是LZ你是如何學習Java的,能不能給點建議? 今天LZ

Java效能優化高階

目錄$ b& Z7 N" v3 B├─1 什麼是效能優化2 w5 O/ k6 p- D+ q│  ├─1.1效能優化專題-什麼是效能優化一-.mp4│  ├─1.1效能優化專題-什麼是效能優化二-.mp4│  ├─效能優化.pdf/