删除学生信息这段程序有问题不知道怎么解决!!!
程序代码:#include<stdio.h>
#include<conio.h>
#include<string.h>
#include<stdlib.h>
#define N 80
int m=0;
struct student
{ char name[20];
int num;
char cla[20];
char sex[2];
int score[5];
int ave;
}stu[100];
void add()
{ int j,k,l;
system("cls"); /*清屏*/
printf("请输入要插入的学生成绩的人数: ");
scanf("%d",&m);
for(j=0;j<m;j++)
{ system("cls"); /*清屏*/
printf("请输入学生姓名: ");
scanf("%s",stu[j].name);
printf("请输入学生的学号: ");
scanf("%d",&stu[j].num);
printf("请输入学生性别: ");
scanf("%s",stu[j].sex);
printf("请输入班级: ");
scanf("%s",stu[j].cla);
printf("请输入每个学生各科成绩");
for(l=0;l<5;l++)
scanf("%d",&stu[j].score[l]);
printf("是否继续输入下一条记录,是输入(y/Y)");
scanf("%*c%c",&k);
if(k=='y'||k=='Y') continue;
}
}
void sta()
{
int j,l,avemax;
int aave=0;
system("cls"); /*清屏*/
for(j=0;j<m;j++)
{
stu[j].ave=0;
for(l=0;l<5;l++)
stu[j].ave+=stu[j].score[l];
stu[j].ave/=5;
}
for(j=0;j<m;j++)
aave+=stu[j].ave;
aave/=m;
avemax=stu[0].ave;
for(j=1;j<=m;j++)
{
if(avemax<stu[j].ave) avemax=stu[j].ave;
}
printf("学生姓名 成绩平均分\n");
for(j=0;j<m;j++)
{
printf("%s \t%d\n",stu[j].name,stu[j].ave);
}
printf("所有学生的平均分: %d",aave);
printf("所有学生平均成绩的最高分: %d",avemax);
getch();
}
void change()
{
int j,l,k;
system("cls"); /*清屏*/
for(j=0;j<m;j++)
{ printf("%s %d %s %s",stu[j].name,stu[j].num,stu[j].sex,stu[j].cla);
printf("是否修改<y/Y>:\n");
k=getche();
if(k=='y')
{printf("是否修改姓名<y/Y>:\n");
k=getche();
if(k=='y')
{printf("请输入新的姓名:\n");
scanf("%s",stu[j].name);}
printf("是否修改学号<y/Y>:\n");
k=getche();
if(k=='y')
{printf("请输入新的学号:\n");
scanf("%d",&stu[j].num);}
printf("是否修改性别<y/n>:\n");
k=getche();
if(k=='y')
{printf("请输入新的性别:\n");
scanf("%s",stu[j].cla);}
printf("是否修改成绩<y/Y>");
k=getche();
if(k=='y');
for(l=0;l<5;l++)
{ printf("\n"); printf("%d\n",stu[j].score[l]);
printf("是否修改该科成绩<y/n>");
k=getche();
if(k=='y')
{ printf("请输入该科修改后的成绩:");
scanf("%d",&stu[j].score[l]);}
else continue;
}
}
}
}
void del()
{
int j,l,i;
char k;
system("cls"); /*清屏*/
for(j=0;j<m;j++)
{ printf("%s %d %s %s\n",stu[j].name,stu[j].num,stu[j].sex,stu[j].cla);
for(l=0;l<5;l++)
printf(" %d",stu[j].score[l]);
printf("\n");
printf("是否要删除<y/Y>:");
printf("\n");
k=getche();
if(k=='y')
{
for(i=0;i<10;i++)
stu[j].name[i]=stu[j+1].name[i+1];
stu[j].num=stu[j+1].num;
for(i=0;i<2;i++)
stu[j].sex[i]=stu[j+1].sex[i];
for(i=0;i<5;i++)
stu[j].cla[i]=stu[j+1].cla[i+1];
for(l=0;l<5;l++)
stu[j].score[l]=stu[j].score[l+1];
}j--;
}
}
void display()
{
int j,l;
system("cls"); /*清屏*/
printf("姓名\t学号\t性别\t班级\t\t成绩\n");
for(j=0;j<m;j++)
{ printf("%s\t%d\t%s\t%s",stu[j].name,stu[j].num,stu[j].sex,stu[j].cla);
for(l=0;l<5;l++)
printf(" %d",stu[j].score[l]);
printf("\n");
}
getch();
}
void sort()
{
int j,l,temp;
char k;
system("cls"); /*清屏*/
for(j=0;j<m;j++)
if(stu[j].ave<stu[j+1].ave)
{temp=stu[j].ave;
stu[j].ave=stu[j+1].ave;
stu[j+1].ave=temp;
}
printf("升序请输入r:降序请输入d:");
k=getche();
printf("\n");
if(k=='r')
{for(j=m;j>0;j--)
printf("%d\t",stu[j].ave);}
if(k=='d')
{for(j=0;j<m;j++)
printf("%d\t",stu[j].ave);}
getch();
}
void main()
{ char i;
printf("\n\n\n\n\n\n\t\t\t 欢迎使用学生成绩管理系统");
printf("\n\n\n\t\t\t\t\t制作人包盛辉");
printf("\n\n\t\t\t\t 2013年6月");
printf("\n\n\n\n\n\t按回车键进入主菜单:"); /*界面*/
getchar();
do
{ system("cls"); /*清屏*/
printf("\n");
printf("\t\t\t\t ************\n");
printf("\t\t\t\t * 主菜单 *\n"); /*主菜单*/
printf("\t\t\t\t ************\n\n\n");
printf("\t 1.插入学生成绩信息 2.统计学生成绩信息\n\n");
printf("\t 3.修改学生成绩信息 4.删除学生成绩信息\n\n");
printf("\t 5.显示所有学生信息 6.学生成绩信息排序\n\n");
printf("\t 7.退出系统\n\n");
printf("\n\n");
printf("\t 请选择[1/2/3/4/5/6/7]: ");
i=getchar();
switch(i)
{
case '1': add(); break; /*返回主菜单*/
case '2': sta(); break;
case '3': change(); break;
case '4': del(); break;
case '5': display(); break;
case '6': sort(); break;
case '7': exit(0);
default: break;
}
}while(1);
}
void del()这段函数有问题实现不了删除 望高手给点意见 可以在我的编程的基础上改也可以提供新的思路









