运用C++二分查找编译此题
在下表中查找 学号为“98182”的学生信息
| 学 号 | 姓 名 | 性别 | 籍 贯 | 出生年月 |
1 | 98131 | 刘激扬 | 男 | 北 京 | 1979.12 |
2 | 98164 | 衣春生 | 男 | 青 岛 | 1979.07 |
3 | 98165 | 卢声凯 | 男 | 天 津 | 1981.02 |
4 | 98182 | 袁秋慧 | 女 | 广 州 | 1980.10 |
5 | 98203 | 林德康 | 男 | 上 海 | 1980.05 |
在下表中查找 学号为“98182”的学生信息
| 学 号 | 姓 名 | 性别 | 籍 贯 | 出生年月 |
1 | 98131 | 刘激扬 | 男 | 北 京 | 1979.12 |
2 | 98164 | 衣春生 | 男 | 青 岛 | 1979.07 |
3 | 98165 | 卢声凯 | 男 | 天 津 | 1981.02 |
4 | 98182 | 袁秋慧 | 女 | 广 州 | 1980.10 |
5 | 98203 | 林德康 | 男 | 上 海 | 1980.05 |
答案:#include<iostream>
using namespace std;
class student
{
public:
int num;
char name[10];
char 易做图[4];
char addr[7];
char date[8];
friend int search(student s[],int n)
{
int x=98182;
int front=0,end=n,mid=(front+end)/2;
while(front<end&&s[mid].num!=x)
{
if(s[mid].num<x)
front=mid+1;
if(s[mid].num>x)
end=mid-1;
mid=front+(end-front)/2;
}
if(s[mid].num!=x)
cout<<"没有找到";
else{
cout<<"找到了在"<<mid+1<<"位置"<<endl;
cout<<s[mid].num<<" "<<s[mid].name<<" "<<s[mid].易做图<<" "<<s[mid].addr<<" "<<s[mid].date;
}return 0;
}
};
int main()
{
student s[5]={98131,"刘激扬","男","北京","1979.12",
98164,"衣春生","男","青岛","1979.07",
98165,"卢声凯","男","天津","1981.02",
98182,"袁秋慧","女","广州","1980.10",
98203,"林德康","男","上海","1980.05",};
search(s,5);
system("pause");
}
上一个:c++程序设计英文打字练习程序
下一个:C++ 如何判断路径是文件还是目录