数据结构课程设计(C语言)

设有n个学生,每个学生包含学号、姓名、分数三部分数据,其中学号是关键字,依次输入这些学生数据来建立一棵二叉排序树,然后再输入一个学号进行查找,查找成功则输出该学生的数据;... 设有n个学生,每个学生包含学号、姓名、分数三部分数据,其中学号是关键字,依次输入这些学生数据来建立一棵二叉排序树,然后再输入一个学号进行查找,查找成功则输出该学生的数据;查找失败输出找不到信息。 展开
 我来答
倾情倾心
2008-01-15 · TA获得超过216个赞
知道小有建树答主
回答量:189
采纳率:0%
帮助的人:205万
展开全部
我这个和你要的差不多吧,,我做实验用的..笔视收费

#include <iostream>
#include <string.h>
#include <string> //字符串操作
#include <iomanip>
using namespace std;
#define N 50 //学生数
#define M 10 //课程数
struct student
{ char name[20];
int number;
int score[8];
}stu[60];
string kechengming[M];

void changesort(struct student a[],int n,int j)
{int flag=1,i;
struct student temp;
while(flag)
{flag=0;
for(i=1;i<n-1;i+=2)
if(a[i].score[j]<a[i+1].score[j]) /*奇数项比较*/
{temp=a[i];
a[i]=a[i+1];
a[i+1]=temp;
flag=1;
}
for(i=0;i<n-1;i+=2)
if(a[i].score[j]<a[i+1].score[j]) /*偶数项比较*/
{temp=a[i];
a[i]=a[i+1];
a[i+1]=temp;
flag=1;
}
}
}

void print(struct student a[],int n,int j)
{
int i,k;
cout<<kechengming[j]<<"前5名数据如下:"<<endl;
cout<<setw(8)<<"名次"<<setw(8)<<"学号"<<setw(8)<<"姓名"<<setw(8)<<kechengming[j]<<endl;
k=1;
for(i=0;k<=5 && i<n;i++)
{if(i>0 && a[i].score[j]!=a[i-1].score[j])
k++;
cout<<setw(8)<<k;
cout<<setw(8)<<a[i].number;
cout<<setw(8)<<a[i].name;
cout<<setw(8)<<a[i].score[j];
cout<<endl;
}
}

int main()
{
int i,j,k,n,m;
struct student temp;
cout<<"请输入学生数(最多为"<<N<<"个):";
cin>>n;
cout<<"请输入课程数(最多为"<<M-2<<"个):";
cin>>m;
kechengming[m]="sum";kechengming[m+1]="avg";
for(i=0;i<m;i++)
{cout<<"请输入第"<<i+1<<"个课程名:";
cin>>kechengming[i]; //输入课程名
}
for(i=0;i<n;i++)
{cout<<"请输入第"<<i+1<<"个同学的姓名:";
cin>>stu[i].name;
cout<<"请输入第"<<i+1<<"个同学的学号:";
cin>>stu[i].number;
for(j=0;j<m;j++)
{cout<<"请输入"<<kechengming[j]<<"的成绩:";
cin>>stu[i].score[j];
}
}
for(i=0;i<n;i++)
{stu[i].score[m]=0;
for(j=0;j<m;j++)
stu[i].score[m]+=stu[i].score[j];
stu[i].score[m+1]=stu[i].score[m]/m;
}
changesort(stu,n,m);
cout<<"学生成绩如下:"<<endl;
cout<<setw(6)<<"名次";
cout<<setw(6)<<"姓名";
cout<<setw(6)<<"学号";
for(i=0;i<m+2;i++)
cout<<setw(6)<<kechengming[i];
cout<<endl;
k=1;
for(i=0;i<n;i++)
{if(i>0 && stu[i].score[m]!=stu[i-1].score[m])
k++;
cout<<setw(6)<<k;
cout<<setw(6)<<stu[i].name;
cout<<setw(6)<<stu[i].number;
for(j=0;j<m+2;j++)
cout<<setw(6)<<stu[i].score[j];
cout<<endl;
}
j=0;
cout<<"请输入您要对第几个成绩进行排序(1~"<<m<<"):";
cin>>i;
while(i>=0 && j==0)
{ if(i>0 && i<m+1)
{
changesort(stu,n,i-1);
print(stu,n,i-1);
cout<<"请输入您要对第几个成绩进行排序:(1~"<<m<<",输入0退出)";
cin>>i;
}
else if(i==0)
j=1;

else
{cout<<"输入有误,请重新输入:";
cin>>i;
}
}

return 0;
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
光点科技
2023-08-15 广告
通常情况下,我们会按照结构模型把系统产生的数据分为三种类型:结构化数据、半结构化数据和非结构化数据。结构化数据,即行数据,是存储在数据库里,可以用二维表结构来逻辑表达实现的数据。最常见的就是数字数据和文本数据,它们可以某种标准格式存在于文件... 点击进入详情页
本回答由光点科技提供
悠悠メ風铃响
2008-01-21
知道答主
回答量:44
采纳率:0%
帮助的人:0
展开全部
我也有这样的实验啊,,,
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
宜木琴夏瑶
2020-05-25 · TA获得超过3664个赞
知道大有可为答主
回答量:3116
采纳率:33%
帮助的人:180万
展开全部
你的毕业设计吧,平时上课就不学,现在就想用30分来乞,你真当百度知道分数是钱啊?小子,别浪费你父母的血汗钱了
另外,团IDC网上有许多产品团购,便宜有口碑
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式