【发布时间】:2016-02-07 13:11:54
【问题描述】:
您好,我必须创建一个数据库,用于存储学生编号、姓名,并在 C 编程语言中存储一系列课程分数 (1-N)。
在我开始为课程标记数组编码之前,一切正常。然后每次我编译代码时,只要它要求输入课程分数,它就会一直崩溃。
你能告诉我我在这个任务的编程中哪里出错了吗?我已将其附加到此消息中。
程序可以输入姓名、学号,但是我无法让程序输入分数数组。我已经询问了要输入多少课程分数,然后在“void insert(void)”函数中使用了一个 for 循环来继续将课程分数输入到数组 *marks 中。我特指我的编程代码中的第 24 到 30 行。
此时程序总是崩溃,我无法继续输入更多姓名或打印存储的学生详细信息。
我觉得这部分有问题:
for (i= 0; i < num_marks; i++)
{
printf("Enter Course Mark: \n");
scanf("%d", &(list[num_students].marks[num_marks]));
}
这里是完整的代码:
#include <stdio.h>
#include <string.h>
struct student{
int number;
char name[10];
int marks[5];
};
struct student list[10];
int num_students = 0;
int num_marks = 0;
int *p;
void insert(void)
{
int student_number;
int i;
printf("Enter number: \n");
scanf("%d", &list[num_students].number);
printf("Enter NAME: \n");
scanf("%s", &list[num_students].name);
printf("Enter NO of courses: \n");
scanf("%d", num_marks);
for (i= 0; i < num_marks; i++)
{
printf("Enter Course Mark: \n" );
scanf("%d", &(list[num_students].marks[num_marks]));
}
num_students++; // HOW DO WE INPUT ARRAY MARKS??? MARK1: , MARK2: , MARK3 ,
}
void printtest(void)
{
int i;
for (i=0; i < num_students; i++)
{
printf("Name: \n");
puts(list[i].name);
printf("Number: %d \n", list[i].number);
printf("Mark: %d /100 \n", list[i].marks);
printf("\n");
}
}
int main(void)
{
int code;
int opt1;
int courses, i, k, j, counter;
for (;;){
printf("Enter operation code: \n");
printf("(1) ADD NEW STUDENT DETAILS: \n");
printf("(2) DISPLAY REPORT OF ALL STUDENTS: \n");
scanf(" %d", &code);
switch (code){
case 1 :
insert();
break;
case 2 :
printtest();
break;
default:
printf("Illegal code\n");
printf("\n");
}
}
}
【问题讨论】:
标签: c arrays data-structures struct static-members