vc++课程设计题目

时间:2024.4.20

VC++程序课程设计说明书

一、        设计任务与要求

《VC++程序课程设计》是计算机科学与技术各专业本科生在完成《VC++程序设计》课程学习后进行的一门专业实践课程,是培养学生综合运用所学知识解决专业相关问题的重要环节,是对学生实际工作能力的具体训练和考察过程。本次课程设计的题目均采用VC语言来开发。希望题目简单到学生可以独立完成,又可以达到锻炼学生编写复杂程序的课程设计目的。最重要的是希望能避免抄袭,让学生真正锻炼自我。要求每个学生必须参加,并完成如下各项课程设计任务:

1. 要求每个学生认真阅读本VC语言课程设计说明书,理解课程设计的目的和任务。

2. 要求学生通过自学理解和掌握本说明书附录2中给出的程序实例,读懂其中程序的设计功能,设计思想,设计结构,设计技巧,设计的不足等情况,提高阅读较大并且较为复杂程序源代码的能力,也可以通过实例理解本次课程设计要求的设计任务的规模和难度。

3. 要求每个学生根据自己的实际情况选择2个题目,实际动手完成这个题目,编写出程序代码,并调试通过。

4. 每个同学选择的2个题目,原则上不允许多名同学选择同一个题目。多名同学选择同样题目时,独立完成,程序代码不可相同。

5. 要求每个学生完成课程设计后撰写《VC++课程设计报告》,可以按照任务书后面附带的课程设计报告模版的格式实际撰写。

6. 要求每位学生必须在上机前做好充分准备,每次上机必须目的明确,必须事先编写好程序代码,然后在规定的时间和地点上机调试。

二、        学生选题原则

1.学生根据自身情况选择其中题目,抽取其中两道题目,原则不得选择同一类题目,作为课程设计选题,最终确定题目。

2. 允许学生在给出可供选择题目之外自己选择题目,但要经指导教师同意。

3.允许两名学生共同选择第二部分及第三部分的综合题目,并共同完成。

4.题目不可为同一类题目,应有算法和应用不同的题目。

三、    课程设计实施过程

    1.在课程设计开始时,公布此课程设计说明书。

2.教师根据需要安排合适的时间、地点进行答疑。

3.教师要认真检查学生完成的程序进展情况。

4. 教师要指导学生撰写符合规范的《VC++课程设计报告书》。

5.每个学生必须参加课程设计答辩,针对课程设计的内容回答提问。

   四、检查考核办法

首先检查完成后的程序能否正常运行和得出希望的结果,程序检查通过后再检查所撰写的《VC++课程设计报告书》, 最后参加课程设计答辩,根据报告的质量及面试的结果给出学生课程设计的成绩。

五、考核评分标准:

   1.完成质量较好,即可评定为优秀;完成质量尚可但有明显不足,可以评为良好;完成质量一般,成绩为中等;完成质量较差,成绩为及格;没有完成,成绩为不及格。

2. 成绩评定由指导教师提出初步建议;成绩评为优秀和不及格的,要参加由系组织的统一答辩,答辩组给出最后成绩。

3. 如果发现两名或更多同学的课程设计相同部分过多,特别是程序的源代码相同部分达到或超过90%,则认定为抄袭,成绩评定为不及格。如果发现与现有技术书籍或网上资料相同部分过多,特别是程序的源代码相同部分达到或超过80%,也认定为抄袭,成绩评定为不及格。允许参考同学的工作,允许参考现有技术书籍或网上的资料,但要有自己的不同或改进之处,可以利用已有程序的代码,但要自己重新组织,调试通过并对程序理解正确。

4.附录1中第四部分为加分题,每道题目可加10分。


附录1 供选择的C语言程序课程设计题目

  (一)算法设计类题目

1.横向绘制余弦曲线

    在屏幕上用‘*‘横向显示0~360度的cos(x)曲线。此题关键在于余弦曲线在0~360度的范围内,一行要显示两个点。考虑到cos的对称性,将屏幕的行方向定义为x,列方向定义为y,则0~180度的图形是左右对称的。若将图形的总宽度定义为62列,计算出x行0~180度时y点的坐标m,那么在同一行与之对称的180~360度的y点的坐标就应为62-m。程序中利用反余弦函数acos计算坐标(x,y)的对应关系。

2.绘制余弦曲线和直线

在屏幕上显示0~360度的cos(x)曲线与直线f(x)=45*(x-1)+31的迭加图形。其中cos图形”*”表示,f(x)用”+”表示,在两个图形交叉点处则用f(x)图形的符号。图形迭加的关键是要在分别计算出同一行中两个图形的列方向点坐标后,正确判断相互的位置关系。为此,可以先判定图形的交点,再分别控制打印不同的图形。

3.模拟人工洗牌

    编写一个模拟人工洗牌的程序,将洗好的牌分别发给四个人。

使用结构card 来描述一张牌,用随机函数来模拟人工洗牌的过程,最后将洗好的52张牌顺序分别发给四个人。

对每个人的牌要按桥牌的规则输出。即一个人的牌要先按牌的花色(顺序为梅花、方块、红心和黑桃)进行分类,同一类的牌要再按A、K、Q、J、…、3、2牌的大小顺序排列。另发牌应按四个人的顺序依次分发。

注:C++随机数函数有:

void srand(unsigned seed) 

4. 用户猜测藏物位置:计算机在n行n列(行号为0到n-1,列号为0到n-1)的“棋盘”的某一位置处“藏放一物件”(具体位置通过使用“rand()%10”来随机产生);用户通过输入行列号来“寻找”该物件;若没猜对时计算机要告诉用户与藏放物件的位置有多远(取整后的近似距离)。

5. 编程序,让计算机来猜测用户“暗记”的某张扑克牌:计算机从一副扑克牌(54张)中任意抽出27张,摆放在不同的三行上(每行9张),用户“暗记”某张纸牌,而后告诉计算机所“暗记”的那张纸牌处于哪一行中;之后计算机再两次将纸牌重新摆放,并让用户再回答两次相同的提问(那张纸牌在重新摆放后又处在哪一行上);此时计算机会将用户所“暗记”的那张纸牌给挑出来。

例如,程序执行后的屏幕显示结果可设计为(其中的前缀a、b、c、d代表四种不同的花色):
-------------------------------------------------------------
Line 1:   c-9   d-3   a-7   d-9   a-9   c-3   b-8   a-A   d-7
Line 2:  b-10   a-Q   d-6   b-4   a-3   b-9   b-K   c-A   d-8
Line 3: KING2   d-A   b-A   a-4   a-2   b-7   d-5   c-7   a-8
-------------------------------------------------------------
Remember a card, and tell me what line it reside in(1/2/3): 3
-------------------------------------------------------------
Line 1:   c-9   d-3   a-7  b-10   a-Q   d-6 KING2   d-A   b-A
Line 2:   d-9   a-9   c-3   b-4   a-3   b-9   a-4   a-2   b-7
Line 3:   b-8   a-A   d-7   b-K   c-A   d-8   d-5   c-7   a-8
-------------------------------------------------------------
What line the card you remembered reside in now (1/2/3) : 1
-------------------------------------------------------------
Line 1:   c-9  b-10 KING2   d-9   b-4   a-4   b-8   b-K   d-5
Line 2:   d-3   a-Q   d-A   a-9   a-3   a-2   a-A   c-A   c-7
Line 3:   a-7   d-6   b-A   c-3   b-9   b-7   d-7   d-8   a-8
-------------------------------------------------------------
What line the card you remembered reside in now (1/2/3) : 1
-------------------------------------------------------------
Your remembered card is : KING2
  

6. 编写程序求解骑士巡游问题:在n行n列的棋盘上(如n=5),假设一位骑士(按象棋中“马走日”的行走法)从初始坐标位置(x1,y1)出发,要遍访(巡游)棋盘中的每一个位置一次。请编一个程序,为骑士求解巡游“路线图”(或告诉骑士,从某位置出发时,无法遍访整个棋盘 — 问题无解)。

当n=5时,意味着要在5行5列的棋盘的25个“点”处,按骑士行走规则,依次将1至25这25个“棋子”(数码)分别摆放到棋盘上(摆满25个位置则成功,否则失败问题无解)。

例如,当n=5且初始坐标位置定为(1,1) — 即最左上角的那个点时,如下是一种巡游“路线图”。程序执行后的输出结果为:

(x1,y1)? => (1=>5, 1=>5) : 1 1

 1   6  15  10  21

 14   9  20   5  16

 19   2   7  22  11

 8  13  24  17   4

 25  18   3  12  23

提示:

(1)“棋盘”可用二维数组B表示。

(2)编制一个具有如下原型的递归函数solve,用于完成任务:从(i,j)点出发,做第k至第n*n(即n的平方)次的移动 — 将k直到n的平方这些数码按规则分别摆放到棋盘即数组B中,若成功则通过引用参数ok返回true,否则返回false。

void solve(int i, int j, int k, bool& ok);

(3)编制主函数,让用户输入作为巡游起点的初始坐标位置(x1,y1),在该处摆放“棋子”(数码)1,而后进行调用“solve(x1, y1, 2, ok);”来完成所求任务。

7. 编写程序对八皇后问题进行求解:在8行8列的棋盘上放置8个皇后,使任一个皇后都不能吃掉其他的7个皇后(注:皇后可吃掉与她处于同行或同列或同一对角线上的其他棋子),并将结果以某种方式显示出来。

例如,当求出下述的一个解时,可输出如下信息来表示该解(输出了表示摆放皇后的坐标位置以及“棋盘状态”— 棋盘中有皇后的位置放一个“Q”字符,其他位置为“+”字符)。

(1,1) (5,2) (8,3) (6,4) (3,5) (7,6) (2,7) (4,8)

Q + + + + + + +

+ + + + + + Q +

+ + + + Q + + +

+ + + + + + + Q

+ Q + + + + + +

+ + + Q + + + +

+ + + + + Q + +

+ + Q + + + + +

提示:

(1) 通过“int LineNum[9]; bool a[9], b[15], c[15];”说明具有全局作用域的4个数组。其中的:

LineNum[i]表示第i列的皇后要放的行位置(只用其中的列号1到8);

a[i]为true(i =1,2,…,8)表示第i行上尚未放皇后;

b[i]为true(i =0,1,2,…,14)表示第i条斜对角线上尚未放皇后(斜对角线指的是“/”状对角线,该对角线上各点的行列号之和i+j为一个常数);

c[i]为true(i=0,1,2,…,14)表示第i条反斜对角线上尚未放皇后(反斜对角线指的是“\”状对角线,该对角线上各点的行列号之差i-j为一个常数)。

从而当使用语句“if ( a[j] && b[i+j-2] && c[i-j+7] ) LineNum[i]=j;”时,可用于判断并实现:如果在第j行的第i列上放置皇后安全的话,则将一枚皇后放置到那儿。

(2)编制一个具有如下原型的递归函数solve,它负责往第i列开始的连续8-i+1列上均放上皇后,若成功则通过引用参数ok返回true(否则返回false)。

void solve(int i, bool& ok);

摆放皇后之后,若i=8即已放满时则递归出口;否则通过solve(i+1,ok);进行递归调用。

(3)编制主函数,首先初始化一个“空棋盘”,即将a、b、c数组的各元素均置为true(表示当前棋盘的8个行、15条斜对角线以及15条反斜对角线上都尚未摆放皇后)。而后执行调用语句“solve(1, ok);”,它负责往第1列开始的连续8列上均放上皇后,若成功则通过引用参数ok返回true(否则返回false)。

8. 编一迷宫游戏程序,迷宫生成有用户输入和程序自动生成两种方式(迷宫以矩阵表示),要求输出迷宫和走出迷宫的路径。

9. 编一棋盘游戏程序,人为一方,计算机为一方,人下时字符 * 将放在所指定的位置,而计算机下时字符 @ 将放在某一空格位置。行、列、或两对角线有连续三个相同字符一方为胜方,也有平局情况。要求能动态演示。

   

10.调车头

下面铁路线A段中,有n个车头,按图中所示的顺序编号为1,2,...,n。每个车头都可以在铁路上独立行驶,但约定,当B段或C段已有车头时,新进入这二段的车头号必须比该段中已有的车头号小。设计一个程序,调用递归过程,将A段中车头的顺序颠倒过来。

 

11.地图着色

地图上有不同国家(不同区域),每个国家都与其他一些国家邻接。现要求对地图着色,使所有的国家与它的邻接的国家有不同的颜色。通常由四种颜色就已足够。

提示:可采取试探的方法逐步逼近最后解,即按某种模式生成一个部分解,检查它是否合格。如为合格,在扩展这个部分解向最后解逼近,否则为不合格,不管如何扩展这个部分解都不会得到最后解。这时必须放弃已生成的部分解中的某些结果,“回朔”到先前的部分解,在生成一个部分解,直到获得最后解。这种算法称为回朔算法。以着色一个六个区域的地图为例。

区域邻接关系

表中数据正是所需输入的数据,可以用一个n×n的矩阵来存放(n为区域数目)。0表示邻接区域的结束。

设着色的颜色次序为红、蓝、绿、黄。

对于区域起首先着成红色。对于区域2,因与区域1邻接,所以不能再着红色,而只能着第二种颜色,即蓝色。同理区域3着绿色,区域4着黄色,区域5着蓝色,区域6由于与区域1、3、4和5邻接,所以四种颜色都不合适。这时,必须回溯到区域5,它不能是已着好的蓝色,也不能着蓝色的下一种颜色绿色,因为这会使它与区域3同色,再选下一种颜色,即黄色,它与区域1和3不同色。所以区域5退去蓝色,改着黄色。此后,区域6可着蓝色。最后,得到的解为各区域的颜色依次为红、蓝、绿、黄、黄、蓝。

12. 设计一文件阅读器, 可以一次一屏(20或22行)显示文件内容, 每次显示完一屏内容后, 提示使用者键入一控制字符以控制屏幕翻滚。如字符'n'显示下一屏, 字符'p'返回上一屏, 字符'q'结束阅读。

13. 编写程序,从键盘读入一个文本文件名字(可带路径),为该文件中的所有单词建立一个词汇索引。按字母顺序显示所有单词(仅一次),后面紧跟着它们所在的行号。大写与小写字母被认为是相同的。例如,对于下列的输入文件:

To be or

not to be,

that is the question.

产生的词汇索引如下:

be            1  2

is            3

not           2

or            1

question      3

that          3

the           3

to            1  2

(二)综合类题目

14.有理数运算

问题描述

有理数是一个可以化为一个分数的数,例如2/3,533/920,-12/49都是有理数,而就为无理数。在C++中,并没有预先定义有理数,需要时可以定义一个有理数类,将有理数的分子和分母分别存放在两个整型变量中。对有理数的各种操作都可以用重载运算符来实现。

基本要求

定义并实现一个有理数类,通过重载运算符+、-、*、/对有理数进行算术运算,通过重载运算符==实现判定两个有理数是否相等。写一个优化函数,它的作用是使有理数约去公分母,也即是使保存的有理数分子和分母之间没有公约数(除去1以外)。此外,还要定义一个将有理数转换为实数的函数,再加上构造函数和有理数输出函数。

测试数据

在应用程序中,创建若干有理数对象,通过带参数的构造函数使得各有理数对象值各不相同,然后分别进行各类运算,输出运算结果,检验其正确性。

实现提示

设有两个有理数a/b和c/d,则有:

(1)   有理数相加  分子=a*d+b*c;分母=b*d

(2)   有理数相减  分子=a*d-b*c;分母=b*d

(3)   有理数相乘  分子=a*c;    分母=b*d

(4)   有理数相除  分子=a*d;    分母=b*c

优化函数在创建有理数对象时应执行,在执行其它各种运算之后也需执行它,这样可保证所存储的有理数随时都是最优的。对于判断两个有理数是否相等,由于在对有理数进行各种运算后都对其进行优化,所以判定两个有理数是否相等只需判定它们两个的分子和分母分别相等即可。

15. 通讯录管理

问题描述

编写一个简单的通讯录管理程序。通讯录记录有姓名,地址(省、市(县)、街道),电话号码,邮政编码等四项。

基本要求

程序应提供的基本基本管理功能有:

1) 添加:即增加一个人的记录到通信录中

2) 显示:即在屏幕上显示所有通信录中的人员信息,应能分屏显示。

3) 存储:即将通讯录信息保存在一个文件中。

4) 装入:即将文件中的信息读入程序。

5) 查询:可根据姓名查找某人的相关信息,若找到显示其姓名、地址、电话号码和邮政编码。

6) 修改:可修改一个人的除姓名外其它信息。

测试数据

程序应输入不少于10个人员的通讯录信息,应考虑到人员可以同名的情况。

实现提示

程序可用一个单向链表来管理人员信息,每个人员的姓名,地址,电话号码和邮政编码用一个类Cperson来实现,作为链表的值指针指向这些Cperson类对象,通过链表的遍历可以操作这些数据。

16.商品销售统计

问题描述

编写商品销售统计程序,商品的信息有:商品的名称,计量单位(重量或件),单价。所有商品的信息事先已存入计算机,屏幕上显示所有商品的名称,选择商品名,输入商品计量单位(如重量,件数等),根据单价算出总价。客户一次购物可能购买多种商品,程序应计算出客户应付的钱款数。

基本要求

程序分为两个部分:第一部分用于输入商品的信息并允许修改和删除;第二部分实现销售统计。程序运行时由用户选择进入哪一部分功能,并能在运行时在两部分之间切换。第二部分运行时,首先显示所有商品名称及代码(商品数目较多时,应考虑分屏显示),用户输入商品代码及商品重量或件数,用户一次操作可输入若干商品的购买信息,然后输入一个特殊的代码(如-1)表示本次购物结束。此时。程序计算出应付钱款数并显示。

测试数据

程序应输入不少于10种商品的信息,并进行模拟运行。

实现提示

本程序的商品信息管理可采用与课程设计题目二类似的数据结构,既定义一个商品类,每种商品作为商品类的实例(对象)存储在链表节点中。

17. 研究生初试录取

问题描述

研究生考试课程为4门,其中数学、外语、政治为统一命题,而专业基础课则根据不同的专业由招生学校自行命题。国家对初试录取分数有总分要求(如某一年要求4门课总分应达到310分),另外还有对每门课的最低分数要求(如总分为100的试卷最低应达到40分,总分为150的试卷最低应达到65分)。编程统计初试合格的人数,并按总分由高到低的顺序输出合格考生的信息。

基本要求

程序运行时首先要求输入:考生姓名,准考证号,报考专业,是否应届生,4门课程(政治、数学、外语、专业基础课)成绩。这些原始数据应保存到一个文件中。然后输入:录取的总分要求,各课程的最低分数要求。输出要求:过线考生的姓名,准考证号,报考专业,是否应届生,4门课程(政治、数学、外语、专业基础课)成绩及总分,这些信息应存放到另一个文件中。

测试数据

程序应输入不少于10名考生的信息,其中应届生和历届生分别有若干名,并且都有合格和不合格的情况。

实现提示

可定义一个考生类存放有关信息和实现相应的操作。分数线数据(总分要求和各门课程的要求)可定义另外的类来存放,但应能被考生类及其派生类直接访问。

18. 足球联赛积分

问题描述

足球联赛采用主客场双循环赛制,胜一场得3分,平局各得1分,负一场得0分,联赛排名以积分多者在前,当两队(或多队)积分相同时,则净胜球(即进球数与失球数之差)多者在前,若净胜球相同,则进球数多者在前,若仍相同,则抽签或踢附加赛决定名次(这在联赛结束后进行,联赛未结束则两队名次并列,本程序不做这方面要求)。试编一程序统计最近一轮比赛后,各队积分及排名。

基本要求

设积分表结构如下:队名(不超过15个字符),已比赛的场数,赢的场数,平的场数,负的场数,进球数,失球数,积分。积分表放在正文文件中。最近一轮的结果从键盘输入,其形式为:主队名(可用代码),客队名(可用代码),主队得分(即进球数),客队得分(即进球数)。程序应根据此轮结果修改各队的积分和名次,所得的最新记分表仍在原积分文件中并同时在屏幕上显示。

测试数据

可选择我国当年的甲A或甲B联赛的数据输入,并检查与报章公布的数据是否一致。

实现提示

定义一个球队类,每个球队是均是此类的对象。由于联赛中参赛的队伍数是固定的,因此可用对象数组来实现(当然也可以用链表结构)。每输入两个队的比赛成绩,则相应的队的有关数据(比赛场数,赢的场数,平的场数,负的场数,进球数,失球数,积分等)即可进行修改,比赛成绩录入完成,调用联赛排序方法(对象数组作为参数)排出名次并输出。

19. 银行账户管理程序

问题描述

设计一个银行账户管理程序,账户的信息有账号(唯一)、姓名、余额、身份证号码、单位、电话号码、地址等,允许用户进行如下操作:开户、销户、存款、取款、转账、查询,一个用户可以有多个户头,账户的数值没有上限。

基本要求

   程序运行时,可以由用户选择进行何种操作,开户操作要求输入用户信息后自动获取账号,用户销户后账号被回收,并且该账号可以继续分配给其它账户,不允许用户透支,根据姓名或账号可以进行用户的信息查询,所有的账户信息应存放到一个文件中,可以随时的访问和更新。

测试数据

程序应输入不少于10人的账户信息,应考虑到人员同名的情况。

实现提示

可定义一个账户类存放账户信息以及执行相应的操作,可以用一个链表类来管理账户。

20. 模拟计算器程序

问题描述

设计一个程序来模拟一个简单的手持计算器。程序支持算术运算+、-、*、/、=、以及C(清除)、A(全清除)操作。

基本要求

程序运行时,显示一个窗口,等待用户输入,用户可以从键盘输入要计算的表达式,输入的表达式显示在窗口中,用户键入’=’ 符号后,窗口显示出结果。

测试数据

程序输入不少于5种不同的表达式进行测试。

实现提示

可定义一个计算器类,该类包括两个组件对象,一个计算引擎和一个用户接口,用户接口对象处理接受的键盘输入信息,并显示答案,计算引擎对象对给出的数据执行相应操作,并存储操作的结果。

选作内容

如果用户输入的表达式不合法,可以判别出来并给出相应的错误提示。

21. 设计一个排课程序

问题描述

每位教师都有教学工作量,教师对他所希望讲授的课程表达为一个期望值,1,2…,n,其中1位最高的期望值。课程也有优先级,1,2…,n,用来决定将课程分给教师的顺序,其中1时最高的优先级。设计一个程序针对某些课程给某些教师进行排课。

基本要求

程序运行时,用户输入教师信息(姓名、教师号、工作量)、课程信息(课程名、课程号、周学时、总学时、优先级)、教师对所希望讲授课程的期望值以及教学工作量等相关信息,所有信息应保存在文件中,程序根据课程的优先级以及教师对课程的期望值进行排课。为了公平起见,程序随机分配课程,如果10门课程都有优先级1,程序以随机的顺序将这些课程分给教师,如果10位教师对某门课程的期望值为1,程序应从10位教师中随机选择一个。最后输出排课情况,即某位老师上某门课程,以及某位老师的工作量。

测试数据

程序应能实现对不少于20门课和10个教师的排课,并且使每个教师的满意度达到最大,不存在工作量不满的教师以及未分配的课等情况。

实现提示

可定义一个教师类存放教师信息,所有教师的信息可以用链表存储;定义一个课程类存放课程信息,所有课程的信息可以用链表存储;定义一个排课类进行排课,排课类可以访问课程和教师信息。

22. 设计一个Database类

问题描述

设计一个Database类。Database类是一个表的集合,而表又由行和列组成。例如,下面的雇员信息表包含三个记录,每个记录有四个字段( Employee、Name、Department和Boss)。

基本要求

能够完成对数据库的基本操作;包括创建数据库,实现对数据库里面的表的添加,删除;以及能够完成对表结构的修改(如添加或删除字段),以及对表中的记录进行添加和删除;能够完成对使用适当的查询语言从一个或多个表中查找相关信息。

测试数据

可以选取高校人员(教师、学生、职工等)数据库作为测试数据

实现提示

Database 类的公有接口包含如下数据成员:

? 创建一个表。

? 通过增加或删除字段修改表结构。

? 删除一个表。

? 在表中增加一个记录。

? 从表中删除记录。

? 用适当的查询语言从一个或多个表中查找信息。

23. 电煤气管理系统

问题描述

设计一个水电管理信息系统,能够对高校的水电费用进行管理,包括了登记费用,查询费用,以及住户信息管理等。在设计时要考虑到学生和教工在用水电时的不同,学生可以免费使用一定额度的水电,超过这个额度的随便以后必须自费使用,且自费部分水电费的价格标准要高于教工的收费标准(主要是节约资源)。

基本要求

l  实现对用户信息的录入

l  实现水电煤气数据的录入

l  计算并查询用户应缴费用

l  查询未缴纳费用名单

测试数据:

可选用小区物业管理部门的数据,也可采用手工输入不少于10个用户信息的数据。

实现提示

l  用户基本信息类,教工用户信息类,学生用户信息类

l  收费标准类,该类存储水电煤气标准单位的收费标准,如:煤气,1.0元/立方米;

l  不同类型人员水、电、煤气信息类,这些类可以包括水表,电表,煤气表ID,抄表时间,上次抄表时间,本次抄表时间,上次抄表度数,本次抄表度数,本次使用度数,费用,是否缴费标记等信息。

l  在实现的时候考虑继承和多态技术的合理使用。

24. 对参赛结果分数进行处理:参赛选手n人(n>1),评委m人(m>2),评委给每一选手打一个分数score(分数score为小于等于10的一个正实数)。选手的最后得分lastScore计算方法为

(1)m<9时,去掉一个最高分和一个最低分后另m-2个得分的平均值。

(2)m≥9时,去掉两个最高分和两个最低分后另m-4个得分的平均值。

假设事先已经建立了text型的数据文件f1.txt,其中依次记录着n个选手的编号(一个正整数)、姓名(一个字符串)以及m个评委给出的得分。

请编制程序,依次从数据文件f1.txt中读入n个选手的有关信息,而后按上述规定方法计算出每一个选手的最后得分,而且往屏幕上以及另一个text型文件f2.txt中同时输出如下形式的结果信息。

假设参赛选手人数n=5,评委人数m=7,磁盘文件f1.txt中的初始数据为:

1 zhangjin 8.8 9.3 7.9 8.7 8.9 9.7 9.2

2 lintao 8.9 8.2 8.6 8.8 8.5 9.1 9.3

3 guojian 8.9 8.4 8.7 8.6 8.6 8.4 8.6

4 maling 7.9 8.3 8.5 8.6 8.5 8.9 8.3

5 liuyifan 9.5 9.1 9.8 9.2 9.0 9.5 8.9
那么,程序执行后,屏幕显示结果以及磁盘文件f2.txt中的结果均应该为:
----------------------------------------------------------
 参赛号    姓 名     最高分    最低分   累积分    最后得分
----------------------------------------------------------
     1  zhangjin       9.7       7.9      44.9        8.98
     2    lintao       9.3       8.2      43.9        8.78
     3   guojian       8.9       8.4      42.9        8.58
     4    maling       8.9       7.9      42.2        8.44
     5  liuyifan       9.8       8.9      46.3        9.26
----------------------------------------------------------
思考:可进一步考虑找出比赛的第1至第k名,也在屏幕以及f2.txt中同时输出相关的结果信息(k小于等于n,并规定若多个选手最后得分相同时,则有效分(即已删除原来的最高分后)中最高分高者名次优先)。

25. 设计一个类CStudent,类中包含一个学生的基本数据如下:

编号,姓名,性别,年龄,数学成绩,计算机成绩,外语成绩。

并假设编号为整数,且从1号往后连续编码;姓名为字符串,性别为字符。如:

1 LiPing m 18 89 98 94

请采用binary文件形式,并使用随机读写处理方式,对自定义CStudent类的对象数据进行存储与读写处理(即是说,总按具有连续编码的编号num为“序”来对文件中的各对象数据进行随机读写处理)。并设计该类的成员函数,而且对输出运算符“<<”进行重载,使该运算符能够完成将一个学生的信息输出到屏幕上。要求成员函数完成以下功能:

(1) 从键盘输入一个学生的有关信息,并将它们存入到数据文件中(按编号来确定写出位置)。

(2) 按编号对学生信息进行检索并将检索结果显示在屏幕上。

(3) 按姓名对学生信息进行检索并将检索结果显示在屏幕上。

(4) 计算某编号学生的总成绩与平均成绩。

(5) 列出所有总成绩超过n分的性别为s同学的有关信息(n,s由用户从键盘输入)。

26. 某商场有如下的几种货品:衬衣、鞋子、帽子、裤子、冰箱、电视、立柜、壁橱、沙发。每一种货物都有详细的说明信息。

衬衣:布料、尺寸、单价、产地、库存量、所属货柜;

鞋子:皮料、尺寸、单价、产地、库存量、所属货柜;

帽子:布料、样式(平顶或尖顶)、尺寸、单价、产地、库存量、所属货柜;

裤子:布料、尺寸、单价、产地、库存量、所属货柜;

冰箱:制冷类型、样式(二门或三门)、颜色、尺寸、单价、产地、库存量、重量、所属货柜;

电视:样式(彩色或黑白)、颜色、尺寸、单价、产地、库存量、重量、所属货柜;

立柜:木料、颜色、尺寸、单价、产地、库存量、所属货柜;

壁橱:木料、颜色、尺寸、单价、产地、库存量、所属货柜;

沙发:木料、皮料、颜色、尺寸、单价、产地、库存量、所属货柜;

对这些商品的操作有:

新商品的录入,商品的进库,商品的出库,商品的调价,所属货柜的管理,库存的统计,总价格的计算,产地的统计。

要求自行设计数据结构,用类结构将上述的货品表示出来。在上一步的基础上,将上述的商品管理计算机化,完成操作要求的功能。

27. 定义并实现一个整数集合类int_set,集合类中cur_size表明当前集合中有几个整数,集合中最多含max_size个整数,存放集合元素的数组是动态的。要求提供的方法有:

(1)增加一个整数到集合中;

(2)从集合中去掉一个元素;

(3)判断一个元素是否在集合中;

(4)重载<<运算法,输入集合;重载>>运算符输出集合;

(5)分别实现集合的交、并、差运算。

28.班级人事管理系统

功能要求:

(1) 设计一个人事管理的People(人员)类。考虑到通用性,这里只抽象出所有类型人员都具有的属性:name(姓名),number(编号),birthday(出生日期),id(身份证号)等等。其中“出生日期”定义为一个“日期”类(具有属性):year(年),month(月),date(日)内嵌子对象。用成员函数实现对人员信息的录入和显示等必要的功能操作(自己独立思考设计)。要求包括:构造函数和析构函数,拷贝构造函数,内联成员函数。

(2) 从people(人员)类派生出student(学生)类,添加属性:班号 char chassNO;从people(人员)类派生出student(学生)类,添加属性:职务 char principalship,部门 char department;.从 student类中派生出graduate(研究生)类,添加属性:专业 char subject,导师 teacher adviser(为(教师类内嵌子对象));从graduate类和 teacher类派生出TA(助教生)类,注意虚基类的使用,重载相应的成员函数。

(3) 对people类重载“= =”运算符和“=”运算符,“= =”运算符判断两个people类对象的id属性是否相等;“=”运算符实现people类对象的赋值操作。

(4) 定义一个对people类对象数组按编号排序的函数,一个按编号查找people对象的函数。

29.课程设计选题管理系统

设计学生类;课程设计题目类(序号,题目,人数,描述);每个题目限两个人选;要求使用面向对象编程进行模拟课程设计选题。主要包括下列模块:

 1. 新增、修改、删除课程设计题目;

 2. 新增、修改、删除学生信息;

 3. 查询课程设计内容;

 4. 课程设计选题;

30.小型公司工资管理系统

一〉题目要求

(1)公司主要有4类人员:经理、技术员、销售员、销售经理。要求存储这些人的职工号、姓名、月工资、岗位、年龄、性别等信息。

(2)工资的计算方法:

A.经理:固定月薪为8000;

B.技术员:工作时间*小时工资(100元每小时);

C.销售员:销售额*4%提成;

 D.销售经理:底薪(5000)+所辖部门销售额总额*0.5%;

(3)输入数据要求每类人员不能少于4人,并按以下格式输出:

职工号 姓名 性别 年龄 岗位 工资 排名

(4)菜单要求:要有一个菜单,用于选择各项功能,其中

1) 数据录入:输入各种数据;

2) 数据统计:各销售经理的工资计算及最终按工资进行的冒泡排序;

3) 数据打印:打印上述表格;

4)数据备份:把相关数据写入文件;

5)退出:退出本系统;

31.列车车次管理系统

实现简单的列车车次管理系统,可以对列车的车次进行简单的增加、删除、修改、查找等功能,乘客还可以预订车票,管理员还可以查找乘客的信息等等功能。

基本功能描述:

乘客:

1.查询车次情况(按照车次号、发车时间、到站时间等)。

2.根据已有的车次预定车票。

3.显示全部车次情况。

管理员:

1.查询车次情况(按照车次号、发车时间、到站时间等)。

2.增加,修改,删除车次情况,显示全部车次情况。

3.删除乘客的信息,查找乘客信息(按照身份证),显示全部乘客的信息。

32.

(三)注释并改进程序题目

1. 三子连珠游戏

该程序是三子连珠游戏,棋盘为3X3,3个棋子连起来即为赢。输入参数时,若输入的数字超出边界或在已有棋子的地方再输入,则提示出错,要求重新输入。

改进要求:

1、将程序改写成类

2、将棋盘扩充为4X4

3、统计输赢结果并打印输出

4、选做:使游戏更生动。

2.猜单词游戏

    一个猜单词游戏。两人游戏时,由一个玩家给出一个单词,在人与计算机游戏时,由计算机给出一个单词,另一个玩家根据组成单词的字母个数猜出单词,猜的次数可以指定,若猜不中,显示一个上吊的人形。

    改进要求:

    1、将猜单词的函数与相应的数据封闭到类中,并改写程序,使程序简化。

    2、根据所猜单词的字母个数,给出指定几率的提示字母,显示于单词中的正确位置。

    3、在进入猜单词的过程后,首先显示菜单询问是开始猜单词还是修改设置,默认的修改次数为4,默认显示字符的几率为20%,若要修改这个设置,在显示菜单中选择设置选项进行修改。

    4、在人人对抗时,一个玩家给出单词时,单词不显示在屏幕上,字符用“*”号显示。

    5、猜单词时,输入一个单词,判断函数改为判断输入单词的字符是否与所猜单词一一对应,将猜中的字符显示出来。

    6、在人机对抗时,可以选择随机读取单词,也可以选择向单词库输入单词,同时,将单词库中单词的个数显示出来,并根据单词库中单词个数的多少决定有机选取的范围。

3.对抗游戏

    一个对抗游戏,根据随机产生的数字决定双方的输赢。

    改进要求:

    1、当双方进行对抗时,游戏者可根据自身的牌点决定是否继续下注,例如拿到A,把握增大,则在计算机的牌点出来之前加大赌注,但不超过5点。

    2、将双方牌点的比较扩大为两张牌点之和,若出现一组对子,则对子牌点大于任何单牌,若双方均为对子,则比较牌点之和。

4.字符串操作

    通过多种成员函数的定义和运算符的重载,实现字符串的各种直接操作,如:去掉串首、串尾与子串相同的字符,子串在主串中的定位,用新子串更换主串中的指定子串,比较字符串的大小,字符串的连接等。

    改进要求:

    1、将主函数main中的输出语句printf改为c++中的输出语句。

    2、程序中对字符串的处理函数均用到字符数组sAns,它占用了大量的存储空间,试用动态分配存储空间的方法改写所有的函数,使之避免使用预先定义的长度很大的数组;并增加类的析构函数,删除动态分配的存储空间。

    3、新增运算符重载函数,重载-,-=运算符,实现字符串的删除操作,并根据返回值判断操作是否成功。

    4、新增成员函数void DelRepeat(),实现在原字符串中删除相邻的重复字符的功能。

    5、新增成员函数int AddStart(FString str, int start),实现将字串str插入到原字符串中从第start字符开始位置上,操作正确返回1.

    6、改写main函数的结构,界面为菜单形式,根据菜单选项来验证类中所定义的各种成员函数及操作符重载函数的正确性。

5、工资管理

       这是一个员工工资管理程序。工资管理的数据文件中存储有员工姓名和工资,该程序可以录入、显示、修改、删除、查找员工的姓名和工资。

       改进要求:

       1、用类的形式改写程序,将程序中的工资数据用链表的形式存放,定义一个链表类,封闭主要的操作函数。

       2、显示、修改、删除数据项是大小写通用。

       3、工资数据按工资值的大小进行排序存放。

       4、修改、删除数据前增加提示信息,用户确认后才能进一步操作,否则操作取消。

       5、增加程序的文件输出输入功能,在执行程序中首先将工资数据从文件中读出再进行管理,在程序结束时能将工资数据保存在原文件中。

6、物品库存管理

       用文件系统实现的物品库存管理程序。一种商品的品种里包括三个品牌,以品种为单位,可以实现商品品种的添加、删除、查找、显示等功能。

       改进要求:

       1、组成商品品种的品牌不限数量,设置一个最大值(比如10),增加一个成员变量指示品牌的具体数量。商品品种的数量是每个品牌的数量之和。

       2、设计输出每日进货与出货的统计表,要求进货与出货分别为两个文本文件,清单上列出进出货物的时间、品种描述、具体品牌的进出货数量,如果是出货清单,在每笔出货的清单后还要有该次提取货物的总价格。

       3、商品品种以品种代码的顺序存放。

7、个人财政支出管理

       个人财政支出管理程序,将个财务的目标及当前存款、支出保存下来,可以随时更新,查看,比较盈余与目标的差距。

       改进要求:

       1、将收支的数据与相应的函数封装到类中,并改写主程序,使程序结构化。

       2、增加保存每笔收支的记录,并对每笔记录增加日期录入,按日期顺序保存、查看记录。将所记录放入一个文件中,每次运行程序时,首先打开这个文件,程序运行完毕时将更新的记录放回文件中。

       3、完善程序,补充类中数据成员盈余(dlBalance)的计算和输出,要求每笔收入和支出都要重新统计当前情况下的盈余数目。

       4、增加程序监控功能,当输入时间发生错误(如月数超过12等),要求重新输入正确的时间;当结余数目为负数时,输出信息,警告已经超支!

8、电话簿管理

       一个电话簿管理小程序。利用文本文件存储电话簿数据,具有添加、删除、显示和查询联系人电话号码的功能。

       改进要求:

       1、将电话簿数据和相应的函数封装在类中,改写程序使之结构化。

       2、增加记录修改功能,能选择修改用户的姓名、电话。

       3、增加录入时间的显示及存储。

       4、增加默认的查询方式,即查询时只输入姓名的首字母,所有符合这一条件的电信资料均在屏幕上显示。

9、时间和日期

       定义了日期类,时间类和日期时间综合类,重载了+,-,++,--,=,>=, <=,= =, !=等运算符,可以设置时间、日期,比较时间和日期的大小,进行时间、日期对象的运算,并输出多种格式的结果。

       改进要求:

       1、原程序日期类中输出星期几的函数有错误,不能输出星期五,修改程序,将错误改正,所有输出日期的结果中都要有星期的显示。

       2、在日期类cDate_t中重载运算符+,实现一个日期对象加上天数得到一个新的日期;重载运算符-,实现一个日期对象减去天数得到一个新的日期。修改日期对象减去日期对象的重载运算符-,结果不是另一个日期对象,而是天数,所有运算应考虑闰年处理。

       3、在时间类cTime_t中重载运算符+,实现一个时间对象加上分钟得到一个新的时间;重载运算符-,实现一个时间对象送去分钟得到一个新的时间。修改时间对象减去时间对象的重载运算符-,结果不是另一个时间对象,而是分钟数,同时应考虑结果与加数是否是同一天,若不是,应在结果中予以说明。

       4、修改综合类CTDmanage的结构,重新定义为日期和时间类的派生类,同样定义构造函数、各种运算符重载函数,实现综合类对象的比较,综合类对象加上分钟等于一个新综合类对象,综合类对象减去分钟等于一个新综合类对象等,并重载输入输出函数。

       5、修改main函数结构,采用菜单选项方式,逐个测试三个类中定义的各种函数和运算符。

10、日期格式处理

       程序能处理诸如2-12-2004或2/12/2004等格式的日期输入,并能进行日期的加法计算,输出日期的字符串形式,如1-MAR-2003,同时还能进行两个日期的大小比较,返回两个日期相差的天数及月份数。

       改进要求:

       1、将日期加天数的成员函数void AddDays(int days)改为重载+运算符。

       2、将计算两个日期相差天数的成员函数int FindDifferrnceInDays(DateFormatter)改为重载-运算符。

       3、设计重载运算符-的函数,实现日期对象减去天数的功能。

       4、设计重载运算符++,--的函数,实现日期对象天数自加、自减的功能。

       5、设计重载输入输出流函数,实现日期对象的输入输出操作,要求输入能自动识别多种格式的日期方式,若日期数据有错(如输入的月份为13月等)能自动予以提示并重新输入,输出时能同时输出各种格式的日期。

       6、修改main函数结构,采用菜单选项的形式,分别测试成员函数和重载运算符函数的功能。

(四)加分题目(本部分每题加10分)

1、 倒序数是将一个阿拉伯数的各位上的数字以逆序的形式写成的数。

该阿拉伯数的第一位变成最后位,最后位变成第一位。例如数1245被写成5421。注意产生的新数字前边所有的数字0是被略去的。倒序数的尾部无多余的数字0。请将阿拉伯数转变为倒序数。

输入

输入的第一行仅有一个正整数n,表示有n组测试数据。接下来有n行,每一行是一组测试数据,长度不超过100。每一行上的字符串表示一个非负整数,它是你需要转换的数。

输出

对每一组测试数据在一行上输出倒序数,该倒序数中前导的数字0被略去了。

输入样例                              输出样例

3                                    

24                                    42

43400                                 434

305                                                        503                

2、 对一个正整数n,求出n!中末尾0的个数。

输入

输入有若干行。每一行上有一个整数T,是测试数据组数,接着有T行,每一行包含一个确定的正整数n(n≤1000000000)。

输出

对输入行中的每一个数据n,输出一行,其内容是n!中末尾0的个数。

输入样例                              输出样例

3                                    

3                                     0

100                                   24

1024                                  253                

3、给定两个字符串a和b,定义式子a*b表示两个字符串的连接。

例如a=“abc”,b=“def”,则a*b=“abcdef”。如果将连接看成乘法,则按照普遍的方法,一个非负整数的幂表示为:a0=“”(the empty string),

a(n+1)=a*(an)。

输入

输入字符串s,每组样例一行,s为可打印字符。s的长度在1—1000000之间。最后一组数据后为句号(.)。

 输出

每个字符串s输出最大的n满足s=an,其中a为任意字符串。

输入样例                              输出样例

   abcd                                  1

   aaaa                                  4

   ababab                                3                   

4、 若两个正整数的和为素数,则这两个正整数称之为“素数伴侣”。

如2和5、6和13,它们能应用于通信加密。现在密码学会请你设计一个程序,从已有的N(N为偶数)个正整数中挑选出若干对组成“素数伴侣”,挑选方案多种多样,例如有4个正整数:2,5,6,13,如果将5和6分为一组中只能得到一组“素数伴侣”,而将2和5、6和13编组将得到两组“素数伴侣”,能组成“素数伴侣”最多的方案称为“最佳方案”,当然密码学会希望你寻找出“最佳方案”。

输入

输入文件的第一行有一个正偶数N(N≤200),表示待挑选的自然数的个数。第二行给出N个不超过30000的正整数,相邻的两个数之间用一个空格分开。

输出

对每个正整数,输出一个整数K,表示你求得的“最佳方案”组成“素数伴侣”的对数。

输入样例                              输出样例

4                                                            2

2    5  6  13                                              

5、假设有两种微生物 X 和 Y

    X出生后每隔3分钟分裂一次(数目加倍),Y出生后每隔2分钟分裂一次(数目加倍)。

    一个新出生的X,半分钟之后吃掉1个Y,并且,从此开始,每隔1分钟吃1个Y。

    现在已知有新出生的 X=10, Y=89,求60分钟后Y的数目。

    如果X=10,Y=90  呢?

    本题的要求就是写出这两种初始条件下,60分钟后Y的数目。

6、某电视台举办了低碳生活大奖赛。题目的计分规则相当奇怪:

    每位选手需要回答10个问题(其编号为1到10),越后面越有难度。答对的,当前分数翻倍;答错了则扣掉与题号相同的分数(选手必须回答问题,不回答按错误处理)。

    每位选手都有一个起步的分数为10分。

    某获胜选手最终得分刚好是100分,如果不让你看比赛过程,你能推断出他(她)哪个题目答对了,哪个题目答错了吗?

    如果把答对的记为1,答错的记为0,则10个题目的回答情况可以用仅含有1和0的串来表示。例如:0010110011 就是可能的情况。

你的任务是算出所有可能情况。每个答案占一行。

7、题目标题: 高斯日记

    大数学家高斯有个好习惯:无论如何都要记日记。

    他的日记有个与众不同的地方,他从不注明年月日,而是用一个整数代替,比如:4210

    后来人们知道,那个整数就是日期,它表示那一天是高斯出生后的第几天。这或许也是个好习惯,它时时刻刻提醒着主人:日子又过去一天,还有多少时光可以用于浪费呢?

    高斯出生于:1777年4月30日。

        在高斯发现的一个重要定理的日记上标注着:5343,因此可算出那天是:1791年12月15日。

    高斯获得博士学位的那天日记上标着:8113  

    请你算出高斯获得博士学位的年月日。

提交答案的格式是:yyyy-mm-dd, 例如:1980-03-21

请严格按照格式,通过浏览器提交答案。

注意:只提交这个日期,不要写其它附加内容,比如:说明性的文字。

8、标题: 马虎的算式

小明是个急性子,上小学的时候经常把老师写在黑板上的题目抄错了。

 有一次,老师出的题目是:36 x 495 = ?

 他却给抄成了:396 x 45 = ?

 但结果却很戏剧性,他的答案竟然是对的!!

 因为 36 * 495 = 396 * 45 = 17820

类似这样的巧合情况可能还有很多,比如:27 * 594 = 297 * 54

假设 a b c d e 代表1~9不同的5个数字(注意是各不相同的数字,且不含0)

    能满足形如: ab * cde = adb * ce 这样的算式一共有多少种呢?

请你利用计算机的优势寻找所有的可能,并回答不同算式的种类数。

满足乘法交换律的算式计为不同的种类,所以答案肯定是个偶数。

9、标题: 黄金连分数

    黄金分割数0.61803... 是个无理数,这个常数十分重要,在许多工程问题中会出现。有时需要把这个数字求得很精确。

    对于某些精密工程,常数的精度很重要。也许你听说过哈勃太空望远镜,它首次升空后就发现了一处人工加工错误,对那样一个庞然大物,其实只是镜面加工时有比头发丝还细许多倍的一处错误而已,却使它成了“近视眼”!!

    言归正传,我们如何求得黄金分割数的尽可能精确的值呢?有许多方法。

    比较简单的一种是用连分数:

                  1

    黄金数 = ---------------------

                        1

             1 + -----------------

                          1

                 1 + -------------

                            1

                     1 + ---------

                          1 + ...

    这个连分数计算的“层数”越多,它的值越接近黄金分割数。

    请你利用这一特性,求出黄金分割数的足够精确值,要求四舍五入到小数点后100位。

    小数点后3位的值为:0.618

    小数点后4位的值为:0.6180

    小数点后5位的值为:0.61803

    小数点后7位的值为:0.6180340

   (注意尾部的0,不能忽略)

你的任务是:写出精确到小数点后100位精度的黄金分割值。

注意:尾数的四舍五入! 尾数是0也要保留!

显然答案是一个小数,其小数点后有100位数字,请通过浏览器直接提交该数字。

10、标题:错误票据

  某涉密单位下发了某种票据,并要在年终全部收回。

  每张票据有唯一的ID号。全年所有票据的ID号是连续的,但ID的开始数码是随机选定的。

  因为工作人员疏忽,在录入ID号的时候发生了一处错误,造成了某个ID断号,另外一个ID重号。

  本题的任务是通过编程,找出断号的ID和重号的ID。

  假设断号不可能发生在最大和最小号。

要求程序首先输入一个整数N(N<100)表示后面数据行数。

接着读入N行数据。

每行数据长度不等,是用空格分开的若干个(不大于100个)正整数(不大于100000),每个整数代表一个ID号。

要求程序输出1行,含两个整数m n,用空格分隔。

其中,m表示断号ID,n表示重号ID

例如:

用户输入:

2

5 6 8 11 9

10 12 9

则程序输出:

7 9

再例如:

用户输入:

6

164 178 108 109 180 155 141 159 104 182 179 118 137 184 115 124 125 129 168 196

172 189 127 107 112 192 103 131 133 169 158

128 102 110 148 139 157 140 195 197

185 152 135 106 123 173 122 136 174 191 145 116 151 143 175 120 161 134 162 190

149 138 142 146 199 126 165 156 153 193 144 166 170 121 171 132 101 194 187 188

113 130 176 154 177 120 117 150 114 183 186 181 100 163 160 167 147 198 111 119

则程序输出:

105  120

11、标题:买不到的数目

  小明开了一家糖果店。他别出心裁:把水果糖包成4颗一包和7颗一包的两种。糖果不能拆包卖。

    小朋友来买糖的时候,他就用这两种包装来组合。当然有些糖果数目是无法组合出来的,比如要买 10 颗糖。

    可以用计算机测试一下,在这种包装情况下,最大不能买到的数量是17。大于17的任何数字都可以用4和7组合出来。

    本题的要求就是在已知两个包装的数量时,求最大不能组合出的数字。

输入:

两个正整数,表示每种包装中糖的颗数(都不多于1000)

要求输出:

一个正整数,表示最大不能买到的糖数

注意:不需要考虑无解的情况

例如:

用户输入:

4 7

程序应该输出:

17

再例如:

用户输入:

3 5

程序应该输出:

7

12、标题:大臣的旅费

  很久以前,T王国空前繁荣。为了更好地管理国家,王国修建了大量的快速路,用于连接首都和王国内的各大城市。

  为节省经费,T国的大臣们经过思考,制定了一套优秀的修建方案,使得任何一个大城市都能从首都直接或者通过其他大城市间接到达。同时,如果不重复经过大城市,从首都到达每个大城市的方案都是唯一的。

  J是T国重要大臣,他巡查于各大城市之间,体察民情。所以,从一个城市马不停蹄地到另一个城市成了J最常做的事情。他有一个钱袋,用于存放往来城市间的路费。

   聪明的J发现,如果不在某个城市停下来修整,在连续行进过程中,他所花的路费与他已走过的距离有关,在走第x千米到第x+1千米这一千米中(x是整数),他花费的路费是x+10这么多。也就是说走1千米花费11,走2千米要花费23。

  J大臣想知道:他从某一个城市出发,中间不休息,到达另一个城市,所有可能花费的路费中最多是多少呢?

输入格式:

输入的第一行包含一个整数n,表示包括首都在内的T王国的城市数

城市从1开始依次编号,1号城市为首都。

接下来n-1行,描述T国的高速路(T国的高速路一定是n-1条)

每行三个整数Pi, Qi, Di,表示城市Pi和城市Qi之间有一条高速路,长度为Di千米。

输出格式:

输出一个整数,表示大臣J最多花费的路费是多少。

样例输入:

5

1 2 2

1 3 1

2 4 5

2 5 4

样例输出:

135

样例说明:

大臣J从城市4到城市5要花费135的路费。

根据资源限制尽可能考虑支持更大的数据规模。

 

更多相关推荐:
VC++软件课程设计报告

通信与信息工程学院20xx20xx学年第2学期课程设计实验报告模块名称VC软件设计专业电子信息工程学生班级B090110学生学号学生姓名指导教师董恒等日期20xx年5月1实验内容本课程设计分成练习题和综合题两部...

VC++课程设计报告 (2)

HarbinInstituteofTechnologyatWeihai课程设计报告课程名称设计题目院系设计者学号指导教师设计时间哈尔滨工业大学威海班级哈尔滨工业大学威海计算机学院IVC课程设计验收及成绩评定表项...

=vc课程设计报告模板

南京工程学院课程设计说明书论文题目双色球彩票选号器或抓不住的兔子游戏或模拟石英时钟课程名称VC基础课程设计院系部中心计算机工程学院专业计算机科学与技术班级学生姓名学号设计地点图书馆机房指导教师李春颖设计起止时间...

VC课程设计报告

大学课程设计论文题目酒店餐饮管理系统院系专业班级学号学生姓名指导教师教师职称起止时间课程设计论文任务及评语院系教研室目录第1章绪论111背景分析112设计的意义113设计目标及结论1第2章可行性分析321可行性...

vc++课程设计实验报告

VC课程设计报告一设计时间20xx年12月27日12月31日二设计地点三设计目的VC程序设计是计算机科学与技术专业的必修专业基础课程其实践性应用性很强实践教学环节是必不可少的一个重要环节VC程序设计的设计目的是...

VC++课程设计报告

HarbinInstituteofTechnologyatWeihai课程设计报告课程名称班级设计者学号指导教师设计题目院系设计时间哈尔滨工业大学威海I哈尔滨工业大学威海计算机学院VC课程设计验收及成绩评定表项...

VC++课程设计(绘图软件)报告书

VC程序设计课程设计报告书题目绘图软件设计班级学号姓名指导教师周期成绩一课程设计的目的与要求一课程设计目的与任务目的根据自身对visualc的学习通过此次上机实践加深对visualc各类控件的知识充分了解各个控...

VC++课程设计报告球员管理系统

江苏师范大学科文学院本科生课程设计课程名称VC程序设计题目球员基本信息管理系统专业班级10电信2学生姓名徐晨阳学生学号108326235日期20xx112指导教师李全彬科文学院教务部印制指导教师签字年月日目录摘...

VC++课程设计实验报告-时钟

湖南农业大学VC程序设计课程设计报告时钟学生姓名XXX学号XXXXXXXXXXXXQQXXXXXXXXX班级X班年级专业20xx级计算机指导老师及职称X老师高级工程师学院XXXXXXXXXXXXXXX湖南长沙提...

简单计算器C语言课程设计报告书

C语言课程设计报告书题目:简单计算器院系:班级:学号:姓名:一、课程设计目的1.巩固和加深C语言课程的基本知识的理解和掌握2.掌握C语言编程和程序调试的基本技能3.利用C语言进行基本的软件设计4.掌握书写程序设…

C语言课程设计报告 扫雷

程序课程设计基础课程设计扫雷游戏院系计算机科学技术学院计算机科学与技术师范班级师计091设计者徐群杨松徐春辉杨雷刘安然学号3224312504指导教师黄绍义20xx年12月25日1目录1概述311研究的背景及意...

C语言课程设计报告(通讯录)

设计说明书通讯录系统起止日期20xx年01月03日至20xx年01月08日学班学成生姓名级号绩XXX指导教师签字计算机与通信学院20xx年01月08日一课题任务设计一个通讯录管理系统课题的主要任务是1对通讯录信...

vc++课程设计报告(23篇)