《C语言程序设计课程设计》题目——软件工程2班
- 格式:doc
- 大小:127.50 KB
- 文档页数:12
《C语言程序设计》欧阳家百(2021.03.07)课程设计报告(2013— 2014学年第3学期)题目:C语言课程设计专业:软件工程班级:软件工程技术2班姓名学号:1307142225林燕萍指导教师:吴芸成绩:计算机科学与技术系2014年6月23日目录一、课程设计的目的与要求 (1)二、方案实现与调试 (3)2.1 掷骰子游戏 (5)2.2 射击游戏 (7)2.3 计算存款本息之和 (8)2.4肇事逃逸 (10)2.5 礼炮 (12)2.6 汽车加油 (14)2.7 大优惠 (16)2.8 金币 (19)三、课程设计分析与总结 (23)附录程序清单 (25)一、课程设计的目的与要求(含设计指标)C语言是一种编程灵活,特色鲜明的程序设计语言。
C语言除了基知识,如概念,方法和语法规则之外更重要的是进行实训,以提高学习者的动手和编程能力,从应试课程转变为实践工具。
这是学习语言的最终目的。
结合多年来的教学经验,根据学生的学习情况,为配合教学过程,使“项目教学法”能在本质上促使学生有更大进步,特编写了该《C语言程序设计任务书》,以在实训过程中给学生提供帮助。
达到如下目的:1.在课程结束之前,让学生进一步了解C程序设计语言的编程功能;2.让学生扎实掌握C程序设计语言的相关知识;3.通过一些有实际意义的程序设计,使学生体会到学以致用,并能将程序设计的知识与专业知识有效地结合,更全面系统地了解行业知识。
编写程序要求遵循如下基本要求:①模块化程序设计②锯齿型书写格式③必须上机调试通过二、方案实现与调试2.1掷骰子游戏•2.1.1题目内容的描述1) 两人轮流掷骰子,每次掷两个,每人最多掷10次。
2) 将每人每次的分值累加计分3) 当两个骰子点数都为6时,计8分;当两个点数相等且不为两个6时,计7分;当两个点数不一样时,计其中点数较小的骰子的点数。
4) 结束条件:当双方都掷10次或经过5次后一方累计分数多出另一方的30%及以上。
《C语言程序设计》课程设计课题表一、A类1.职工信息管理系统设计2.职工信息包括职工号、姓名、性别、年龄、学历、工资、住址、电话等(职工号不重复)。
试设计一职工信息管理系统,使之能提供以下功能:3.1、职工信息录入功能(职工信息用文件保存)--输入4.2、职工信息浏览功能--输出5.3、职工信息查询功能--算法6.查询方式:按学历查询、按职工号查询、条件组合查询7.职工信息删除、修改功能(可选项)8.图书信息管理系统设计9.图书信息包括:登录号、书名、作者名、分类号、出版单位、出版时间、价格等。
10.试设计一图书信息管理系统,使之能提供以下功能:11.1、图书信息录入功能(图书信息用文件保存)--输入12.2、图书信息浏览功能--输出13.3、图书信息查询功能--算法14.查询方式:按书名查询、按作者名查询、条件组合查询15.图书信息的删除与修改(可选项)16.图书管理系统设计17.图书管理信息包括:图书名称、图书编号、单价、作者、存在状态、借书人姓名、性别、学号等18.功能描述:19.1、新进图书基本信息的输入。
20.2、图书基本信息的查询。
21.3、对撤消图书信息的删除。
22.4、为借书人办理注册。
23.5、办理借书手续。
24.6、办理还书手续25.要求:使用文件方式存储数据。
26.实验设备管理系统设计27.实验设备信息包括:设备编号,设备种类(如:微机、打印机、扫描仪等等),设备名称,设备价格,设备购入日期,是否报废,报废日期等。
28.主要功能:29.1、能够完成对设备的录入和修改30.2、对设备进行分类统计31.3、设备的破损耗费和遗损处理32.4、设备的查询33.要求:使用文件方式存储数据。
34.学生信息管理系统设计35.学生信息包括:学号,姓名,年龄,性别,出生年月,地址,电话,E-mail等。
试设计一学生信息管理系统,使之能提供以下功能:36.1、系统以菜单方式工作37.2、学生信息录入功能(学生信息用文件保存)--输入38.3、学生信息浏览功能--输出39.4、学生信息查询功能--按学号查询、按姓名查询、40.5、学生信息的删除与修改(可选项)41.要求:使用文件方式存储数据。
软件工程c语言课程设计一、课程目标知识目标:1. 理解C语言在软件工程中的应用,掌握C语言的基本语法和结构;2. 学会使用C语言进行程序设计,包括数据类型、运算符、控制结构等;3. 了解软件工程的基本概念,掌握软件开发生命周期及各阶段任务。
技能目标:1. 能够运用C语言编写简单的程序,解决实际问题;2. 能够分析问题,设计合理的算法,并用C语言实现;3. 能够运用软件工程的方法,进行需求分析、设计、编码、测试和文档编写。
情感态度价值观目标:1. 培养学生对编程的兴趣和热情,提高学生的逻辑思维能力;2. 培养学生团队合作意识,学会与他人共同解决问题;3. 培养学生严谨、细致的学习态度,养成良好的编程习惯。
分析课程性质、学生特点和教学要求,本课程旨在帮助学生在掌握C语言基础知识的基础上,运用软件工程的方法进行课程设计。
通过本课程的学习,学生能够将理论知识与实践相结合,提高解决实际问题的能力,为未来从事软件开发工作打下坚实基础。
课程目标具体、可衡量,便于学生和教师在教学过程中进行评估和调整。
二、教学内容1. C语言基础知识:- 数据类型、变量、常量- 运算符、表达式、语句- 控制结构:顺序、选择、循环- 函数、数组和指针2. 软件工程基本概念:- 软件定义、软件生命周期- 需求分析、系统设计- 编码、测试、维护3. C语言编程实践:- 简单程序设计:如计算器、排序等- 结构化编程:模块化、函数封装- 面向对象编程:理解面向对象思想,运用结构体实现简单的面向对象编程4. 课程设计项目:- 项目需求分析- 系统设计:模块划分、接口设计- 编码实现:使用C语言编写各个模块- 测试与调试:确保项目功能的正确性- 文档编写:整理项目相关文档,如需求说明书、设计文档、测试报告等教学内容根据课程目标进行选择和组织,注重科学性和系统性。
教学大纲明确教学内容和进度,确保学生能够循序渐进地掌握知识。
教学内容与教材章节紧密关联,涵盖C语言基础知识和软件工程实践,为课程设计的顺利进行提供支持。
课程名称: C++程序设计课程代码:05题目: 字符串类的设计年级/专业/班: 软件工程2班学生姓名:学号:指导教师: 袁辉勇开题时间: 2011 年 5 月 15 日完成时间: 2011 年 6 月 5 日—湖南人文科技学院计算机系目录一引言 (3)二设计目的与任务 (3)三设计方案 (4)1 总体设计 (4)2 详细设计 (4)四程序清单 (4)五程序调试与体会 (10)六运行结果 (14)七结论................................................. 错误!未定义书签。
八参考文献............................................... 错误!未定义书签。
摘要本设计通过定义字符串类来实现对字符串的赋值、连接、复制、查找、交换操作。
首先定义一个字符串类,通过调用字符串类中成员函数,对字符串类进行赋值,然后实现了字符串类之间的连接,字符串类之间的相互复制,字符串类之间的交换,最后可以对该字符串类中的字符串进行查找。
关键字:字符串;类;成员函数;对象AbstractBy defining the design of this type of string to string to the realization of the assignment, to connect, copy, find, exchange operations. First of all, the definition of a type of string, by calling members of the String class function, the type of string for assignment, and then realized the connection between the type of string, string-type between the copy, between string-type In exchange, the last class to the string of string to find.Keywords: string; category; members of the function; object 。
软件工程c语言课程设计一、教学目标本课程旨在通过软件工程的角度,深入浅出地介绍C语言的核心概念、编程技巧和软件开发流程。
通过本课程的学习,学生将掌握C语言的基础语法、数据结构、算法以及软件工程的基本原则。
•理解C语言的基本语法和结构。
•掌握常用的数据结构和算法。
•了解软件工程的基本原则和流程。
•能够使用C语言编写简单的程序。
•能够运用数据结构和算法解决实际问题。
•能够独立完成小型软件项目的开发。
情感态度价值观目标:•培养学生的逻辑思维和问题解决能力。
•培养学生的团队合作意识和沟通能力。
•培养学生的创新精神和对软件工程的职业热情。
二、教学内容本课程的教学内容将按照软件工程的理念和C语言的特点进行。
首先,学生将学习C语言的基本语法和结构,包括数据类型、运算符、控制结构等。
然后,学生将学习常用的数据结构和算法,如数组、链表、排序等。
最后,学生将学习软件工程的基本原则和流程,包括需求分析、设计、实现和测试等。
具体的教学大纲如下:1.C语言基础:介绍C语言的基本语法和结构,包括数据类型、运算符、控制结构等。
2.数据结构和算法:介绍常用的数据结构和算法,如数组、链表、排序等,并通过实例进行讲解和练习。
3.软件工程原理:介绍软件工程的基本原则和流程,包括需求分析、设计、实现和测试等,并通过实际项目进行实践。
三、教学方法为了提高学生的学习兴趣和主动性,本课程将采用多种教学方法相结合的方式。
首先,将采用讲授法,系统地介绍C语言的基本语法和结构,数据结构和算法,以及软件工程的基本原则和流程。
其次,将采用讨论法,鼓励学生积极参与课堂讨论,提出问题并解决。
此外,还将采用案例分析法,通过分析实际项目案例,使学生更好地理解和应用所学知识。
最后,将采用实验法,让学生通过实际编程和软件开发,巩固和提高所学知识。
四、教学资源为了支持教学内容和教学方法的实施,丰富学生的学习体验,将选择和准备适当的教学资源。
教材方面,选择权威、实用的C语言和软件工程方面的教材。
c语言课程设计题及答案一、教学目标本节课的教学目标是使学生掌握C语言的基本语法和编程技巧,培养学生运用C语言进行程序设计的能力。
具体目标如下:1.知识目标:–掌握C语言的数据类型、运算符、表达式;–理解C语言的程序结构、函数定义与调用;–熟悉C语言的输入输出操作。
2.技能目标:–能够使用C语言编写简单的程序,实现数据计算和输出;–能够阅读和理解C语言程序代码;–能够运用C语言进行问题的求解和程序设计。
3.情感态度价值观目标:–培养学生对计算机科学的兴趣和好奇心;–培养学生勇于探索、积极向上的学习态度;–培养学生团队协作、互相帮助的精神。
二、教学内容本节课的教学内容主要包括以下几个部分:1.C语言的基本语法和数据类型;2.运算符、表达式及其用法;3.程序结构、函数定义与调用;4.输入输出操作。
5.引言:介绍C语言的背景和特点;6.数据类型与运算符:讲解整型、浮点型、字符型数据及其运算符;7.表达式与程序结构:讲解表达式的组成和程序的基本结构;8.函数定义与调用:讲解函数的定义、声明和调用方式;9.输入输出操作:讲解输入输出函数的使用方法。
三、教学方法本节课采用多种教学方法相结合的方式,以激发学生的学习兴趣和主动性:1.讲授法:讲解C语言的基本语法、数据类型、运算符等知识点;2.案例分析法:分析典型程序代码,引导学生理解程序结构、函数定义与调用;3.实验法:让学生动手编写程序,实践输入输出操作;4.讨论法:学生分组讨论,促进学生之间的交流与合作。
四、教学资源本节课的教学资源包括:1.教材:《C语言程序设计》;2.参考书:《C语言编程思想》;3.多媒体资料:教学PPT、视频教程;4.实验设备:计算机、编程环境。
教学资源的使用:1.教材和参考书用于引导学生预习和复习;2.多媒体资料用于辅助讲解和演示;3.实验设备用于学生动手实践。
五、教学评估本节课的教学评估将采用多种方式,以全面、客观地评价学生的学习成果。
C语言程序设计论文鸡西大学08电气与信息工程系班级:软件2班姓名:范孝龙设计题目:贪吃蛇正文:一、引言:贪吃蛇这一游戏实训中初次接触,通过操作熟悉,觉知此游戏简单易行,操作方便,而且娱乐性较强,应该吸引了不少游戏的钟爱者人。
这一款游戏紧紧地抓住了人们的心理,虽然简单,却起乐无穷,在人们不断追求更多的欲望下,该游戏给人们带来了追逐的快感,以及成功后的满足感,对于一直处于高压下的现代人是很好的放松工具,令人百玩不厌。
二、系统分析:1)可行性分析:首先,贪吃蛇用C语言编程,有很好的技术可行性,在MYTC下也能顺利运行,可以说在技术方面,只要掌握代码编写知识,就不会有多大的问题。
其次,贪吃蛇这类小游戏,还能够下载到手机上玩,所以,更容易为人们所接受,这就展现它的经济可行性也会不赖。
再次,无论是电脑还是手机或游戏机,在操作上它都很简单,一学就懂,又证实了它的操作可行性。
2)需求分析:游戏是人们生活中不可或缺的,是一个人从小到大,真正伴随他成长的东西。
游戏在娱乐中占有着很重要的地位,不论是一个玩具,还是一个能和伙伴一起开心的小游戏,都是能给我们留下很多美好的回忆。
所以不论是什么样的游戏,只要它能迎合人们内心的某种需求,它的市场总会是好的。
贪吃蛇,是个简单的小游戏,但却能给人以放松,让我们从繁重的日常生活中解脱出来,得到身心的放松,现在的人,不管是已经工作的,还是还未进入社会的学生,都面临着很大的压力,而这样一款能让我们随时随地都能享受的游戏,其魅力还是不可估量的。
贪吃蛇,之所以取这样的名字,去用意还是很明显的。
贪吃蛇其实并不贪,它只是人不断向前追求的象征。
就像现代的人只有不断努力向前才能得到自己想要的。
而食物也是随机出现的,就像现在社会存在的机会,而我们只有找好自己的目标才能成功。
虽然现在市面上存在着各种各样的游戏版本,可是贪吃蛇其市场还是相当大的。
因为它的特殊在于它能吸引人更深入,爱不释手。
随着游戏速度不断加快,其刺激性也更强。
C语言课程设计参考题目C语言课程设计参考题目一、基本要求题目1、一司机出车祸后驾车逃离现场,第一位目击者记得车牌号前两位数字相同,且后两位数字也相同;第二位目击者是一位数学家,他看出车牌号是四位完全平方数。
试编程推算肇事车的车牌号。
2、有17个人围成一圈,从0号的人开始报数,凡报到3的倍数的人离开圈子,然后再数下去。
直到最后只剩下一个人为止。
问此人原来的位置是多少号。
3、编写一个程序,求3X4数组的转置矩阵。
要求在main函数里读数,在change 函数里把矩阵转置。
4、编写函数,求取两个整数m,n的最大公约数和最小公倍数。
5、用指向指针的方法对n个整数排序并输出。
要求将排序单独写成一个函数。
N 个整数在主函数中输入。
最后在主函数中输出。
6、有n个学生,每个学生的数据包括学号、姓名、年龄和两科成绩。
请编程用结构类型的数据处理方式实现如下目标:(1)在main 函数中输入原始数据;(2)在count 函数中输出各学生的总分和平均分;(3)输出总分最高的学生;(4)编写sort函数将各学生的数据按总分降序输出。
7、编写求子串函数substr(s,n1,n2),在串s中从n1位置开始取n2个字符的子串8、文件加密程序:将待加密文件以二进制打开,读入32个字节,分别与口令异或,在将4、5、6三个字分别与0xaaaa异或,即完成加密,执行第二次就解密9、编写字串str1 中找出所有小写字母转成大写字母,大写字母转成小写字母后,结果依次存入字符数组 str2 中,str1 不变仍为原字串的程序。
例如,字符串str1 为 "91A2BC. a1bc",调用函数 fun 后,字符数组str2将存入"91a2bc. A1BC",str1仍然是"91A2BC. a1bc"。
10、编写一个将某个范围在-32768~32767之间的整数转换为R进制(R=2,5,8,16)的通用程序。
c语言软件开发课程设计一、课程目标知识目标:1. 让学生掌握C语言的基本语法和结构,包括变量声明、数据类型、运算符、控制语句等。
2. 培养学生运用C语言进行程序设计的能力,包括顺序结构、选择结构和循环结构的运用。
3. 引导学生了解C语言中的函数定义和调用,以及模块化编程的思想。
技能目标:1. 培养学生运用C语言编写简单程序的能力,能够解决实际问题。
2. 提高学生调试程序、查找并解决问题的能力。
3. 培养学生团队合作精神,学会与他人共同完成项目。
情感态度价值观目标:1. 培养学生对编程的兴趣和热情,提高学习积极性。
2. 培养学生勇于面对困难,敢于挑战的精神,增强自信心。
3. 培养学生严谨、细致的学习态度,养成良好的编程习惯。
分析课程性质、学生特点和教学要求:1. 课程性质:本课程为实践性较强的学科,要求学生在掌握理论知识的基础上,能够动手编写程序,解决实际问题。
2. 学生特点:学生具备一定的计算机操作能力,对编程有一定的好奇心,但可能缺乏实际编程经验。
3. 教学要求:结合学生特点,注重理论与实践相结合,采用案例教学,引导学生主动参与,培养实际编程能力。
1. 熟练掌握C语言的基本语法和结构。
2. 独立编写简单的C语言程序,解决实际问题。
3. 学会与他人合作,共同完成编程项目。
4. 养成良好的编程习惯,具备一定的编程素养。
5. 增强对编程的兴趣和热情,为后续学习打下坚实基础。
二、教学内容本课程教学内容分为以下五个部分:1. C语言基础知识- 变量与数据类型- 运算符与表达式- 输入输出函数2. 控制结构- 顺序结构- 选择结构(if语句、switch语句)- 循环结构(for循环、while循环、do-while循环)3. 函数与模块化编程- 函数定义与调用- 作用域规则- 递归函数4. 数组与字符串- 一维数组- 二维数组- 字符串操作5. 指针与内存管理- 指针的概念与使用- 指针与数组- 内存分配与释放教学内容的安排和进度如下:1. 第1周:C语言基础知识2. 第2-3周:控制结构3. 第4-5周:函数与模块化编程4. 第6-7周:数组与字符串5. 第8-9周:指针与内存管理本课程教学内容与教材章节紧密关联,涵盖了《C程序设计》教材的主要知识点,旨在帮助学生系统地掌握C语言编程技能。
1 一元稀疏多项式的运算问题描述:设有两个带头指针的单链表表示两个一元稀疏多项式A、B,实现两个一元稀疏多项式的处理.实现要求:⑴输入并建立多项式;⑵输出多项式,输出形式为整数序列:n,c1,e1,c2,e2……cn,en,其中n是多项式的项数,ci,ei分别为第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个班的同学的构造一个所有按平均成绩的以非递增方式排列的新的单链表;⑹设计一个菜单,至少具有上述操作要求的基本功能。
(本题⑸由2人完成)3 迷宫问题问题描述:以一个m×n的长方阵表示迷宫,0和1分别表示迷宫中的通路和障碍。
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个班的同学的构造一个所有按平均成绩的以非递增方式排列的新的单链表;⑹设计一个菜单,至少具有上述操作要求的基本功能。
(本题⑸由2人完成)3 迷宫问题问题描述:以一个m×n的长方阵表示迷宫,0和1分别表示迷宫中的通路和障碍。
设计一个程序,对任意设定的迷宫,求出一条从入口到出口的通路,或得出没有通路的结论。
实现要求:⑴实现一个以链表作存储结构的栈类型,然后编写一个求解迷宫的非递归程序。
求得的通路以三元组(i,j,d)的形式输出,其中:(i,j)指示迷宫中的一个坐标,d表示走到下一坐标的方向。
⑵编写递归形式的算法,求得迷宫中所有可能的通路;⑶以方阵形式输出迷宫及其通路。
[测试数据]迷宫的测试数据如下:左上角(1,1)为入口,右下角(8,9)为出口。
1 2 3 4 5 6 7 8实现提示:计算机解迷宫通常用的是“穷举求解”方法,即从入口出发,顺着某一个方向进行探索,若能走通,则继续往前进;否则沿着原路退回,换一个方向继续探索,直至出口位置,求得一条通路。
假如所有可能的通路都探索到而未能到达出口,则所设定的迷宫没有通路。
可以二维数组存储迷宫数据,通常设定入口点的下标为(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。
即栈的修改是按后进先出的原则进行的。
栈的链式存储结构称为链栈,是运算受限的单链表。
其插入和删除操作只能在表头位置上进行。
链栈的基本形式如下:空链栈非空链栈⑴链栈基本操作的实现:栈的初始化,生成一个空栈;压栈,即元素进栈;弹栈,即元素出栈;⑵十进制整数N向其它进制数d(二、八、十六)的转换是计算机实现计算的基本问题。
转换法则:该转换法则对应于一个简单算法原理:n=(n div d)*d+n mod d 其中:div为整除运算,mod为求余运算⑶在文字处理软件或编译程序设计时,常常需要检查一个字符串或一个表达式中的括号是否相匹配?匹配思想:从左至右扫描一个字符串(或表达式),则每个右括号将与最近遇到的那个左括号相匹配。
则可以在从左至右扫描过程中把所遇到的左括号存放到堆栈中。
每当遇到一个右括号时,就将它与栈顶的左括号(如果存在)相匹配,同时从栈顶删除该左括号。
算法思想:设置一个栈,当读到左括号时,左括号进栈。
当读到右括号时,则从栈中弹出一个元素,与读到的左括号进行匹配,若匹配成功,继续读入;否则匹配失败,返回FLASE。
5航班信息管理问题描述:飞机航班系统的数据包括两部分:①航班信息:航班号、最大载客数、起飞地点、起飞时间、降落地点、降落时间,单价;②乘客信息:航班号、身份证号码、姓名、性别、出生年月、座位号。
乘客订票的主要方式是:乘客提出航班号、起飞地点、起飞时间、降落地点、订票数等订票要求,根据事先保存的航班数据决定乘客能否订票?只有全部满足了乘客的订票要求并且所订航班有足够的未订座位之后才能完成订票处理,并且修改该航班的未订座位数(每个航班的未订座位数的初始值就是该航班的最大载客数);否则,订票失败,并且给出不能订票的原因。
要求将航班数据保存在数据文件中,在处理时按航班的起飞地点建立不同的链表。
⑴增加航班记录。
将新的航班记录增加到原有的航班数据文件中。
在进行处理时必须检查所要增加的航班记录是否存在,如果已经存在,应给出提示信息后停止增加;⑵航班取消。
如果某次航班的乘客数太少(已订票的少于本次航班最大载客数的10%),将取消该航班,但该航班的记录仍然保存在原有的航班数据文件中;⑶航班查询。
应该有以下几种基本的查询方式:按航班号、按起飞地点和起飞时间、按降落地点,按起飞地点和降落地点;⑷航班订票。
按上述问题描述中的乘客订票方式完成航班订票处理。
⑸设计一个菜单,至少具有上述操作要求的基本功能。
6 运动会管理系统问题描述:校际运动会管理系统。
设有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;③团体项目的名次取法和上面相同,但分数加倍。
功能要求:⑴运动员报名登记,以学校为单位进行运动员报名登记,登记的限制要求按问题描述的要求;⑵参赛信息查询,查看参赛学校信息和比赛项目信息;⑶竞赛检录,每项比赛开始前完成参赛运动员的检录;⑷竞赛成绩登记,填写比赛名次,然后根据竞赛检录的运动员人数和上述的记分方式自动完成各学校的成绩登记并实时生成各学校的团体总分;⑸比赛成绩查询,可以按竞赛项目、参赛学校、参赛运动员查看比赛成绩;⑹竞赛成绩排序,以学校为单位,按总成绩的高低,分别排序输出每个学校的总成绩、男子总成绩、女子总成绩;⑺设计一个菜单,至少具有上述操作要求的基本功能。
(本题⑸由2人完成)7集合运算问题描述:设有两个用单链表表示的集合A、B,其元素类型是int且以非递减方式存储,其头结点分别为a、b。
要求下面各问题中的结果集合同样以非递减方式存储,结果集合不影响原集合。
实现要求:⑴编写集合元素测试函数IN_SET,如果元素已经在集合中返回0,否则返回1;⑵编写集合元素输入并插入到单链表中的函数INSERT_SET,保证所输入的集合中的元素是唯一且以非递减方式存储在单链表中;⑶编写集合元素输出函数,对建立的集合链表按非递增方式输出;⑷编写求集合A、B的交C=A∩B的函数,并输出集合C的元素;⑸编写求集合A、B的并D=A∪B的函数,并输出集合D的元素;⑹求集合A与B的对称差E=(A-B)∪(B-A) 的函数,并输出集合D的元素;⑺设计一个菜单,具有输入集合元素、求集合A、B的交C、求集合A、B的并D、求集合A与B的对称差E、退出等基本的功能。
测试数据:由读者自定,但集合A、B的元素个数不得少于16个。
8 矩阵的操作设有两个矩阵A=(a ij)m×n,B=(b ij)p×q。
实现要求:⑴编写矩阵输入函数INPUT_MAT,通过该函数完成矩阵的输入并返回保存矩阵的三元组(不能使用全局变量);⑵编写矩阵输出函数OUTPUT_MAT,通过该函数完成矩阵的输出,输出的形式是标准的矩阵形式(即二维数组的形式);⑶求矩阵的转置,矩阵的转置A’=(a ji)n×m,转置前输出原矩阵,转置后输出转置矩阵;⑷求矩阵A、B的和。
矩阵A和B能够相加的条件是:m=p,n=q;矩阵A和B如果不能相加,请给出提示信息;若能够相加,则求和矩阵C并输出C;C=A+B=(c ij)m×n,其中c ij=a ij+b ij⑸求矩阵A、B的差。
矩阵A和B能够相减的条件是:m=p,n=q;矩阵A和B如果不能相减,请给出提示信息;若能够相减,则求差矩阵C并输出C;C=A-B=(c ij)m×n,其中c ij=a ij-b ij⑹求矩阵A、B的积。
矩阵A和B能够相乘的条件是:p=n;矩阵A和B 如果不能相乘,请给出提示信息;若能够相乘,则求积矩阵D并输出D;D=A×B=(d ij)m×q,其中d ij=∑a ik×b kj,k=1,2,……,n⑺设计一个菜单,具有求矩阵的转置、求矩阵的和、求矩阵的积、退出等基本的功能。
在求矩阵的和或求矩阵的积时要求能够先提示输入两个矩阵的,然后再进行相应的操作。
9 数据汇总问题描述:在数据处理中经常需要对大量数据进行汇总,将相同关键字记录的某些数据项的值叠加起来,生成一个分类汇总表。
假设某超级市场销售有m种商品(假设商品的编号为1,2,3,┅┅,m),有n台前台收款机(假设收款机的编号为1,2,3,┅┅,n)进行收款,以记录的形式提供给计算机,每个记录表示某台收款机的一种商品一次交易的数量和销售额。
记录由4个域组成:收款机编号、商品编号、销售数量、销售金额。
构造一个结构体类型,每次销售数据以一个结构体变量保存在一个数据文件中。
实现要求:⑴编写实现将数据记录插入到数据文件的最后的函数;⑵编写以收款机为单位的数据分类处理函数。