删除学生信息这段程序有问题不知道怎么解决!!!
程序代码:
#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()这段函数有问题实现不了删除 望高手给点意见 可以在我的编程的基础上改也可以提供新的思路