#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX 100
#define OK 1
typedef struct
{
char no[8];
char name[20];
int score;
}Student;
typedef struct
{
Student elem;
int length;
}SqList;
SqList L;
//顺序表的初始化
typedef int Status;
Status InitList_Sq(SqList L)
{
L.elem=(SqList)malloc(sizeof(SqList)*MAX);
L.length=0;
return OK;
};
void input(SqList L)
{
int n;
printf("请输入所需录入的学生信息个数\n");
scanf("%d",&n);
printf("请输入学生的学号、姓名和成绩\n");
int i;
for(i=0;i<n;i++)
{
scanf("%d %s %d",&L.elem[i].no,&L.elem[i].name,&L.elem[i].score);
L.length++;
}
};
int main ()
{
int x;
printf("学生信息管理\n");
do
{
printf("1.输入\n");
printf("请输入:");
scanf("%d",&x);
if(x==1)
{
//输入函数
input(L);
}
}
while (x);
return 0;
}
应该反复调用input函数,这样只能传一次参
顺序表没有正确的初始化,其它见注释,供参考:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX 100
#define OK 1
typedef struct
{
char no[8];
char name[20];
int score;
}Student;
typedef struct
{
Student* elem;
int length;
}SqList;
SqList L;
//顺序表的初始化
typedef int Status;
Status InitList_Sq(SqList* L) //Status InitList_Sq(SqList L) 修改
{
L->elem=(Student*)malloc(sizeof(Student)*MAX); // 修改
L->length=0; //修改
return OK;
};
void input(SqList* L) //void input(SqList L) 修改
{
int n;
printf("请输入所需录入的学生信息个数\n");
scanf("%d",&n);
printf("请输入学生的学号、姓名和成绩\n");
int i;
for(i=0;i<n;i++)
{
scanf("%s %s %d",L->elem[i].no, L->elem[i].name,&L->elem[i].score); //修改
//scanf("%d %s %d",&L.elem[i].no,&L.elem[i].name,&L.elem[i].score);
L->length++; //修改
//L.length++;
}
};
int main ()
{
int x;
InitList_Sq(&L); //修改
printf("学生信息管理\n");
do
{
printf("1.输入\n");
printf("请输入:");
scanf("%d",&x);
if(x==1)
{
//输入函数
input(&L); //修改
}
}while (x);
return 0;
}