1、一、 A 类、长整数四则运算(最多限 1 人)【问题描述】设计任意两个长正整数(小于 80 位)的加法函数 add()和乘法函数mult(),并求任意整数(58)的阶乘。【实现提示】用无符号整型或字符型数组存储任意长整数。 【测试数据】6!=7209!=36288019!=121645100408832000039!=20397882081197443358640281739902897356800000000 单词统计(最多限 1 人)【问题描述】统计某篇英文小说中某些单词的出现次数。【实现提示】英文小说存储在一个文本文件中。待统计的词汇集合要一次输入完毕,即统计工作必须在程序的一次运行之后
2、全部完成。输出的每个单词的出现次数。约定小说中的词汇一律不跨行,这样每从文本文件中读入一行,就统计每个单词在这行中出现的次数,直到文件结束。 要求在程序运行时才输入文本文件名和要统计的词汇。【测试数据】以 C/C+语言源程序模拟英文小说。统计某些保留字(如:if, else, for, while 等)的出现次数。保龄球计分【问题描述】打保龄球是用一个滚球去撞击 10 个站立的瓶,将瓶击倒。一局分 10 轮,每轮可滚球 1 次或多次,以击到的瓶数为依据计分,一局得分为 10 轮得分之和,而每轮的得分不仅与本轮的滚球情况有关,还可能与后一轮或两轮的滚球情况有关,即:某轮某次滚球击倒的瓶数不仅要计
3、入本轮得分,还可能会计入前一轮或两轮得分。计分规则如下:a) 若某一轮的第一次滚球就击倒全部 10 个瓶,则本轮不再滚球(若是第 10 轮还需加 2 次滚球) ,该轮得分为本次击倒瓶数 10 与以后 2 次滚球所击倒瓶数之和。b) 若某一轮的第一次滚球未击倒全部 10 个球,则对剩下未击倒的瓶再滚球一次,如果这 2 次滚球击倒全部 10 个瓶,则本轮不再滚球(若是第 10 轮还需加 1次滚球) ,该轮得分为这 2 次击倒瓶数 10 与以后 1 次滚球所击倒瓶数之和。c) 若某一轮 2 次滚球未击倒全部 10 个瓶,则本轮不在滚球,该轮得分为这 2 次滚球所击倒瓶数之和。【实现提示】a) 模拟
4、10 个人各打一局保龄球比赛过程,统计每局各轮得分和累计总分。b) 逐人逐轮逐次输入一次滚球击倒的瓶数。c) 对 10 人的得分由低到高排序并显示。d) 最后,把排序的存入文件中。【测试数据】自定模拟数据学生成绩统计【问题描述】学期考试结束,统计有 N 个班某班每个人的平均成绩,每门课的平均成绩,并按个人平均成绩从高到低的顺序输出成绩,输出不及格人名单。输入、输出格式自定。【实现提示】假设某班有:30 人(姓名自定) 。考试课程有:高等数学、物理、外语、C 语言、德育 5 门课程。将所有同学的成绩保留在文件中,对文件中的数据处理,输出所要求的内容,程序的功能主要包括 3 方面: a) 输入成绩
5、到文件中b) 输出成绩c) 输出不及格学生名单d) 成绩排序e) 修改记录f) 删除记录g) 插入记录等主函数中对 3 个功能选择(菜单) ,调用对应的函数完成。【测试数据】自定模拟数据README 软件的制作【问题描述】在现代的一些软件中,常常有这样一个程序,它主要是显示某些软件的使用方法及注意事项。比如:TC2.0 下 README 等。设计制作一个有自己特色的说明软件。【实现提示】a) 某软件的使用方法及注意事项等内容存储在文件 README.TXT 中。b) 使用编写的程序 README.EXE 能方便地阅读 README.TXT 中的内容。c) 能实现上翻一页、下翻一页、下一行、下一
6、行等操作。【测试数据】以某个语言源程序模拟 README.TXT 文件。编制一个学生的选课及学籍管理程序【问题描述】现有若干个班级的学生,进行下学期课程的选课,假设已经通过文件储存了选课内容的数据库,数据库中包括 7 门课(课程内容由学生自己定 )第 i 门课程的接纳的学生数为 10i,i 为课程的序号,如第一门课的接纳的学生数为101,第二门课为 102, 依此类推,每门课的学分数分别为1、2、3、4、5、6、7,现要求每一个学生至少选 3 门课,最多不超过 5 门。【实现提示】a) 显示课程内容供学生选择,并能进行选课的操作。b) 随着学生选课工作的进行,动态更新数据库的内容。c) 进行学
7、生的最少选课量和最多选课量的控制。d) 显示所有学生的选课的结果。e) 把学生所选课按学分总积分由小到大排列,同样学分按姓名的英文字母排序。f) 录入学生的各科成绩。g) 学生的参数有:姓名、学号、性别、总学分、各科成绩,补考情况,请把一门和三门功课不及格的学生的姓名列出,并自动生成补考通知书,通知书中要求有学生的姓名、学号、不及格的科目及补考时间(由编程者自定)。 【测试数据】自定模拟数据一个用于医院门诊候诊的队列管理程序【问题描述】要求采用先来先就诊的排队方式(就诊顺序与挂号单编号无关),假设挂号时编码是连续的,但由于同一个门诊科目有 3 个诊室,其中 35(含 35)岁以上的在第一诊室,
8、35 岁以下男患者进第二诊室,其它的进第三诊室,程序启动后显示下列菜单:1挂号2叫号3分诊室4显示各诊室队列信息5统计当天就诊患者情况(要求按性别进行统计和按任意年龄区段进行统计)6结束程序【实现提示】选 1 时,提示用户在一行内输入姓名及挂号单编号;选 2 时,显示排在队列中第一位患者姓名、挂号单编号,将其从挂号序列中删除;选 3 时,进行诊室分配;选 4 时,按队列顺序显示个诊室排队人的姓名、挂号单编号及所在诊室;选 5 时,进行两种统计方法的选择,并进行必要的统计计算;选 6 时,退出程序的运行。要求 15 中每一个步骤完成后都能重新显示此选择菜单。【测试数据】自定模拟数据个人通讯录管理
9、系统【问题描述】建立一通讯录,输入姓名、电话号码、住址等信息,然后对通信簿进行显示、查找、添加、修改及删除。【实现提示】(1) 通讯录的每一条信息包括姓名、单位、固定电话、移动手机、分类(如同事、朋友、同学、家人等) 、EMAIL、QQ 等。(2) 输入功能:可以一次完成若干条信息的输入。(3) 显示功能:完成全部通讯录信息的显示(一屏最多显示 10 条,超过十条应能够自动分屏显示)(4) 查找功能:可以按姓名等多种方式查找通讯信息(5) 增加、删除、修改功能:完成通讯录信息的多种更新【测试数据】自定模拟数据学生综合测评系统【问题描述】每个学生的信息为:学号、姓名、性别、家庭住址、联系电话、语
10、文、数学、外语三门单科成绩、考试平均成绩、考试名次、同学互评分、品德成绩、任课教师评分、综合测评总分、综合测评名次。考试平均成绩、同学互评分、品德成绩、任课教师评分分别占综合测评总分的 60%,10%,10%,20% 。【实现提示】A、学生信息处理(1) 输入学生信息、学号、姓名、性别、家庭住址、联系电话,按学号以小到大的顺序存入文件中。提示:学生信息可先输入到数组中,排序后可写到文件中。(2) 插入(修改)同学信息:提示:先输入将插入的同学信息,然后再打开源文件并建立新文件,把源文件和输入的信息合并到新文件中(保持按学号有序)若存在该同学则将新记录内容替换源内容,(3) 删除同学信息:提示:
11、输入将删除同学号,读出该同学信息,要求对此进行确认,以决定是否删除将删除后的信息写到文件中。(4) 浏览学生信息:提示:打开文件,显示该文件的学生信息。B、学生数据处理:(1) 按考试科目录入学生成绩并且按公式:考试成绩(语文+数学+外语)/3 计算考试成绩,并计算考试名次,提示:先把学生信息读入数组,然后按提示输入每科成绩,计算考试成绩,求出名次,最后把学生记录写入一个文件中。(2) 学生测评数据输入并计算综合测评总分及名次。提示:综合测评总分(考试成绩)*0.6+(同学互评分)*0.1+ 品德成绩*0.1+任课老师评分*0.2 。(3) 学生数据管理提示:输入学号,读出并显示该同学信息,输
12、入新数据,将改后信息写入文件(4) 学生数据查询:提示:输入学号或其他信息,即读出所有数据信息,并显示出来。C、学生综合信息输出提示:输出学生信息到屏幕。【测试数据】自定模拟数据10:五子棋程序要求:1由两个玩家分别下棋,当某一玩家五子相连,则赢。2界面要求:初始状态显示棋盘,并显示两个玩家的操作键及初始玩家号;游戏进行状态动态显示棋盘,不同玩家的棋子用不同符号显示,屏幕上显示当前玩家号,结束时显示赢家号。15:井子棋程序要求:1计算机为一方,人为一方,交替下棋,谁先连成一条直线谁胜;允许人选择先下还是后下。2界面要求:初始状态显示棋盘,并显示玩家的操作键;游戏进行状态动态显示棋盘不同玩家的棋
13、子用不同符号显示,屏幕上显示当前玩家号,结束时显示赢家号。 3提示计算机自动下棋的规则:计算机下时,应考虑所有空位,并按行、列、对角线计算每个空位的分值,若在某行(列、对角线)上, (设计算机画 X,人画 O)已有 XX 加 50 分已有 OO 加 25 分已有 X 空 加 10 分已有 O 空 加 8 分都是空 加 4 分然后选分值最高的位置画 X。11:迷宫游戏程序要求:1随机生成迷宫,找出由入口经过迷宫到达出口的一条路径,允许选择人或计算机找出路。2界面要求:初始状态显示迷宫的图面;用箭头指出入口外和出口外;游戏进行状态选择人找出路时,显示每一步的结果,到边了和遇上障碍,发出“嘟”的叫声
14、。走到出口处,应给出“胜利”的字样;选择计算机找出路时,用一条有颜色的线画出路径,若找不出出口就显示“无出路”的字样。3计算机找出路部分可选做。12 .贪吃蛇算法程序要求:游戏时,一条蛇在密闭的围墙内, 围墙内会随机出现一个食物通过键盘上的 4个光标键控制蛇向上下左右 4 个方向移动,蛇头接到食物,则表示食物被蛇吃掉,这时蛇的身体加长一节,同时计 10 分。接着又出现食物等待被蛇吃掉。如果蛇在移动过程中,撞到墙壁或身体交叉(蛇头撞到自己的身体) ,则游戏结束。13.猜数字游戏,有一定的容错功能,界面友好,功能齐全。游戏规则:a,一个四位数,各位上的数字不重复,从 1 到 9。b,按以下提示猜出
15、这个四位数。c,每次猜测输入的数据给出类似的提示*A*B。d,其中 A 前的 *代表你本次猜对了多少个数字。e,其中 B 前的*代表你本次猜对的数字并且位置正确的个数。14. 模拟计算器程序设计一个程序来模拟一个简单的手持计算器。程序支持算术运算+、-、*、/、=、以及(清除) 、A(全清除)操作。基本要求程序运行时,显示一个窗口,等待用户输入,用户可以从键盘输入要计算的表达式,输入的表达式显示在窗口中,用户键入= 符号后,窗口显示出结果。(不用考虑运算符的优先级)测试数据程序输入不少于 5 种不同的表达式进行测试。15日历显示1) 输入任一年将显示出该年的所有月份日期,对应的星期2) 注意闰
16、年情况其显示格式要求如下:1)月份:中文英文都可以,2)下一行显示星期,从周日到周六,中英文都可以3)下一行开始显示日期从 1 号开始,并按其是周几实际情况与上面的星期数垂直对齐当输入 2004 显示如下:Input the year:2004Input the file name:aThe calendar of the year 2004.Januray 1 February 2Sun 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 14
17、11 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 4Sun 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
18、 22 23 2428 29 30 31 25 26 27 28 29 30= =16钟表显示程序要求: 能模拟机械钟表行走,还要准确地利用数字显示日期和时间,在屏幕上显示一个活动时钟,按任意键时程序退出。 (如下图)二、B 类1. 设计程序以打印任意一年的日历,要求每个季度的三个月并排打印,每个月的一个星期在一行打印。2. 设计一套有关链表程序所需要的函数,提供建立链表、求链表中的结点数、逐个显示链表元素的值、按序号查询结点、按值查询结点、在指定序号的位置上插入结点和删除指定序号的结点等功能。在此基础上编写应用程序。3. 设计一个学生注册管理系统,能对学生注册信息(学号、姓名、性别、出生年月
19、、所在系、专业、电话号码)进行查询(要求可以使用模糊查询和条件组合查询)、修改、增加、删除和存储等。4. 设计一个课程信息管理系统,能对课程信息(课程编号、课程名称、学分、先修课号、任课教师)进行查询(要求可以使用模糊查询和条件组合查询)、修改、增加、删除和存储等。5. 设计一个图书管理系统,能对图书信息(图书编号、书名、ISBN、出版社、作者、价格)进行查询(要求可以使用模糊查询和条件组合查询)、修改、增加、删除和存储等。6. 模拟时钟程序要求:能准确地利用数字显示日期和时间,在屏幕上显示一个运行的电子时钟,按任意键时程序退出。7. 编程实现文件的基本操作:1)显示当前目录下有哪些文本文件;
20、2)由用户输入选中的一个或多个文件名;3)由用户选择文件操作功能:复制、删除、移动(到指定文件夹下),并实现相应的功能;三、C 类1. 设计一种结构能表示最多 1000 位的大整数(正、负均可),并实现这类数的加、减运算。2. 设计一种结构能表示最多 1000 位的大整数(正、负均可),并实现这类数的乘运算。3. 已知一类用于表示集合的数组的元素是递增有序的,试分别编程实现这类集合的交集和并集。4. 设计程序将两个递增有序的数组合并为一个递增有序的数组。5. 编程实现将选中的若干个文件的内容依次复制插入到一个新文件 new.txt中。6. 剧场座位使用 N*N 的二维数组表示,元素值为 1,代
21、表票已售出,为 0 代表尚未售出,用户要求购买剧场中一块连续的 num*num 个座位,返回座位的起始行列坐标,找不到返回1。7. 判断一个串中的三类括号( 是否匹配。8. 函数 f(char *s,char del),将非空字符串 str 分割成若干个子字符串并输出,del 表示分割时的标志字符。如:str 为“33123333435”,del 的值为3,调用此函数后,将输出 3 个子字符串,分别为“12”,“4”,“5”。9. 13 个人围成一圈,从第一个人开始顺序报数 1,2,3。凡报到 3 者退出圈子。找出最后留在圈子中的人原来的序号。(用数组分别实现)。10. 设计销售管理系统 某公
22、司有四个销售员(编号:1-4),负责销售五种产品(编号:1-5)。每个销售员都将当天出售的每种产品各写一张便条交上来。每张便条包含内容:销售员的代号 、产品的代号 、这种产品的当天的销售额。 每位销售员每天可能上缴 0-5 张便条。假设,收集到了上个月的所有便条,编写一个处理系统,读取上个月的销售情况(自己设定),进行如下处理。1、计算上个月每个人每种产品的销售额。 2、按销售额对销售员进行排序,输出排序结果(销售员代号)3、统计每种产品的总销售额,对这些产品按从高到底的顺序,输出排序结果(需输出产品的代号和销售额) 4、输出统计报表 销售统计报表 产品代号 销售之和 销售员代号 1 2 3
23、4 5 1 2 3 4 每种产品之和 总和四、D 类(画出流程图)1. 设计程序在屏幕上显示一个文本文件的内容,要求:将所有大写英文字母改为小写字母输出,其它字符原样输出。2. 输入一个正整数,再输入任意 n 个整数,计算并输出这 n 个整数的和及平均值。使用动态内存分配方法为这 n 个整数分配空间。3. 编程实现由用户输入若干字符串,使用指向若干字符串的指针数组,实现字符串的字典序输出。4. 实现一个简易职工工资管理系统,工资项目包括编号,姓名、基本工资、奖金、保险、实发工资。输入一个正整数,再输入 n 个职工前 5 项工资,计算其实发工资。职工工资信息用文件保存。5. 输入 10 个学生的
24、学号、姓名和成绩,输出学生的成绩等级和不及格人数。每个学生的记录包括学号、姓名、成绩和等级。要求定义和调用函数,该函数实现根据学生成绩给出等级并统计不及格人数和优秀(A)人数。85100 为 A,7084 为 B,6069 为 C,059 为 D,用文件实现。6. 使用程序模拟汉诺塔运行过程,由用户输入盘子数,输出搬运步骤。7. 建立一个学生成绩信息的单向链表,学生记录按学号由小到大排列,要求实现对成绩信息的插入、修改、删除和遍历。8. 成绩记录簿。编制一个 C 语言成绩记录簿,每个学生信息包括:学号、姓名、C 语言成绩。具体功能:创建信息链表并以磁盘文件保存9. 链表的合并和复制,有两个单向
25、链表,头指针分别为 pList1 和 pList2,链表中每个结点信息为学号、姓名、年龄和成绩。(1)编写函数把链表pList2 合并到 链表 pList1 中;(2)编写函数将合并后的链表复制到新链表 New 上(链表结点信息与上面相同)。10. 编程实现两个文本文件内容的复制,文件的名称由输入确定。11. 编写程序读取一个指定的文本文件,显示在屏幕上,如果有大写字母,则改成小写字母再输出,并统计行数。根据回车符统计文件的行数,要处理的文件名通过键盘输入字符串指定。12、不少于 3000 字的论文, C 语言程序设计与单片机 C 语言相关性、差异性分析C 语言教学建议及学习心得分析五 专业类
26、 E 类单片机 C 语言程序设计编程1、十字路口交通信号灯控制系统、交通灯的硬件和软件设计类似于此类的软硬件结合的题目,作出实物及编写源代码。1.编程使 8 个发光二极管按不同的方式循环点亮。采用外部中断 1 方式来控制循环点亮,即按一下中断按键时更换一种点这方式。每次循环在 LED 数码管上显示P1,P2代表不同的方式,同时循环结束后蜂鸣器发出一声报警声音。2. 采用定时器 1 按方式 1 工作,每 100ms 则 T1 中断溢出一次,要求编写程序模拟一个循环彩灯(实验板中的发光二极管) ,变化花样自行设计,间隔 1s 变化一次。每次循环在 LED 数码管上显示 P1,P2代表不同的方式,同时循环结束后蜂鸣器发出一声报警声音。3. 编写程序完成键盘与 LED 数码管的动态显示,上电初始状态为“- - - -”,当键盘输入相应的数字时或字符时在数码管上显示出来,当数字或者字符超过 4 位时,从LED 数码管从左到右循环显示。4.编写 M+(M+1)+(M+2)+N(NM)的程序,M,N 值从键盘中输入(如 M1,N50) ,并在 LED 数码管上显示输入的 M、N 数值,程序运行结果在 LED 数码管上显示出来。