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)
}