程序的删除功能有问题,不知怎么改
#include<stdio.h>#include<stdlib.h>
typedef struct student{
long no;
char name[20];
char sex[2];
int age;
}STUDENT;
#define MAXSIZE 100
STUDENT stu[MAXSIZE];
void create(STUDENT stu[],int n);
void output(STUDENT stu[],int n);
void search(STUDENT stu[],int n);
void insert(STUDENT stu[],int *pn);
void del(STUDENT stu[],int *pn);
int main()
{int n;
STUDENT stu[MAXSIZE];
int cord;
printf("\n请输入学生记录个数n=");
scanf("%d",&n);
create(stu,n);
while(1)
{printf("\n----------学生信息管理主菜单----------\n");
printf("\t1.显示学生信息\n");
printf("\t2.查找学生信息\n");
printf("\t3.插入学生信息\n");
printf("\t4.删除学生信息\n");
printf("\t5.退出\n\n");
printf("\t\t请选择(1~5):");
scanf("%d",&cord);
printf("\n-----------------------------------------\n");
switch(cord){
case 1: output(stu,n);break;
case 2: search(stu,n);break;
case 3: insert(stu,&n);break;
case 4: del(stu,&n);break;
case 5: return 0;
default:printf("\n输入有误,请重新输入!\n");}
}
}
void create(STUDENT stu[],int n)
{int i;
for(i=0;i<n;i++)
{printf("\n学号:",stu[i].no);
scanf("%ld",&stu[i].no);
printf("姓名:",stu[i].name);
scanf("%s",stu[i].name);
printf("性别:",stu[i].sex);
scanf("%s",&stu[i].sex);
printf("年龄:",stu[i].age);
scanf("%d",&stu[i].age);} }
void output(STUDENT stu[],int n)
{int i=1;
STUDENT *p;
printf("\n序号\n学号\n姓名\n性别\n年龄 \n");
for(p=&stu[0];p<stu+n;p++)
{printf("%d\t",i++);
printf("%ld\t",p->no);
printf("%s\t",p->name);
printf("%s\t",p->sex);
printf("%d\t",p->age);
printf("\n");}
}
void search(STUDENT stu[],int n)
{int i;
long x;
printf("\n请输入待查找的学号");
scanf("%ld",&x);
for(i=0;i<n;i++)
if(stu[i].no==x) break;
if(i<n) printf("%ld\t%s\t%s\t%d\n",stu[i].no,stu[i].name,stu[i].sex,stu[i].age);
else printf("\n查找失败!" );
return;}
void insert(STUDENT stu[],int *pn)
{int i;
if(*pn==100)
{printf("顺序表已满,不能插入!");
return;}
else
{i=*pn;
printf("\n请依次输入");
printf("\n学号 姓名 性别 年龄\n");
scanf("%ld%s%s%d",&stu[i].no,stu[i].name,&stu[i].sex,&stu[i].age);
*pn=*pn+1;}
return;}
void del(STUDENT stu[],int *pn)
{int i;
long n;
if(*pn==0)
{printf("此顺序表为空表,无法删除!");
return;}
else
{i=*pn;
printf("请输入要删除的学号:");
scanf("%ld",&n);
if(n==stu[i].no)
{printf("删除成功!\n");
*pn=*pn-1;}
else
printf("所输入学号不在该顺序表内,删除失败!\n");} }
删除不管输入在不在顺序表内的学号都显示最后的这句话:"所输入学号不在该顺序表内,删除失败!,求高手帮忙改一下最后的删除部分的程序。