gpt4 book ai didi

c - 如何在循环外部结构的同时循环结构内部的结构 C 程序

转载 作者:行者123 更新时间:2023-12-02 01:05:28 25 4
gpt4 key购买 nike

您好,我正在尝试在结构中创建一个结构,第一个结构将包含多个学生的详细信息,第二个结构将包含每个学生的多个模块的详细信息。每次要求用户输入每个学生的详细信息。我能够创建一个名为数据的学生结构实例,每次循环遍历每个数据实例,并为每个学生扫描一次信息,这对我有用。我现在正在尝试创建另一个内部循环,该循环将扫描许多不同的模块,并将这些模块分配给每个学生。我在第二个循环中遇到问题,希望得到一些指导。

struct module{
char moduleid[5];
int credit;
float grade;
};

//create structure student at includes a datatype
//module

struct student{
char id[10];
char fname[15];
char lname[15];
struct module results;
};

int main()
{
int i;
int j;
int numStuds;
int numMods = 10;

printf("Enter number of students\n");
scanf("%d",&numStuds);

struct student data[numStuds]; //create an instance of structure student called data
struct data.results mods[numMods];

//input data
for (i=0; i<numStuds; i++){
printf("PLEASE ENTER STUDENT DATA :\n\nID, FNAME AND LNAME\n");
scanf("%s%s%s",data[i].id,data[i].fname,data[i].lname);
for (j=0; j<numMods; j++){
printf("\nENTER MODULE DATA: \nMODULEID, CREDIT, GRADE :\n");
scanf("%s%d%f",data[i].results.mods[j].moduleid,&data[i].result.smods[j].credit,&data[i].results.mods[j].grade);
}
}

最佳答案

我认为你的主要问题是,在你的学生结构中声明“结果”的方式中,每个学生只能有一个结果。尝试使用静态数组(如果您知道有多少结果),或者如果您想在运行时声明其大小,请尝试使用动态数组。

例如

struct student{
char id[10];
char fname[15];
char lname[15];
struct module *results; //Pointer to declare a dynamic array
};

对于静态声明

struct student{
char id[10];
char fname[15];
char lname[15];
struct module results[size]; //Pointer to declare a dynamic array
};

如果您使用指针解决方案,请记住使用“->”运算符访问该属性

关于c - 如何在循环外部结构的同时循环结构内部的结构 C 程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27292504/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com