void deletStudent(struct student s[],int a){
long id;
char name[10];
float m_score;//数学成绩
float E_score;//英语成绩
float c_score;//C语言成绩
int x;
int i;
int t;//删除选项
printf("根据学号删除请输入1");
printf("根据姓名删除请输入2");
printf("结束本次服务请输入其他数字");
printf("请输入你的选择");
scanf("%d",&t);
if(t==1){
printf("请输入你所要删除学生的学号:\n");
scanf("%ld",&id);
for(i=1;i<a;i++){
if(s[i].id==id)//指针指向数据库
{ printf("学号:%ld,姓名:%s,数学:%d,英语:%d,c_语言:%d",s[i].id,s[i].name,s[i].m_score,s[i].E_score,s[i].c_score);
for( x=i; x<count; x++){
s[x].id=s[x+1].id;
strcmp(s[x].m_score,s[x+1].m_score);
strcmp(s[x].E_score,s[x+1].E_score);
strcmp(s[x].c_score,s[x+1].c_score);
}
count=count-1;
printf("删除成功!\n");
break;
}
else if(s[i].id!=id){
printf("未找到该学生,请核实学号后输入。\n");
break;
}
}
else if(t==2){
printf("请输入你所要删除学生的姓名:\n");
scanf("%s\n",name);
for(i=1;i<a;i++){
printf("学号:%ld,姓名:%s,数学:%d,英语:%d,c_语言:%d",s[i].id,s[i].name,s[i].m_score,
第四十三行少了个取地址符&
你这个代码有点怪,你的思路是找到删除的元素,后面前移覆盖。我提几个建议
1,你的i为什么不从0开始
2,删除完一个元素后你的a不需要变化么
根据题主的代码修改,形参int a 是数组记录的条目值,且为全局变量,供参考:
void deletStudent(struct student s[],int a)//这个 a 是全局变量,数组记录条目值
{
long id;
char name[10];
// float m_score;//数学成绩
// float E_score;//英语成绩
// float c_score;//C语言成绩
int x,flg;
int i;
int t;//删除选项
printf("根据学号删除请输入1");
printf("根据姓名删除请输入2");
printf("结束本次服务请输入其他数字");
printf("请输入你的选择");
scanf("%d",&t);
if(t==1){
printf("请输入你所要删除学生的学号:\n");
scanf("%ld",&id);
for(i = 0,flg = 0;i < a;i++){ //for(i=1;i<a;i++){
if(s[i].id==id)//指针指向数据库
{
printf("学号:%ld,姓名:%s,数学:%d,英语:%d,c_语言:%d\n",s[i].id,s[i].name,
s[i].m_score,s[i].E_score,s[i].c_score);
for(x = i; x < a-1; x++){ //for( x=i; x<count; x++){
s[x] = s[x+1];
}
a--;
flg = 1;
printf("删除成功!\n");
break;
}
}
if(flg == 0)
printf("未找到该学生,请核实学号后输入。\n");
//break;
}
else if(t==2){
printf("请输入你所要删除学生的姓名:\n");
scanf("%s",name); //scanf("%s\n",name);
for(i = 0,flg = 0;i < a;i++){ //for(i=1;i<a;i++){
if(strcmp(s[i].name,name)==0){
printf("学号:%ld,姓名:%s,数学:%d,英语:%d,c_语言:%d\n",s[i].id,s[i].name,
s[i].m_score,s[i].E_score,s[i].c_score);
for(x = i; x < a-1; x++){
s[x] = s[x+1];
}
a--;
flg = 1;
printf("删除成功!\n");
break;
}
}
if(flg == 0)
printf("未找到该学生,请核实姓名后输入。\n");
}
else{
printf("你选择了结束本次服务。\n");
}
}