请高手看一下 这个全局变量,那里有问题~!十万火急,谢谢~!
#include<stdio.h>#include<stdlib.h>
int add(int *stu,int student);
int del(int *stu,int student);
void print(int *stu,int student);
void esc();
int student=0;
void main()
{
while(1)
{
int *stu=NULL;
int option;
printf("------------------请输入您进入的选项------------------\n");
printf("1.新增学员人数 2.删除学员 3.打印学员成绩 4.退出程序\n ");
scanf(" %d",&option);
switch (option)
{
case 1:
{
add(stu,student);
break;
}
case 2:
{
del(stu,student);
break;
}
case 3:
{
print(stu,student);
break;
}
case 4:
{
esc();
break;
}
}
free( stu);
}
}
int add(int *stu,int student)
{
int i;
char a;
int student_a;
printf("请输入新增学员的人数\n");
scanf(" %d",&student);
while(student<=0)
{
printf("您输入有误,请从新输入\n");
scanf(" %d",&student);
}
stu=(int *)malloc(student*sizeof(int));
printf("请输入学员的成绩\n");
for(i=0;i<student;i++)
{
scanf(" %d",stu+i);
}
printf("继续增加学员人数,请输入y,退出请输入n\n");
scanf(" %c",&a);
do
{
if(a=='y'||a=='Y')
{
printf("输入新增学员人数 \n");
scanf(" %d",&student_a);
while(student<0)
{
printf("您输入有误,请从新输入\n");
scanf(" %d",&student_a);
}
student+=student_a;
stu=(int *)realloc(stu,student*sizeof(int));
printf("请输入新增学员的分数\n");
for(i=student-student_a;i<student;i++)
{
scanf(" %d",stu+i);
}
printf("继续增加学员人数,请输入y,退出请输入n\n");
scanf(" %c",&a);
}
if(a=='n'||a=='N')
{
//exit(0);
return 0;
}
}
while(a!='y');
{
exit(0);
}
return *stu;
}
int del(int *stu,int student)//这个全局变量为什么是零?而下面的打印函数的全局变量又是有的??
{
int id;
int i;
printf("请输入要删除学生的学号\n");
scanf(" %d",&id);
while(id<=0||id>student)
{
printf("您输入有误,请从新输入\n");
scanf(" %d",&id);
}
if(student==1)
{
free(stu);
}
if(id==student)
{
stu=(int *)realloc(stu,(student-1)*sizeof(int));
}
else
{
student=student-1;
for(i=id;i<student+1;i++)
{
*(stu+i)=*(stu+i+1);
}
stu=(int *)realloc(stu,student*sizeof(int));
}
return *stu;
}
void print(int *stu,int student)
{
int i;
for(i=0;i<student;i++)
{
printf("第%d个学员的成绩:%d",i+1,*(stu+i));
}
}
void esc()
{
exit(0);
}