| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1067 人关注过本帖
标题:程序的删除功能有问题,不知怎么改
取消只看楼主 加入收藏
听阳光洒下
Rank: 1
等 级:新手上路
帖 子:51
专家分:0
注 册:2013-11-10
结帖率:90.91%
收藏
已结贴  问题点数:10 回复次数:4 
程序的删除功能有问题,不知怎么改
#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");} }
删除不管输入在不在顺序表内的学号都显示最后的这句话:"所输入学号不在该顺序表内,删除失败!,求高手帮忙改一下最后的删除部分的程序。
搜索更多相关主题的帖子: include search create insert 
2013-11-11 09:14
听阳光洒下
Rank: 1
等 级:新手上路
帖 子:51
专家分:0
注 册:2013-11-10
收藏
得分:0 
回复 3楼 pinglideyu
问题1:n是学生总数
2013-11-11 12:15
听阳光洒下
Rank: 1
等 级:新手上路
帖 子:51
专家分:0
注 册:2013-11-10
收藏
得分:0 
回复 3楼 pinglideyu
所以第二个应该怎么改呢?
2013-11-11 12:20
听阳光洒下
Rank: 1
等 级:新手上路
帖 子:51
专家分:0
注 册:2013-11-10
收藏
得分:0 
回复 6楼 流年!
原来的问题解决了,可是又出现新的问题,就是比如有两个人的信息,删除了一个之后应该还剩一个才对,但是删除之后再选择显示学生信息的时候却一个都没有了
2013-11-11 15:58
听阳光洒下
Rank: 1
等 级:新手上路
帖 子:51
专家分:0
注 册:2013-11-10
收藏
得分:0 
回复 8楼 流年!
已经可以了。万分感谢
2013-11-11 18:16
快速回复:程序的删除功能有问题,不知怎么改
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.053015 second(s), 8 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved