C++程序设计 题目
学生成绩管理任务:① 对30个同学的3门课程求总分,按总分进行从高到低排序。
② 实现增加、删除一个同学成绩功能
③ 对结果进行输出
要求:可以使用冒泡、选择、插入、快速、归并、堆排序等任意一种排序算法,在上交资料中请写明:使用什么排序算法、存储结构、基本算法(可以使用程序流程图)、源程序、测试数据和结果、算法的时间复杂度、另外可以提出算法的改进方法
追问:这是编程题 可能我没说清楚
学生成绩管理任务:① 对30个同学的3门课程求总分,按总分进行从高到低排序。
② 实现增加、删除一个同学成绩功能
③ 对结果进行输出
要求:可以使用冒泡、选择、插入、快速、归并、堆排序等任意一种排序算法,在上交资料中请写明:使用什么排序算法、存储结构、基本算法(可以使用程序流程图)、源程序、测试数据和结果、算法的时间复杂度、另外可以提出算法的改进方法
追问:这是编程题 可能我没说清楚
答案:#include "iostream"
#include "string"
using namespace std;
class student
{
public:
int studentnumber;
float score;
student *next;
};
student *head=NULL;
student *creat()
{
student *p1;
student *p2;
p1=new student;
head=p1;
p2=p1;
cout<<"请输入学生的学号,以0结束"<<endl;
cin>>p1->studentnumber;
if (p1->studentnumber!=0)
{
cout<<"请输入学生3门分数的总分"<<endl;
cin>>p1->score;
}
else
{
delete p1;p2=NULL;head=NULL;return head;
}
while(p1->studentnumber!=0)
{
p2=p1;
p1=new student;
cout<<"请输入学生的学号,以0结束"<<endl;
cin>>p1->studentnumber;
if(p1->studentnumber!=0)
{
cout<<"请输入学生3门分数的总分"<<endl;
cin>>p1->score;
}
p2->next=p1;
}
delete p1;
p2->next=NULL;
return head;
}
void Showstuchent(student *head)
{
cout<<endl;
cout<<"学生信息如下:"<<endl;
while (head)
{
cout<<"学生学号"<<head->studentnumber<<"\t";
cout<<"分数"<<head->score<<endl;
head=head->next;
}
}
void insert(student *head,int studentnumber,float score)
{
student *list=new student;
student *l;
while(head)
{
l=head;
head=head->next;
}
list->studentnumber=studentnumber;
list->score=score;
list->next=NULL;
l->next=list;
}
void Delete(student *head,int studentnumber)
{
student *l;
if (head->studentnumber==studentnumber)
{
l=head;
head=head->next;
::head=head;
delete l;
cout<<"操作成功"<<endl;
return;
}
while(head)
{
if (head->next=NULL)
{
cout<<"找不到要删除的学号."<<endl;
return;
}
if (head->next->studentnumber==studentnumber)
{
l=head->next;
head->next=l->next;
delete l;
cout<<"操作成功"<<endl;
return;
}
head=head->next;
}
cout<<"找不到要删除的学号."<<endl;
}
int getstudentnum(student *head)
{
int studentnumber=0;
while (head)
{
studentnumber++;
head=head->next;
}
return studentnumber;
}
int main()
{
string str;
begin:
cout<<"1-重建学生成绩管理2-显示学生3-插入学生4-删除学生5-学生学号Q-退出"<<endl;
cin>>str;
if (str[0]=='1')
{
creat();
system("cls");
goto begin;
}
else if(str[0]=='2')
{
if(head==NULL)
{
cout<<"学生成绩档案为空,请增加学生成绩"<<endl<<"按回车键返回主程序"<<endl;
cin.get();
cin.get();
system("cls");
goto begin;
}
Showstuchent(head);
goto begin;
}
else if(str[0]=='3')
{
int studentnumber;
float score;
cout<<"请输入要插入的学生学号:"<<endl;
string str1;cin>>str1;
studentnumber=atoi(str1.c_str());
cout<<"请出入要插入的学生总分:"<<endl;
string str2;cin>>str2;
score=atof(str2.c_str());
insert(head,studentnumber,score);
cout<<"操作完毕,按回车键返回主程序"<<endl;
system("cls");
goto begin;
}
else if(str[0]=='4')
{
if(head==NULL)
{
cout<<"学生成绩档案为空,请增加学生成绩"<<endl<<"按回车键返回主程序"<<endl;
cin.get();
cin.get();
system("cls");
goto begin;
}
int studentnumber;
cout<<"请输入要删除的学生学号:"<<endl;
string str3;cin>>str3;
studentnumber=atoi(str3.c_str());
Delete(head,studentnumber);
system("cls");
goto begin;
}
else if(str[0]=='5')
{
cout<<"学生数目为:"<<getstudentnum(head)<<endl<<"按回车键返回主程序"<<endl;
cin.get();
cin.get();
system("cls");
goto begin;
}
system("pause");
}基本是这样的,有些细节部分你自己改下吧
?安排研究生课程表。设有m个研究生和可选修的n门课程,如果某个研究生选修的两门课程安排在同一时间内上课,则这两门课程就会发生冲突,要求不冲突地安排课程表。
上一个:C++ 拦截导弹问题
下一个:C++寻路算法