C++写的几个函数,有点不对,就是不晓得怎么改,求大神指教,有一丢丢急呀

studentstud[100];intn;//都为全局变量,n为stud数组中实际存入的学生个数classstudent//定义一个学生类,用于保存学生的在校信息(即成... student stud[100]; int n;//都为全局变量,n为stud数组中实际存入的学生个数

class student//定义一个学生类,用于保存学生的在校信息(即成绩等信息)
{char* num;//学号 char* name;//姓名 int class_num;//班级 char* sex;//性别 float Math;//高数成绩
float English;//英语成绩 float Cjj;//c++ float sum;//各科成绩总和
float average;//平均成绩
void readdata(student stud[100]);//从文件中读取学生信息
void delete_student(student stud[100]);//从文件中删除学生信息
};

//----------------删除资料------------------
void student::delete_student(student stud[100])
{
char delete_num[10];
readdata( stud);
do{

cout<<"请输入你要删除的学生的学号:";
cin>>delete_num;
int i=0;
while(stud[i].num!=delete_num&&i<n) i++; //查找判断好像就是这里错了,函数不执行 if语句,直接到 else if 了
if(stud[i].num==delete_num)
{
for(int j=i;j<n-1;j++)
{
stud[i].num=stud[i+1].num;
stud[i].name=stud[i+1].name;
stud[i].sex=stud[i+1].sex;
stud[i].class_num=stud[i+1].class_num;
stud[i].Math=stud[i+1].Math;
stud[i].English=stud[i+1].English;
stud[i].Cjj=stud[i+1].Cjj;
}
save(stud);
cout<<"删除成功!"<<endl;
n=n-1;
}
else if(i==n) {
cout<<"can't find this num"<<endl;
cout<<"该信息不存在,无法删除!"<<endl;
}
cout<<"(是否继续操作?(y/n))"<<endl;
cin>>answer;
}
while(answer=='y'||answer=='Y') ;
}<!--<!--<!--<!--<"请输入文件名:"<
展开
 我来答
wls5611
2014-04-29 · 超过29用户采纳过TA的回答
知道答主
回答量:56
采纳率:0%
帮助的人:68.8万
展开全部
while(stud[i].num!=delete_num&&i<n) i++;

student.num是个指针,他基本不可能和delete_num相等的,感觉这里i会溢出的
这里改用字符串比较函数吧,判断2个字符串是否相同
追问

感觉还是有问题呀,

还有我的输出那里总是多输出一行乱码?

追答
readdata( stud);估计函数里面for循环什么的多循环了一次,追踪一下就知道了
黑暗中的剑
2014-04-29 · 超过46用户采纳过TA的回答
知道小有建树答主
回答量:135
采纳率:0%
帮助的人:101万
追问

感觉还是有问题呀,还有我的输出那里总是多输出一行乱码?

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式