我有一个名为student的结构:
struct student{
char*lastName;
char*firstName;
int age;
float grade[3];
}
我如何阅读应该读入学生记录数组的文本文件。所有学生的年龄应随机生成,范围从18到35岁。每个学生有3个文本等级,从0到100。
答案 0 :(得分:2)
首先,如果我理解你的问题,你应该提供一个链表。由于链接列表比读取文件,生成数字等更棘手,所以我只会给你提示。
如果你必须把你的学生放在一个简单的数组中,这将很容易,例如,一个简单的学生myArray [100]会这样做。 这意味着你的所有学生都将被存放在记忆的同一部分。像那样:(A)(B)(C)。 A,B和C是三个学生,彼此相邻。如果你要有大量的学生,这是不方便的,因为你必须在记忆中找到一个足够大的区域来储存一切。这就是为什么有链表:所以你可以把你的学生放在记忆中。例如:(A)(一些其他数据)(B)(一些其他数据)(C)。在那里,你不需要在你的记忆中拥有一个大而独特的自由空间。
但是有一个问题:当你使用数组时,很容易找到你的数据。您只需要知道数组的开头,然后计算从数组的第一项开始的数据的数量。这就是你做的时候的意思:例如myArray [4]。
由于你要使用链表,你无法计算数据的位置,因为,这就是链表的想法,它们可以在任何地方。这就是列表链接的原因:您需要提供从数据到数据的方法。你将使用C程序员最好的朋友:指针。
所以你必须改进你的结构:
struct student{
char* lastName;
char* firstName;
int age;
float grade[3];
student* next
}
你需要一个非常重要的变量:student * listStart。这相当于您正在使用的“数组”变量。如果您想访问数据,则需要启动的地方。
现在,你基本上要做的是:
好吧,起初有点混乱。但如果你设法做到这一点,你将学到一些有用的东西,而不是我们为你做功课。祝你好运;
答案 1 :(得分:0)
我想你可以从这开始:
答案 2 :(得分:0)
好的,我可能会帮忙。但是,需要更多信息。文本文件包含什么内容?如果您需要随机生成的年龄...这很容易只需使用随机数生成器方法(谷歌)并定义其边界,每次通过循环调用它以获得随机年龄。此外,为成绩做到这一点。至于数组,我很确定你可以创建一个结构列表(c#就像List mylist = new List();)或者,你可以做一个结构数组。
如果您使用的文本文件包含部分数据(例如只有名字和姓氏)。我会在循环中读取文本文件,分配名字和姓氏。然后循环遍历数组/列表的长度,每次调用年龄和等级的随机数。然后在每个年龄等级的循环中分配该位置。所以student [i] .age = * random gen方法返回val。