c语言删除功能,程序的删除功能有问题,不知怎么改

已结贴√

问题点数:10 回复次数:8

ca56232b3bbedf9a539d07f37fffb99a.gif

3144d8b7615c79d9f638db40d5689d26.gif

a218af6549b45ee526caf607ebff1358.gif

0f8df0e29816ae721419de940fb833d1.gif

程序的删除功能有问题,不知怎么改

#include

#include

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

{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

{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

if(stu[i].no==x) break;

if(i

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");} }

删除不管输入在不在顺序表内的学号都显示最后的这句话:"所输入学号不在该顺序表内,删除失败!,求高手帮忙改一下最后的删除部分的程序。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值