查找姓名
场景:输入查找姓名时,查找不对合.该怎么解决
输入查找姓名时,查找不对合.
按1.先输入名字 年龄 C++成绩 英语成绩
如:
gg 22 89 98
gh 23 78 92
tt 21 80 87
按4.查找姓名时
输入:gg
会找查出:gg gh 两个姓名的.
哪位高手帮我修改一下...谢谢了.
#include <iostream.h>
#include <stdlib.h>
void inp();
void print();
void pai();
void find();
struct student
{
char name[10];
int age;
int c;
int en;
int score;
};
struct student in[10],*p[10]={&in[0],&in[1],&in[2],&in[3],&in[4],&in[5],&in[6],&in[7],&in[8],&in[9]};
struct student *temp;
struct student hh,*pp=&hh; //查找姓名
int g;
void inp() //输入学生信息
{ cout<<"\n你要输入几个学生的信息:";
cin>>g;
cout<<endl;
cout<<" 姓名 年龄 C++成绩 英语成绩\n";
for(int k=0;k<g;k++)
{cout<<"学生"<<k+1<<":";
cin>>p[k]->name>>p[k]->age>>p[k]->c>>p[k]->en;
}
}
void print() //打印学生信息
{ cout<<endl;
for(int j=0;j<g;j++)
cout<<"姓名:"<<p[j]->name<<" 年龄:"<<p[j]->age<<" C++成绩:"<<p[j]->c<<" 英语成绩:"<<p[j]->en<<" 总分:"<<(p[j]->c+p[j]->en)<<endl;
}
void pai() //排序
{for(int i=0;i<g;i++)
for(int j=i+1;j<g;j++)
if(p[i]->c>p[j]->c)
{ temp=p[i];
p[i]=p[j];
p[j]=temp;
}
cout<<"\n按C++成绩排序为:";
print();
}
void find() //查找姓名
{
cout<<"请输入你要查找的姓名:";
cin>>pp->name;
for(int f=0;f<g;f++)
if (*p[f]->name==*pp->name)
{ cout<<"姓名:"<<p[f]->name<<" 年龄:"<<p[f]->age<<" C++成绩:"<<p[f]->c<<" 英语成绩:"<<p[f]->en<<" 总分:"<<(p[f]->c+p[f]->en)<<endl; }
else {cout<<"查找不到此姓名.\n"; }
}
void main()
{
cout<<" 学生管理系统\n";
cout<<"\n 1.输入学生信息 2.输出学生信息\n";
cout<<" 3.排序(按C++成绩排序) 4.查找学生\n";
cout<<" 5.退出本系统\n";
loop:
cout<<"\n请选择:";
int r;
cin>>r;
switch (r)
{
case 1:inp(); break;
case 2:print(); break;
case 3:pai(); break;
case 4:find(); break;
case 5: exit(0);
default:cout<<"你输入的有误!"; exit(0); break;
}
goto loop;
}
------解决方案--------------------
if (*p[f]->name==*pp->name)
条件用strcmp比较相同
输入查找姓名时,查找不对合.
按1.先输入名字 年龄 C++成绩 英语成绩
如:
gg 22 89 98
gh 23 78 92
tt 21 80 87
按4.查找姓名时
输入:gg
会找查出:gg gh 两个姓名的.
哪位高手帮我修改一下...谢谢了.
#include <iostream.h>
#include <stdlib.h>
void inp();
void print();
void pai();
void find();
struct student
{
char name[10];
int age;
int c;
int en;
int score;
};
struct student in[10],*p[10]={&in[0],&in[1],&in[2],&in[3],&in[4],&in[5],&in[6],&in[7],&in[8],&in[9]};
struct student *temp;
struct student hh,*pp=&hh; //查找姓名
int g;
void inp() //输入学生信息
{ cout<<"\n你要输入几个学生的信息:";
cin>>g;
cout<<endl;
cout<<" 姓名 年龄 C++成绩 英语成绩\n";
for(int k=0;k<g;k++)
{cout<<"学生"<<k+1<<":";
cin>>p[k]->name>>p[k]->age>>p[k]->c>>p[k]->en;
}
}
void print() //打印学生信息
{ cout<<endl;
for(int j=0;j<g;j++)
cout<<"姓名:"<<p[j]->name<<" 年龄:"<<p[j]->age<<" C++成绩:"<<p[j]->c<<" 英语成绩:"<<p[j]->en<<" 总分:"<<(p[j]->c+p[j]->en)<<endl;
}
void pai() //排序
{for(int i=0;i<g;i++)
for(int j=i+1;j<g;j++)
if(p[i]->c>p[j]->c)
{ temp=p[i];
p[i]=p[j];
p[j]=temp;
}
cout<<"\n按C++成绩排序为:";
print();
}
void find() //查找姓名
{
cout<<"请输入你要查找的姓名:";
cin>>pp->name;
for(int f=0;f<g;f++)
if (*p[f]->name==*pp->name)
{ cout<<"姓名:"<<p[f]->name<<" 年龄:"<<p[f]->age<<" C++成绩:"<<p[f]->c<<" 英语成绩:"<<p[f]->en<<" 总分:"<<(p[f]->c+p[f]->en)<<endl; }
else {cout<<"查找不到此姓名.\n"; }
}
void main()
{
cout<<" 学生管理系统\n";
cout<<"\n 1.输入学生信息 2.输出学生信息\n";
cout<<" 3.排序(按C++成绩排序) 4.查找学生\n";
cout<<" 5.退出本系统\n";
loop:
cout<<"\n请选择:";
int r;
cin>>r;
switch (r)
{
case 1:inp(); break;
case 2:print(); break;
case 3:pai(); break;
case 4:find(); break;
case 5: exit(0);
default:cout<<"你输入的有误!"; exit(0); break;
}
goto loop;
}
------解决方案--------------------
if (*p[f]->name==*pp->name)
条件用strcmp比较相同