package main
// 引包的兩種方式,開發中使用第二種方式。
// import "fmt"
// import "unsafe"
import (
"fmt"
)
func main(){
//swicth
// 有兩個變量,a和b,要求將其進行交換,但是不允許使用中間變量,最終打印結果
var a int = 10
var b int = 20
a = a+b
b = a-b // b = a+b-b ==> b = a
a = a-b // a = a+b-a ==> a = b
fmt.Printf("a=%v,b=%v", a,b)
// 方式一、for
var str string = "hello,world!"
for i := 0; i < len(str); i++ {
fmt.Printf("%c \n",str[i])
}
// 方式二、for-range
str = "hello,world!世界你好555666!"
for index,val:=range str {
fmt.Printf("index= %dindex,val =%c \n",index,val)
}
//字符串切片
var s string = "hello,world!背景"
str2 := len([]rune(s)) // 字符串轉化成切片
for i :=0;i<=str2;i++{
fmt.Printf("%c\n",i)
}
//練習題 應用案列
// 1、 統計3個班成績情況,每個班有5個同學,求出各個班平均分和所有班級的平均分
// 分析實現思路:
// 1. 統計1個班成績情況,每個班有5名同學,求出該班平均分。
// 2. 學生數就是5個
// 3. 聲明一個sum 統計班級總分
var classnum int = 2
var stunum int = 5
var totalsum float64 = 0.0
var passcount int = 0
for j:=1;j <= classnum;j++{
sum :=0.0
for i:=1;i<=stunum;i++{
var score float64
fmt.Printf("請輸入第%d班 第%d個學生的成績 \n",j,i)
fmt.Scanln(&score)
// 累計總分
sum += score
// 判斷及格人數
if score >= 60 {
passcount++
}
}
fmt.Printf("第%d個班級的平均分是%v \n",j,sum/float64(stunum))
// 將各個班級的總成績累計到totalsum
totalsum += sum
}
fmt.Printf("各個班級的總成績%v 所有班級平均分 是%v\n",totalsum,totalsum/float64((classnum*stunum)))
fmt.Printf("總及格人數是%v\n",passcount)
// 打印1-100之前所有是9的倍數的整數的個數及總和
// 分析思路:
// 1 使用for 循環對max進行遍歷
// 2 當一個數%9 == 0 就是9的倍數
// 3 我們需要聲明兩個變量 count 和sum 來保存個數和總和
var max = 100
var count uint64= 0
var sum uint64 = 0
var i uint64 = 0
for i; i<=max; i++{
if i%9 == 0 {
count ++
sum +=i
}
}
fmt.Printf("count=%v sum= %v\n",count,sum)
}