-2

好的,首先我将解释我的任务。对于这个任务,我必须使用我没有问题的动态内存分配。我遇到的问题是找出完成任务的正确方法。对于我的作业,我需要创建一个程序,提示用户输入他们有多少学生,然后询问以下信息;学生证、生日和电话号码。我需要使用循环来提示用户输入所有学生信息。我需要创建一个循环来扫描所有学生 ID,并使用他们的生日找到年龄最大的学生(循环必须能够扫描超过 3 个学生)。

这是我的代码,我从你们那里得到了一些建议,甚至是一些代码。这是我的代码,创建一个循环搜索所有学生并找到最老的学生的最佳方法是什么?

谢谢你。

#include <stdio.h>
#include <stdlib.h>

struct studentDataType
{
    int studentID;
    int year;
    int month;
    int day;
    long long phone;
};

int main (void)
{
    struct studentDataType *studentRecords=NULL;
    unsigned int students;
    unsigned int studentID;
    unsigned int year;
    unsigned int month;
    unsigned int day;
    unsigned long phone;

    printf("How many students are you entering records for:\n");
    scanf("%d", &students);

    studentRecords = malloc(sizeof(struct studentDataType) * students);
    int i=0;
    for (i; i != students ; ++i)  {
        printf("Enter information for student as follows (ID, DOB year, DOB month, DOB day, Phone): %d\n", i+1);
        struct studentDataType * s = &studentRecords[i];
        scanf("%u %u %u %u %u", &(s->studentID), &(s->year), &(s->month), &(s->day), &(s->phone));
    }
}
4

1 回答 1

1

首先用零初始化一个本地“日期”(即可能的最小日期)。然后遍历集合中的所有条目。当您发现结构的“日期”比本地日期更早时,将索引保存到该条目并将本地日期设置为条目日期。然后当循环结束时,保存的索引是“最旧的”条目。

像这样的伪代码

oldest_date = 0;
oldest_index = -1;

loop_over_all_students
{
    if current_student.date > oldest_date
    {
        oldest_date = current_student.date
        oldest_index = current_index
    }
}

if (oldest_index >= 0)
{
    /* The variable `oldest_index` is the index to the "oldest" student */
}
于 2013-11-01T16:48:15.920 回答