我是否需要为我的作业创建三个单独的数组?

好的,首先我会解释我的任务。 对于这个分配,我必须使用动态内存分配,我没有遇到任何问题。 我遇到的问题是弄清楚正确的工作方式。 对于我的任务,我需要创建一个程序,提示用户输入他们有多少学生然后要求提供以下信息; 学生证,出生日期和电话号码。 我需要使用循环来提示用户输入所有学生信息。 我需要创建一个循环,它将扫描所有学生ID并使用他们的生日找到最老的学生(循环必须能够扫描超过3名学生)。

这是我的代码,我还没有做太多,因为我不确定从哪里开始。 我已经设置了动态内存分配,但我不知道如何处理其余部分。 请帮我。

谢谢。

#include  #include  int main (void) { int * studentData= NULL; int students; printf("How many students are you entering records for:\n"); scanf("%d", &students); studentData=(int*)malloc((sizeof(int)*students)); } 

您可以定义一个结构:

 //Define a type, such as int, char, double... typedef struct studentDataType { int ID; int birthDateDay; int birthDateMonth; int birthDateYear; int phoneNumber; }; 

然后创建一个数组,其中每个元素都是studentData类型:

 //Create an array, where each element is of type studentData studentDataType *studentData = (studentDataType *)malloc(numberOfStudents * sizeof(studentData)); 

然后通过它们循环:

 for (int i = 0 ; i < numberOfStudents ; ++i) { printf("%i %i %i\n", studentData[i].ID, studentData[i].phoneNumber); } 

使用以下结构。 您可以将年,月和日作为单独的字段。 快速启动会更简单:

 struct Student { int studentID; int year; int month; int day; long long phone; // phone is too large for 32 int };