m0_51273889
Xunyira箐
2021-01-27 22:39

【初学】Golang中类c链表制作学生管理系统中关于“打印学生信息”存在的小问题

  • Golang
  • c语言

如图所示,当分次往程序中输入学生信息后再输出,两次输入的信息输出信息之间会有一个意义不明的“0 0.00”

纯新人,先前只学过一点c/c++和python,想学着在c中那样在go中利用链表的形式创建一个学生管理系统,结果只到输出环节就翻车了

以下是关于输入/输出的相关代码:

package main
import(
	"fmt"
	"os"
)
func Add(head *student) *student{   //输入学生信息
	var(
		p *student = nil
		pr *student = nil
		num string
		Name string
		Sex byte
		Age int
		Score float64
		)
	fmt.Println("开始录入学生信息:")
	fmt.Println("请按照学号、姓名、性别、年龄、成绩的顺序录入:")
	for true{
		p = new(student)  //申请内存
		if p == nil{
			fmt.Println("不够内存!")
			os.Exit(1)
		}
		if head == nil{
			head = p  //若 头指针 为 空,则头指针指向 新申请内存空间p
		}else{
			pr = head
			for pr.next != nil{
				pr = pr.next
			}
			pr.next = p
		}
		fmt.Scan(&num)
		if num == "-1"{
			fmt.Println("录入结束!")
			p = nil
			break
		}
		fmt.Scanf("%s %c %d %f",&Name,&Sex,&Age,&Score)
		p.number = num
		p.name = Name
		p.sex = Sex
		p.age = Age
		p.score = Score
		p.next = nil
		People ++
	}
	fmt.Println("录入成功!")
	return head  //返回
}
package main

import (
	"fmt"
)
func Print_(head *student){    //输出学生信息
	if head == nil{
		fmt.Println("你的学生信息表单为空!")
		return
	}
	var pr = head
	for pr.next != nil{
		fmt.Printf("%s %s %c %d %.2f\n",pr.number,
			pr.name,pr.sex,pr.age,pr.score)
		pr = pr.next
	}
}

求大神援助(😭

  • 点赞
  • 回答
  • 收藏
  • 复制链接分享

4条回答

为你推荐

换一换