国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

GO語言圣經 第二章習題

這篇具有很好參考價值的文章主要介紹了GO語言圣經 第二章習題。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

練習2.1

向tempconv包添加類型、常量和函數用來處理Kelvin絕對溫度的轉換,Kelvin 絕對零度是?273.15°C,Kelvin絕對溫度1K和攝氏度1°C的單位間隔是一樣的。

conv.go

package tempconv

// CToF converts a Celsius temperature to Fahrenheit.
func CToF(c Celsius) Fahrenheit { return Fahrenheit(c*9/5 + 32) }

// FToC converts a Fahrenheit temperature to Celsius.
func FToC(f Fahrenheit) Celsius { return Celsius((f - 32) * 5 / 9) }

func KToC(k Kelvin) Celsius { return Celsius(k + 273.15) }

func CToT(c Celsius) Kelvin { return Kelvin(c + 273.15) }

tempconv.go

package tempconv

import "fmt"

type Celsius float64
type Fahrenheit float64
type Kelvin float64

const (
	AbsoluteZeroC Celsius = -273.15
	FreezingC     Celsius = 0
	BoilingC      Celsius = 100
)

func (c Celsius) String() string    { return fmt.Sprintf("%g°C", c) }
func (f Fahrenheit) String() string { return fmt.Sprintf("%g°F", f) }
func (k Kelvin) String() string     { return fmt.Sprintf("%g°K", k) }

練習2.2

寫一個通用的單位轉換程序,用類似cf程序的方式從命令行讀取參數,如果缺省的話則是從標準輸入讀取參數,然后做類似Celsius和Fahrenheit的單位轉換,長度單位可以對應英尺和米,重量單位可以對應磅和公斤等。

conv.go:

package lenthconv

func MToF(m Meter) Feet { return Feet(m / 0.3084) }

func FToM(f Feet) Meter { return Meter(f * 0.3084) }

lenthconv:

package lenthconv

import "fmt"

type Meter float64
type Feet float64

func (m Meter) String() string { return fmt.Sprintf("%g m", m) }
func (f Feet) String() string  { return fmt.Sprintf("%g ft", f) }

test:

package main

import (
	"bufio"
	"fmt"
	"os"
	"strconv"

	"gopl.io/ch2/lenthconv"
)

func main() {
	if len(os.Args) == 1 {
		input := bufio.NewScanner(os.Stdin)
		for input.Scan() {
			t, err := strconv.ParseFloat(input.Text(), 64)
			if err != nil {
				fmt.Fprintf(os.Stderr, "cf: %v\n", err)
				os.Exit(1)
			}
			f := lenthconv.Feet(t)
			m := lenthconv.Meter(t)
			fmt.Printf("%s = %s, %s = %s\n",
				f, lenthconv.FToM(f), m, lenthconv.MToF(m))

		}
	}
	for _, arg := range os.Args[1:] {
		t, err := strconv.ParseFloat(arg, 64)
		if err != nil {
			fmt.Fprintf(os.Stderr, "cf: %v\n", err)
			os.Exit(1)
		}
		f := lenthconv.Feet(t)
		m := lenthconv.Meter(t)
		fmt.Printf("%s = %s, %s = %s\n",
			f, lenthconv.FToM(f), m, lenthconv.MToF(m))
	}
}

練習2.3

重寫PopCount函數,用一個循環(huán)代替單一的表達式。比較兩個版本的性能。

func PopCount(x uint64) int {
	res := 0
	for i := 0; i < 8; i++ {
		res += int(pc[byte(x>>(i*8))])
	}
	return res
}

練習2.4

用移位算法重寫PopCount函數,每次測試最右邊的1bit,然后統(tǒng)計總數。比較和查表算法的性能差異。

func PopCount(x uint64) int {
	res := 0
	for x != 0 {
		res += x & 1
		x >>= 1
	}
	return res
}

練習2.5

表達式x&(x-1)用于將x的最低的一個非零的bit位清零。使用這個算法重寫PopCount函數,然后比較性能。文章來源地址http://www.zghlxwxcb.cn/news/detail-674384.html

func PopCount(x uint64) int {
	res := 0
	for x != 0 {
		res++
		x &= x - 1
	}
	return res
}

到了這里,關于GO語言圣經 第二章習題的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!

本文來自互聯(lián)網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • 操作系統(tǒng)第二章練習題

    第三部分 選擇題 1、在進程管理中,當(???? )時,進程從阻塞狀態(tài)變?yōu)榫途w狀態(tài)。 ? C? A.進程被進程調度程序選中????????????? B.等待某一事件 C.等待的事件發(fā)生?????????????????????? D.時間片用完 2、分配到必要的資源并獲得處理機時的進程狀態(tài)是(

    2024年02月07日
    瀏覽(31)
  • Python基礎練習題--第二章 順序結構

    Python基礎練習題--第二章 順序結構

    目錄 1007:【例2.1】交換a和B的值 1008:【例2.2】打招呼Hello 1009:【例2.3】購買筆記本 1010:【例2.4】最適宜運動心率 1011:【例2.5】求3個整數的和 1012:練2.1 ?小明買圖書 1013:練2.2 ?雞兔同籠 1014:練2.3 ?求平均分 1015:【例2.6】數字對調 1016:【例2.7】BMI指數 1017:練2.4 ?與

    2024年02月09日
    瀏覽(44)
  • 計算機組成原理---第二章 習題詳解版

    計算機組成原理---第二章 習題詳解版

    1. ? ? ? ? ? ? ? ? ? ? ? 1.寫出下列各整數的原碼、反碼和補碼表示(用8位二進制表示)。其中MSB是最高位(符號位),LSB是最低位。 (1)-35? ? ? ? (2) -128? ?(3)-127? ? ? ? ?(4)-1 答:(1)-35? ?原: 1011 0101? 反:1100 1010? 補碼:1100 1011 ? ? ? (2) -128?? 在八

    2024年02月04日
    瀏覽(25)
  • 數據挖掘(Data Mining)第二章課后習題

    數據挖掘(Data Mining)第二章課后習題

    1、下面哪個不屬于數據的屬性類型( ?相異 ?) 2、屬于定量的屬性類型是( ?區(qū)間 ?) 3、一所大學內的各年紀人數分別為:一年級200人,二年級160人,三年級130人,四年級110人。則年級屬性的眾數是( ?一年級 ?) 4、考慮數據集{12 24 33 24 55 68 26},其四分位數極差是( ?

    2024年02月08日
    瀏覽(25)
  • 數據結構英文習題解析-第二章 鏈表List

    前言:最近快到FDS考試了,po重刷了一下學校的題目,自己整理了一些解析orz 因為po在自己找解析和學習的過程中非常痛苦,所以在此共享一下我的題目和自己寫的解題思路,歡迎各位指出錯誤~全章節(jié)預計會陸續(xù)更新,可在專欄查看~ HW2 1. For a sequentially stored linear list of leng

    2024年04月11日
    瀏覽(26)
  • 【數據結構】第二章課后練習題——線性結構

    【數據結構】第二章課后練習題——線性結構

    1、線性表是 一個有限序列,可以為空 2、鏈表中最常用的操作是在最后一個元素之后插入一個元素和刪除最后一個元素,則采用 單循環(huán)鏈表 存儲方式最節(jié)省運算時間 3、若某線性表中最常用的操作實在最后一個元素之后插入一個元素和刪除第一個元素,則采用 僅有尾結點的

    2024年02月07日
    瀏覽(25)
  • 【課后習題】 線性代數第六版第二章 矩陣及其運算 習題二

    【課后習題】 線性代數第六版第二章 矩陣及其運算 習題二

    習題二 1. 計算下列乘積: (1) ( 4 3 1 1 ? 2 3 5 7 0 ) ( 7 2 1 ) left(begin{array}{rrr}4 3 1 \\\\ 1 -2 3 \\\\ 5 7 0end{array}right)left(begin{array}{l}7 \\\\ 2 \\\\ 1end{array}right) ? ? ? 4 1 5 ? 3 ? 2 7 ? 1 3 0 ? ? ? ? ? ? ? 7 2 1 ? ? ? ? ; (2) ( 1 , 2 , 3 ) ( 3 2 1 ) (1,2,3)left(begin{array}{l}3 \\\\ 2 \\\\ 1end{ar

    2024年02月05日
    瀏覽(40)
  • 【C++】C++ primer plus第二章練習題

    c++程序的模塊叫什么? 函數。 下面的預處理器編譯指令是做什么用的? 包含頭文件,將iostream文件的內容添加·到代碼中 下面的語句是做什么用的? using namespace std; using是預編譯器指令,讓其使用std命名空間 什么語句可以用來打印短語“Hello, world”,然后開始新的一行? s

    2024年02月06日
    瀏覽(23)
  • 計算機網絡原理 謝希仁(第8版)第二章習題答案

    2-01 物理層要解決哪些問題?物理層的主要特點是什么? 要解決的問題: 屏蔽掉硬件設備與傳輸媒體的差異,使比特流在傳輸媒體上透明的傳輸。 用多大電壓表示1和0,以及接收方如何識別發(fā)送發(fā)所發(fā)送的比特 確定連接電纜的插頭有多少根引腳,以及各引腳如何連接。 特點

    2023年04月09日
    瀏覽(27)
  • 【計算機網絡】(謝希仁第八版)第二章課后習題答案

    【計算機網絡】(謝希仁第八版)第二章課后習題答案

    第二章 答: 物理層要解決的主要問題: (1)物理層要盡可能地屏蔽掉物理設備和傳輸媒體,通信手段的不同,使數據鏈路層感覺不到這些差異,只考慮完成本層的協(xié)議和服務。 (2)給其服務用戶(數據鏈路層)在一條物理的傳輸媒體上傳送和接收比特流(一般為串行按順

    2024年02月08日
    瀏覽(34)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包