1 一元稀疏多项式的运算问题描述:设有两个带头指针的单链表表示两个一元稀疏多项式A、B,实现两个一元稀疏多项式的处理。
实现要求:⑴输入并建立多项式;⑵输出多项式,输出形式为整数序列:n,c1,e1,c2,e2……c n,e n,其中n是多项式的项数,c i,e i分别为第i项的系数和指数。
序列按指数降序排列;⑶多项式A和B相加,建立多项式A+B,输出相加的多项式;⑷多项式A和B相减,建立多项式A-B,输出相减的多项式;⑸多项式A和B相乘,建立多项式A×B,输出相乘的多项式;⑹设计一个菜单,至少具有上述操作要求的基本功能。
测试数据:(1) (2x+5x8-3.1x11)+(7-5x8+11x9)(2) (6x-3-x+4.4x2-1.2x9)-(-6x-3+5.4x2+7.8x15)(3)(x+x2+x3)+0(4)(x+x3)-(-x-x-3)2 成绩排序假设某年级有4个班,每班有45名同学。
本学期有5门课程考试,每门课程成绩是百分制。
假定每个同学的成绩记录包含:学号、姓名各门课程的成绩共7项,其中学号是一个10位的字符串,每个学生都有唯一的学号,并且这4个班的成绩分别放在4个数组中,完成以下操作要求:⑴编写一个成绩生成函数,使用随机数方法,利用随机函数生成学生的各门课程的成绩(每门课程的成绩都是0∽100之间的整数),通过调用该函数生成全部学生的成绩;⑵编写一个平均成绩计算函数,计算每个同学的平均成绩并保存在成绩数组中;⑶用冒泡排序法对4个班的成绩按每个同学的平均成绩的以非递增方式进行班内排序;⑷用选择排序法对4个班的成绩按每个同学的平均成绩的以非递增方式进行班内排序;⑸对已按平均成绩排好序的4个班的同学的构造一个所有按平均成绩的以非递增方式排列的新的单链表;⑹设计一个菜单,至少具有上述操作要求的基本功能。
3 迷宫问题问题描述:以一个m×n的长方阵表示迷宫,0和1分别表示迷宫中的通路和障碍。
设计一个程序,对任意设定的迷宫,求出一条从入口到出口的通路,或得出没有通路的结论。
实现要求:⑴实现一个以链表作存储结构的栈类型,然后编写一个求解迷宫的非递归程序。
求得的通路以三元组(i,j,d)的形式输出,其中:(i,j)指示迷宫中的一个坐标,d表示走到下一坐标的方向。
⑵编写递归形式的算法,求得迷宫中所有可能的通路;⑶以方阵形式输出迷宫及其通路。
[测试数据]迷宫的测试数据如下:左上角(1,1)为入口,右下角(8,9)为出口。
1 2 3 4 5 6 7 80 0 1 0 0 0 1 00 0 1 0 0 0 1 00 0 0 0 1 1 0 10 1 1 1 0 0 1 00 0 0 1 0 0 0 00 1 0 0 0 1 0 10 1 1 1 1 0 0 11 1 0 0 0 1 0 11 1 0 0 0 0 0 0实现提示:计算机解迷宫通常用的是“穷举求解”方法,即从入口出发,顺着某一个方向进行探索,若能走通,则继续往前进;否则沿着原路退回,换一个方向继续探索,直至出口位置,求得一条通路。
假如所有可能的通路都探索到而未能到达出口,则所设定的迷宫没有通路。
可以二维数组存储迷宫数据,通常设定入口点的下标为(1,1),出口点的下标为(m,n)。
为处理方便起见,可在迷宫的四周加一圈障碍。
对于迷宫中任一位置,均可约定有东、南、西、北四个方向可通。
4 栈及其操作问题描述:栈(Stack):是限制在表的一端进行插入和删除操作的线性表。
又称为后进先出LIFO (Last In First Out)或先进后出FILO (First In Last Out)线性表。
栈顶(Top):允许进行插入、删除操作的一端,又称为表尾。
用栈顶指针(top)来指示栈顶元素。
栈底(Bottom):是固定端,又称为表头。
空栈:当表中没有元素时称为空栈。
设栈S=(a1,a2,…an),则a1称为栈底元素,an为栈顶元素。
栈中元素按a1,a2,…an的次序进栈,退栈的第一个元素应为栈顶元素an。
即栈的修改是按后进先出的原则进行的。
栈的链式存储结构称为链栈,是运算受限的单链表。
其插入和删除操作只能在表头位置上进行。
链栈的基本形式如下:top ⋀空链栈top ana3a2a1⋀┇非空链栈实现要求:⑴链栈基本操作的实现:栈的初始化,生成一个空栈;压栈,即元素进栈;弹栈,即元素出栈;⑵十进制整数N向其它进制数d(二、八、十六)的转换是计算机实现计算的基本问题。
转换法则:该转换法则对应于一个简单算法原理:n=(n div d)*d+n mod d 其中:div为整除运算,mod为求余运算⑶在文字处理软件或编译程序设计时,常常需要检查一个字符串或一个表达式中的括号是否相匹配?匹配思想:从左至右扫描一个字符串(或表达式),则每个右括号将与最近遇到的那个左括号相匹配。
则可以在从左至右扫描过程中把所遇到的左括号存放到堆栈中。
每当遇到一个右括号时,就将它与栈顶的左括号(如果存在)相匹配,同时从栈顶删除该左括号。
算法思想:设置一个栈,当读到左括号时,左括号进栈。
当读到右括号时,则从栈中弹出一个元素,与读到的左括号进行匹配,若匹配成功,继续读入;否则匹配失败,返回FLASE。
5 用C语言设计一个年历系统问题描述:年历系统首先对于输入的任一年,能够给出该年每月的日期及实际周几的对应情况,并与实际的星期数垂直对齐,如下表所示(当输入2004时显示如下):Input the year:2004The calendar of the year 2004.Januray 1 February 2============================== ==============================Sun Mon Tue Wed Thu Fri Sat Sun Mon Tue Wed Thu Fri Sat1 2 3 1 2 3 4 5 6 74 5 6 7 8 9 10 8 9 10 11 12 13 1411 12 13 14 15 16 17 15 16 17 18 19 20 2118 19 20 21 22 23 24 22 23 24 25 26 27 2825 26 27 28 29 30 31 29============================== ==============================March 3 April 4============================== ==============================Sun Mon Tue Wed Thu Fri Sat Sun Mon Tue Wed Thu Fri Sat1 2 3 4 5 6 1 2 37 8 9 10 11 12 13 4 5 6 7 8 9 1014 15 16 17 18 19 20 11 12 13 14 15 16 1721 22 23 24 25 26 27 18 19 20 21 22 23 2428 29 30 31 25 26 27 28 29 30============================== ==============================功能要求:⑴输入任一年将显示出该年的所有月份日期,对应的星期,输出的格式如上表要求(注意闰年情况);⑵输入任意日期(包括年、月、日,格式有yyy/mm/dd、dd/mm/yyyy、mm/dd/yyyy、和yyyy,mm,dd、mm,dd,yyyy、dd,mm,yyyy六种基本情况),要求能够显示出该日期是本年的哪一周,是星期几。
6 航班信息管理问题描述:飞机航班系统的数据包括两部分:①航班信息:航班号、最大载客数、起飞地点、起飞时间、降落地点、降落时间,单价;②乘客信息:航班号、身份证号码、姓名、性别、出生年月、座位号。
乘客订票的主要方式是:乘客提出航班号、起飞地点、起飞时间、降落地点、订票数等订票要求,根据事先保存的航班数据决定乘客能否订票?只有全部满足了乘客的订票要求并且所订航班有足够的未订座位之后才能完成订票处理,并且修改该航班的未订座位数(每个航班的未订座位数的初始值就是该航班的最大载客数);否则,订票失败,并且给出不能订票的原因。
要求将航班数据保存在数据文件中,在处理时按航班的起飞地点建立不同的链表。
功能要求:⑴增加航班记录。
将新的航班记录增加到原有的航班数据文件中。
在进行处理时必须检查所要增加的航班记录是否存在,如果已经存在,应给出提示信息后停止增加;⑵航班取消。
如果某次航班的乘客数太少(已订票的少于本次航班最大载客数的10%),将取消该航班,但该航班的记录仍然保存在原有的航班数据文件中;⑶航班查询。
应该有以下几种基本的查询方式:按航班号、按起飞地点和起飞时间、按降落地点,按起飞地点和降落地点;⑷航班订票。
按上述问题描述中的乘客订票方式完成航班订票处理。
⑸设计一个菜单,至少具有上述操作要求的基本功能。
7学生成绩管理问题描述:设学生信息包括:学号、姓名、学期、每门课程的成绩(每学期的课程门数是不一样的) ,对学生的成绩信息进行管理。
实现要求:实现:学生信息的录入;修改;删除和查询,按学期、学号、成绩不及格等查询。
⑴输入学生的成绩信息,包含学号、姓名、性别等基本信息和各课成绩⑵显示全部学生各科成绩信息;⑶对各科成绩统计分析(总分、平均分、最高分、最低分、及格率等);⑷统计各科各分数段人数;⑸按学号或姓名查找并显示某个学生的各科成绩;⑹按课程成绩或总分由高到低排序显示;⑺更新某个学生的基本信息或课程成绩;⑻设计一个菜单,具有上述规定的操作要求、退出系统等最基本的功能。
8 运动会管理系统问题描述:校际运动会管理系统。
设有n个学校参加校际运动会,共有男子竞赛项目数m,女子竞赛项目数w。
每个学校可以参加所有竞赛项目,也可以只参加部分竞赛项目,每个学校对每个项目的参赛运动员不能超过4人,每个运动员最多只能参加3项单项比赛,团体赛不受限制。
各项目名次取法有如下几种:用户自定义:(各名次权值由用户指定)①参赛人数超过6人,取前5名:第1名得分 7,第2名得分 5,第3名得分3,第4名得分2,第5名得分 1;②参赛人数不超过6人,取前3名:第1名得分 5,第2名得分 3,第3名得分2;③团体项目的名次取法和上面相同,但分数加倍。
功能要求:⑴运动员报名登记,以学校为单位进行运动员报名登记,登记的限制要求按问题描述的要求;⑵参赛信息查询,查看参赛学校信息和比赛项目信息;⑶竞赛检录,每项比赛开始前完成参赛运动员的检录;⑷竞赛成绩登记,填写比赛名次,然后根据竞赛检录的运动员人数和上述的记分方式自动完成各学校的成绩登记并实时生成各学校的团体总分;⑸比赛成绩查询,可以按竞赛项目、参赛学校、参赛运动员查看比赛成绩;⑹竞赛成绩排序,以学校为单位,按总成绩的高低,分别排序输出每个学校的总成绩、男子总成绩、女子总成绩;⑺设计一个菜单,至少具有上述操作要求的基本功能。