大仙们来看看小弟的程序错哪了
//***********************//学生信息管理系统
//***********************
#include<stdio.h>
#include<string.h>
#include<malloc.h>
#define null 0
#define max 65536
static int n;
///*********************
// 图书结构体
//*********************
typedef struct
{
char num[20]; //学号
char name[20]; //姓名
char addr[30]; //学院
}
datatype;
datatype *x[max]; //定义两个指针数组
datatype *p;
//*****************************
//图书功能函数列表
//*****************************
void redo(); //主递归函数
void creatlist(datatype *x[]); //学生建立函数
int menu_select(); //功能菜单函数
void find(datatype *x[],int n); //查找函数
void delnode(datatype *x[]); //插入函数
void printlist(datatype *x[]); //显示函数
//*************************
//功能菜单函数
//*************************
int menu_select()
{
int i;
printf(" 欢迎学生信息管理系统!\n");
printf("===========================\n");
printf(" 1. 学生信息的采集\n");
printf(" 2. 新信息的插入\n");
printf(" 3. 学生信息的查询\n");
printf(" 4. 信息的删除\n");
printf(" 5. 信息的显示\n");
printf(" 0. 退出管理系统\n");
printf("===========================\n");
printf(" 请选择0-5: ");
scanf("%d",&i);
while(i<0||i>5)
{
printf("\n\t输入出错,重选0-5: ");
scanf("%d",&i);
}
return i;
}
//*****************************
//主递归函数程序
//*****************************
void redo()
{
int i=0,j,n1,k=0,flage;
for( ; ;)
{
switch( menu_select())
{
case 1: //选项1的实现
printf("***********************\n");
printf("* 学生信息的建立 *\n");
printf("***********************\n");
creatlist(x);
break;
case 2: //选项2的实现
printf("***********************\n");
printf("* 新学生信息的添加 *\n");
printf("***********************\n");
printf(" 插入的个数:");
scanf("%d",&n1); //输入插入新学生的个数
for(i=0;i<n1;i++)
{
flage=0;
p=(datatype *)malloc(sizeof(datatype)); //分配一个节点空间
printf(" 姓名: ");
scanf("%s",p->name); //输入插入学生的姓名
if(flage==0)
{
n++;
printf(" 第 %d 个学生数据:\n",n); //插入新学生
p=(datatype *)malloc(sizeof(datatype));
x[n-1]=p;
printf(" 姓名:");
scanf("%s",x[n-1]->name); //输入姓名 gets(*x[n-1].name)
printf(" 学号:");
scanf(" %s",x[n-1]->num); //输入学号
printf(" 学院:");
scanf(" %s",x[n-1]->addr); // 输入学院
}
}
break;
case 3:
printf("***********************\n");
printf("* 学生信息的查询 *\n");
printf("***********************\n");
find(x,n);
break;
case 4:
printf("************************\n");
printf("* 学生信息的删除 *\n");
printf("************************\n");
delnode(x);
break;
case 5:
printf("************************\n");
printf("* 学生信息的显示 *\n");
printf("************************\n");
printlist(x);
break;
case 0:
printf("\t 谢谢使用,再见! \n");
return;
}
}
//*************************
//主函数程序
//*************************
void main ()
{
redo(); //调用主递归函数
}
//********************************
// 建立链表学生建造函数
//********************************
void creatlist(datatype *x[])
{
int i;
printf(" 请输入要建立学生信息的个数:");
scanf("%d",&n);
for(i=0;i<n;i++)
{
printf(" 第 %d 个学生数据:\n",i+1);
p=(datatype *)malloc(sizeof(datatype)); //分配一个节点空间
x[i]=p;
printf(" 姓名:"); //输入图书各项内容
scanf("%s",x[i]->name);
printf(" 学号:");
scanf(" %s",x[i]->num);
printf(" 学院:");
scanf(" %s",x[i]->addr);
}
}
//**********************************
// 查找函数程序
//*********************************
void find(datatype *x[],int n)
{
char num[10];
char name[9];
int t,i;
printf("=================\n"); //输出查找方式
printf(" 1.按学号查询 \n");
printf(" 2.按姓名查询 \n");
printf("=================\n");
printf(" 请选择 : ");
scanf("%d",&t); //输入选择信息
if(t==1)
{
printf(" 请输入要查找者的编号: ");
scanf("%s",num); //输入学号
for(i=0;i<n;i++)
{
if(strcmp(x[i]->num,num)==0) //调用strcmp函数
{
printf(" 学号 姓名 学院 \n"); //输出要查询学生的信息
printf(" %-10s%-10s%-10s%\n",x[i]->num,x[i]->name,x[i]->addr);
}
else
continue;
}
}
else
{
printf(" 请输入要查询的姓名: ");
scanf("%s",name); // 输入姓名
for(i=0;i<n;i++)
{
if(strcmp(x[i]->name,name)==0)
{
printf("学号 姓名 学院 \n"); //输出要查询书的信息
printf(" %-10s%-10s%-10s%\n",x[i]->num,x[i]->name,x[i]->addr);
}
else
continue;
}
}
}
//******************************
//删除函数程序
//******************************
void delnode(datatype *x[])
{
char num1[10],name1[10]; //定义两个字符数组
int i,j,m=1,p;
printf(" 1.按学号删除\n"); //输出选择方式
printf(" 2.按姓名删除\n");
printf(" 3.返回\n");
printf(" 请选择:\n");
scanf("%d",&p); //输入选择信息
if(p>3||p<1)
{
printf(" 您的输入有误,请重新输入!\n");
scanf("%d",&p); //重新输入选择信息
}
switch(p) //实现删除程序
{
case 1:
printf(" 输入要删除学生的学号:\n");
scanf(" %s",num1);
for(i=0;i<n;i++)
{
if(strcmp(x[i]->num,num1)==0) //调用strcmp函数
{
m=0;
n--;
for(j=i;j<n;j++)
x[j]=x[j+1]; //将该学生信息删除
printf(" 该学生信息已删除!\n");
}
}
if(m==1)
printf(" 没有这样的的学生信息\n");
break;
case 2:
printf(" 输入要删除学生的名字:\n");
scanf("%s",&name1);
for(i=0;i<n;i++)
{
if(strcmp(x[i]->name,name1)==0) //调用strcmp函数
{
m=0;
n--;
for(j=i;j<n;j++) //将该学生信息删除
x[j]=x[j+1];
printf(" 该学生信息已删除!\n");
}
}
if(m==1)
printf(" 没有这样的的学生信息\n");
break;
case 3:
break;
}
}
//**************************************
// 输出程序
//**************************************
void printlist(datatype *x[])
{
int i;
printf("学号 姓名 学院\n"); //输出学生各项信息
for(i=0;i<n;i++)
{
printf(" %-10s%-10s%-10s%\n",x[i]->num,x[i]->name,x[i]->addr);
}
printf("===============================================\n");
}
错误信息是这样的
D:\VC6\MyProjects\学生信息2\a.c(126) : error C2143: syntax error : missing ';' before 'type'
执行 cl.exe 时出错.