项目1:中国计算机设计大赛赛事统计
【问题描述】
参加计算机设计大赛的n个学校编号为1~n,赛事分成m个项目,项目的编号为1~m.比赛获奖按照得分降序,取前三名,写一个统计程序产生各种成绩单和得分报表。
【基本要求】
1)每个比赛项目至少有10支参赛队;每个学校最多有6支队伍参赛;
2)能统计各学校的总分;
3)可以按照学校编号或名称,学校的总分、各项目的总分排序输出;
4)可以按学校编号查询学校某个项目的获奖情况;可以按项目编号查询取得前 三名的学校;
5)数据存入文件并能随时查询
【设计要求】
1)输入数据形式和范围:可以输入学校的名称,赛事项目的名称。
2)输出形式:有中文提示,各学校分数为整数
3)界面要求:交互设计要合理,每个功能可以设立菜单,根据提示,可以完成相关功能的要求。
4)存储结构:学生自己根据系统功能要求自己设计,但是赛事相关数据要存储在文件中。
【测试数据】
要求使用全部合法数据,整体非法数据,局部非法数据。进行程序测试,以保证程序的稳定。
【实现提示】
假设3<赛事项目数量<=10,学校名称长度不超过20个字符。每个赛事结束时,将其编号、名称输入,并依次输入参赛学校编号、学校名称和成绩。
项目2:校园导游咨询
【问题描述】
设计一个校园导游程序,为来访的客人提供各种信息查询服务。
【基本要求】
(1) 设计你所在学校的校园平面图,所含景点不少于10个.以图中顶点表示校内各景点,存放景点名称、代号、简介 等信息;以边表示路径,存放路径长度等相关信息。
(2) 为来访客人提供图中任意景点相关信息的查询。
(3) 为来访客人提供图中任意景点的问路查询,即查询任意两个景点之间的一条最短的简单路径。
【测试数据】
以江苏科技大学长山校区为例。
【实现提示】
一般情况下,校园的道路是双向通行的,可设校园平面图是一个无向网.顶点和边均含有相关信息.
项目3:算术表达式求解
【问题描述】
设计一个简单的算术表达式计算器。
【基本要求】
实现标准整数类型的四则运算表达式的求值(包含括号,可多层嵌入).
【测试数据】
(30+2*70)/3-12*3
5+(9*(62-37)+15)*6
要求自行设计非法表达式,进行程序测试,以保证程序的稳定运行。
【算法描述】
利用栈将中缀表达式转换为后缀表达式求值。如(a+b)*(c-d)为中缀表达式,转换为后缀表达式ab+cd-*,对此只需要从左往右扫描,与到操作符就将左边的两个操作数进行计算,直到整个式子扫描结束为止。
建栈
typedef struct stack
{
int a[N];
int top;
}ST;
为方便对栈的使用,进行了一系列操作(判断栈是否为空、是否上溢、出栈、入栈以及取栈顶元素)
//判断栈是否为空
int Isempty(ST *T)
{
if(T->top<0)
return 1;
else
return 0;
}
//判断栈是否上溢
int Isfull(ST *T)
{
if(T->top==N-1)
return 1;
else
return 0;
}
//取栈顶元素
int Gettop(ST *T)
{
return T->a[T->top];
}
//入栈
int Push(ST *T,int x)
{
if(T->top==N-1)
cout<<"错误";
else
{
(T->top)++;
T->a[T->top]=x;
}
}
//出栈
int Pop(ST *T)
{
int x;
if(T->top==N-1)
{
x=T->a[T->top];
(T->top)--;
return x;
}
else
cout<<"错误";
}
将中缀表达式转换为后缀表达式的具体操作:
1.从左往右遍历表达式;
2.如果是运算数,输出;
3.如果是左括号,入栈;
4.如果是右括号,则不断取出栈顶元素并输出,直到遇到左括号;
5.如果是预算符,将其与栈顶运算符比较优先级,若高于栈顶运算符,则入栈;若低于,则将栈顶运算符弹出并输出,然后继续和下一个栈顶运算符比较。



