《2022年课程设计文档.docx》由会员分享,可在线阅读,更多相关《2022年课程设计文档.docx(19页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精选学习资料 - - - - - - - - - C语言基础课程设计 一 基本要求题目要求:基此题共30 题,任选其中的20 道题;提交试验报告 可手写、 可电子版打印 ;【程序 1】1 题目: 任意输入三个整数,编程实现对这三个数由小到大进行排序,并将排序后的结果显示在屏幕上;1. 程序分析:两个数一组使用if进行条件判定,假如逆序就使用中间变量对其进行交换;2. 程序源代码:【程序 2】7 题目:猴子第一天摘下假设干个桃子,当即吃了一半,仍不过瘾,又多吃了一个;其次天早上又将第一天剩下的桃子吃掉一半,有多吃了一个; 以后每天早上都吃了前一天剩下的一半零一个;到第 10 天早上想在吃时,发觉
2、只剩下一个桃子了;编写程序求猴子第一天共摘了多少个桃子;1. 程序分析: 先找出变量间的关系,即其次天的桃子数加1 的 2 倍等于第一天的桃子数;利用循环,即求出桃子总数;2. 程序源代码:【程序 3】3 题目:求 100 到 200 之间的全部素数,打印输出;1. 程序分析:素数是大于 1 的整数, 除了能被自身和 1 整除外,不能被其他正整数整除;因此判定素数就是从 2 到根号 i 进行循环, 判定这个数能否被 i 整除,假设能整除就说明不是素数,转而判定下一个;2. 程序源代码:【程序 4】题目: 编程实现十进制数转化为二进制数,即从键盘输入一个0 到 32767 的十进制数, 输出其对
3、应的二进制数;1. 程序分析:十进制数转换为二进制数的过程就是不断对2 取余,取余后再除以二连续取余,最终将前面取得的余数序列倒序进行输出,即是该数对应的二进制数;其中, 每次的余数可放在一个整形数组中,便利进行倒序输出;2. 程序源代码:【程序 5】题目: 一个球从 100 米高度自由落下,每次落地后反弹回原高度的一半,再落下;编程求它 在第十次落地时,共运动了多少米?第十次反弹多高?1. 程序分析:典型的循环问题,设置两个变量分别记录小球反弹的高度和当前运动的距离,循环十次即得到结果;2. 程序源代码:【程序 6】题目:从键盘上输入一个表示年份的整数,判定该年是否是闰年,输出结果显示在屏幕
4、上;1. 程序分析:运算闰年的方法用自然语言描述如下:假如某年能被if4 整除但不能被100 整除,或者概念能被400 整除就该年为闰年;此题目主要是考虑语句中的规律表达式的正确描述;2. 程序源代码:【程序 7】名师归纳总结 - - - - - - -第 1 页,共 12 页精选学习资料 - - - - - - - - - 题目:水仙花数指一个三位数,其各位数字的立方和等于该数本身,例如153=13+5 3+3 3;编程求出全部的水仙花数;1. 程序分析:用穷举法对100 到 999 之间的数字进行数位拆分,然后通过一个if语句进行判定,将满意水仙花数条件的数打印输出即可;2. 程序源代码:
5、【程序 8】11 题目:编程实现从键盘输入两个正整数,求它们的最大公约数和最小公倍数并打印在屏幕上;1. 程序分析: 用辗转相除法求出两数的最大公约数,然后用两数的乘积除以最大公约数即可 得到两数的最小公倍数;2. 程序源代码:【程序 9】题目:编程求全部满意abcd=ab+cd2的四位数,即将四位数分为两段,使之相加求和后平方,结果等于自身;1. 程序分析: 用穷举法对1000 到 9999 的全部四位数逐个分解为前后两个数字,再对其进行判定,看是否满意要求,假设满意就打印输出,否就进行下次循环;2. 程序源代码:【程序 10】题目: 用挑选排序法对一组数据由小到大进行排序,数据分别为526
6、、36、2、369、56、45、78、 92、125、52;1. 程序分析:挑选排序法是从待排序的区间中经过比较,选出最小的数存放在 a0 中通 过交换, 再从剩余的未排序的 9 个数中再选出最小的数存放于 a1 中,以此类推,经过 9 要留意它与冒泡排序的不同,冒泡排序是每趟排序边比较边交换,趟挑选和交换就排序完成;而挑选排序是一趟比较完成后仅交换一次;2. 程序源代码:【程序 11】题目: 小明买橙子, 每个橙子 1.8 元,小明第一天买1 个柚子,其次天开头每天买前一天的三倍,直到购买的橙子个数为不超过 100 的最大值,编程求小明每天平均花多少钱;1. 程序分析: 利用循环掌握最终一天
7、不超过 100 个橙子, 将每天的花销及天数累加起来,求 得平均值;2. 程序源代码:【程序 12】题目:变成求出一个整数的任意次方的最终三位数,即求xy 的最终三位数,其中x 和 y从键盘输入;1. 程序分析:一个整数的任意次方很可能产生越界情形,因此要考虑运算结果是否越界的 问题,要防止产生越界问题同时又不使程序结果产生误差;2. 程序源代码:【程序 13】题目:依据输入的三角形的三条边的值,判定三角形的类型等边、等腰、直角、一般、非三角形并输出;1. 程序分析:先依据两边之和是否大于第三条边来判定是否能够成三角形,假设能构成三 角形就进一步依据边的值判定是什么类型的三角形;2. 程序源代
8、码:名师归纳总结 - - - - - - -第 2 页,共 12 页精选学习资料 - - - - - - - - - 【程序 14】题目:完全平方指用一个整数乘以自己例如1*1 ,2*2 ,3*3 等,依此类推;假设一个数能表示成某个整数的平方的形式,就称这个数为完全平方数;在全部的三位整数 100 到 999中查找符合如下条件的整数在屏幕上输出:这个数既是完全平方数,又有两位数字相同,如 121 11 的平方、 14412 的平方等;1. 程序分析:先利用循环判定一个100 到 999 的数是不是完全平方数,假设是就进一步别离各位数字,判定是否有两位相同;2. 程序源代码:【程序 15】题目
9、:有一种六位数,它本身是一个整数的平方,而且它的第三位和高三位也分别是一个 整数的平方,如 224625=4752,且 225=152,625=252;求满意该条件的全部六位数;1. 程序分析:穷举法;利用循环对 2. 程序源代码:【程序 16】100000 到 999999 之间的全部数按条件进行摸索;题目:可逆素数是指将一个素数的各位数字次序地倒过来构成的反序数依旧是素数,按以上表达求出全部的四位素数;1. 程序分析:定义一个函数用于判定参数是否是素数,对 找出符合条件的数并输出;2. 程序源代码:【程序 17】1000 到 9999 之间的数进行穷举,题目:已知某公司职工的工资底薪是 5
10、00 元,职工的销售额与提成的运算方式如下:销售额 2000 没有提成2000销售额 5000 提成 8% 5000销售额 10000 提成 10% 销售额 10000 提成 12% 利用 switch 语句编写程序,实现输入职工的销售额运算职工工资;1. 程序分析:先依据职工销售额运算出提成系数,利用 switch 语句依据系数运算出应发工资;2. 程序源代码:【程序 18】题目:打印出以下杨辉三角要求打印 10 行;1 1 1 1 1 1 1 2 1 3 3 1 4 6 4 1. 程序分析: 想要打印杨辉三角,第一要找出图形中数字的规律,即每行第一列和对角线数字均为 1,其余数字为上一行同
11、列数字与上一行前列数字之和;数据储备于二维数组,利用循环输出 10 行杨辉三角;2. 程序源代码:【程序 19】名师归纳总结 - - - - - - -第 3 页,共 12 页精选学习资料 - - - - - - - - - 题目:班里来了个新同学,很喜爱学数学;同学问他今年多大,他说:“ 我的年龄的平方是个三位数,立方是个四位数,四次方是个六位数;年龄的三次方和四次方正好用遍0、1、2、3、4、5、6、7、8、9 这十个数字,那么大家猜猜我年龄多大?”1. 程序分析:第一考虑年龄的范畴,由于17 的四次方是83521,小于六位, 22 的三次方是 10648,大于四位,所以年龄的范畴就确定出
12、来了,即18 至 21;然后对 18 到 21 之间的数字进行穷举,分别运算出它们的三次方和四次方,并将结果的四位数和六位数存于数组中,再对数组中的这十个数字进行判定,看是否 2. 程序源代码:【程序 20】0 到 9 每个数字显现了一次;题目:有一个八层教学楼,某时间在楼中上课的同学数量共有 765 人,而且恰巧每层 的同学数量都是楼下的两倍,编程求一楼和八楼的同学人数;1. 程序分析:穷举法,对一楼的同学人数进行穷举,每次运算出一楼到八楼的全部同学人 数,判定是否等于总同学人数 765;2. 程序源代码:【程序 21】24 题目:编程实现任意输入一行字符长度不超100,统计其中有多少个单词
13、并输出;其中,每两个单词之间以空格分隔开,且最终的字符不能为空格;1. 程序分析:第一使用 gets 函数将输入的字符串储存在一个字符数组中,然后判定数组 中第一个字符是否为终止符或空格,假如是就输出结果,否就就说明是一串正常字符;利 用循环,在遇到终止符之前,统计空格数量,空格数量加一即为单词数;2. 程序源代码:【程序 22】题目:不使用字符串处理函数 另一个字符串中,并打印输出;strcpy 来实现字符串的复制;输入一个字符串,拷贝到1.程序分析:可以使用 gets和 puts进行字符的猎取和输出;利用循环依次赋值进行拷贝,另外应留意终止符的处理;2.程序源代码:【程序 23】题目:统计
14、一个长度为十的整型数组中,要求只能使用一次循环,即最多循环十次;最大数和次大数、 最小数和次小数的值及下标,1.程序分析:此题很简洁,要留意题目要求每个数只能读取一次;2.程序源代码:【程序 24】题目:已知有两个长度为5 的有序整形数组升序排列,编程将其合并为一个长度为10 的数组,使其依旧有序;两数组中的值为运行时由键盘输入;1.程序分析:两个数组进行合并,第一定义出新的大小为10 的数组,然后利用两数组的下标进行从前到后循环,每次从两数组中挑一个较小的从前到后赋给新数组,循环终止后再把剩下的数赋值过去,合并完毕;2.程序源代码:【程序 25】题目:strlen函数是 C 函数库中求字符串
15、长度的函数,请使用递归自己实现这个函数;1.程序分析:用情形语句比较好,假如第一个字母一样,就判定用情形语句或 if 语句判定第二个字母;2.程序源代码:名师归纳总结 - - - - - - -第 4 页,共 12 页精选学习资料 - - - - - - - - - 【程序 26】题目:假设有个同学在爬楼梯,他可以一步上 同学上 n 层台阶的楼,总共有几种走法;1 个台阶、 2 个台阶或 3 个台阶,问这个1. 程序分析:使用递归思想,类似于“斐波那契数列” 的规律;2.程序源代码:【程序 27】题目:使用指针实现两个字符串的连接,比方两个字符串“I am ” 和“a student.” ,连
16、接后变成“I am a student” ;1.程序分析:定义一个连接函数 connectchar *a, char *b, char *c ,用于将 a 和 b 为首元素指针的两个字符串连接起来,并将首元素地址赋给 c;连接操作使用循环,利用指针 +1 后移操作,分别将指针 a 和 b 所指向字符依次赋给 c,最终须留意给予终止标记;2.程序源代码:【程序 28】题目:寒假立刻要来了,使用typedef 定义一个寒假结构体类型,包含以下三个成员变量:放假日期char 20、假期天数int 、假期备注char 100;在主函数中定义一个该结构体类型的指针,使用 malloc 为其动态安排内存,
17、然后实现程序运行时假期的各项信息的输入和打印输出,最终使用 free 释放内存;1.程序分析:在后面要学习的数据结构中,这种结构体指针的定义和动态安排内存的方法非经常用,假设不熟识 typedef 的使用方法,百度一下;2.程序源代码:【程序 29】题目:判定一个数是否是数组中的成员用二分法查找已知数组 a 中一共有 10 个有序的整数 由小到大排列 ;现在从键盘上输入一个数,判断这个数是否是数组 a 中的数, 假如是的话, 打印出此数在数组 a 中的位置,否就打印“ 找不到该数字”;1.程序分析: 设待查找的数为 k, 定义三个变量 low 、high 、mid 分别代表查找范畴的顶部、底部
18、和中间位置的数组下标,初始时 low=0,high=9,mid=low+high/2, 把数分成以 amid为中点的两段范畴;判定 k 是否等于 amid ,假设是,就找到;假设 k 大于 amid ,就 k 必在数组的后半段范畴,舍弃前半段, 在 amid+1 至 ahigh 中连续查找; 反之就在 alow至 amid-1 的前半段进行查找, 重复以上步骤, 逐步缩小查找范畴; 当 lowhigh 的时候,说明全部数字均已找遍都未找到想要的值,提示查找失败信息;2.程序源代码:【程序 30】题目:使用递归实现题目 29 的二分查找;1.程序分析:定义一个递归二分查找函数供主函数调用,由于是
19、递归进行查找,因此查找数组、要查找的值、当前查找的范畴low 和 high 都应作为该递归函数的参数;递归函数的出口有两个,一个是 lowhigh 说明没找到 ,另一个是 amid=k 说明找到了 ,其余情形就是要查找的值落在前半段或后半段,应设置不同的 low 、high 参数值;2.程序源代码: 二 综合训练要求:任选其一;都应递归调用自身, 但依据前半段仍是后半段的不同,名师归纳总结 - - - - - - -第 5 页,共 12 页精选学习资料 - - - - - - - - - 1只能使用 C语言,源程序要有适当的注释,使程序简洁阅读2综合类题目采纳文本菜单界面,调用界面和各个功能的
20、操作界面应尽可能清楚美 观. 3同学可自动增加新功能模块视情形可另外加分4写出课程设计报告,详细要求见相关说明文档 1、同学信息治理系统设计 结构体数组、 函数、指针、算法、流程结构等的 综合应用对一个有 stuNo 个同学的班级, 使用该系统实现对班级同学信息的录入、显示、查询、按成果排序、求平均分、信息修改、添加、删除等操作;功能要求:1本系统采纳一个结构体数组来储备班级全部同学的信息,班级和成果;其中班级又是一个结构体,包含专业名称和班号;2本系统显示菜单:请挑选菜单:每个结构包括: 学号、1信息录入;同学信息初始化,先询问要录入的同学个数,然后交互式从键盘输 入全部同学的各项信息;PS
21、:信息录入只能做一次,假设重复录入就会提示返回主菜单;规定不能有学号重复显现,因此录入时须检查录入的同学学号是否有重复,假设重复就提示重新输入,如其次张图所示;名师归纳总结 - - - - - - -第 6 页,共 12 页精选学习资料 - - - - - - - - - 2显示全部;从前到后依次打印输出全部同学的完整信息;3同学查询;可依据学号查询指定同学信息,假设存在就打印信息,否就进行提示;名师归纳总结 - - - - - - -第 7 页,共 12 页精选学习资料 - - - - - - - - - 4成果排序;对全部同学按成果进行由高到低的降序排列,并打印排序结果;5平均成果;求出全
22、部同学的平均成果并打印“ 同学们的平均成果为:XX.XX” ;6信息修改; 可修改指定学号同学的全部信息,挑选该菜单后会提示输入 要修改的 同学的学号, 去已有信息中查找,假设未找到就提示不存在,返回主菜单, 如图 1;假设找到该同学就打印该同学信息,并提示输入修改后的新信息,输入完毕就提示修改胜利;这里也需要留意,修改同学信息时也需要判别是否输入了与其他同学重复的学号,假设有重复就类似于信息录入时,提示重新输入, 但答应学号和自己修改之前一样;7添加同学;班里来了新同学,需要添加新的同学信息;PS:由于同学信息存于结构体数组中,有先后次序,因此添加时需输入要插入的位名师归纳总结 置,需要对位
23、置进行是否合法的判定,比方当前只有一个同学王一涵,合法的添加位置第 8 页,共 12 页- - - - - - -精选学习资料 - - - - - - - - - 只能有 1 和 2,其他位置会报错并返回主菜单,如图:添加新同学信息时也需要判别是否与已有同学的学号重复,如图:输入了正确的位置和正确的学号,就添加胜利 可以用显示全部来验证,如图:8删除同学;班里有同学转学,需要从信息表中删除他的信息,为便利起见我们使用学号, 而非位置来指定要删除的同学;挑选菜单后, 输入要删除的同学学号,假设该同学不存在就提示不存在信息并返回主菜单;假设存在就在信息表中删掉他的信息;名师归纳总结 - - - -
24、 - - -第 9 页,共 12 页精选学习资料 - - - - - - - - - 0退出系统;退出主菜单,显示“ 按任意键连续 ”;2、图书信息治理系统设计图书信息包括:书号、书名、作者名、分类号、出版单位、出版时间、价格等;试设计一图书信息治理系统,使之能供应以下功能:系统以菜单方式工作图书信息录入功能需保证书号无重复显示全部图书信息图书信息查询功能 按书号查询或者按书名查询 按出版时间排序功能图书信息修改功能需保证书号无重复图书信息添加功能需保证书号无重复图书信息删除功能3、车票治理系统一车站每天有 n 个发车班次, 每个班次都有一班次号1、2、3 n,固定的发车时间,固定的路线起始站
25、、终点站,大致的行车时间,固定的额定载客量;如班次 发车时间 起点站 终点站 行车时间 额定载量 已定票人数1 8:00 上海南 杭州 2 45 30 2 6:30 嘉兴 杭州 0.5 40 40 3 7:00 嘉兴 杭州 40 20 4 10:00 嘉兴 杭州 0.5 40 2 功能要求:用 c 语言设计一系统,能供应以下服务:1录入班次信息,可不定时地增加班次数据;2浏览班次信息, 可显示出全部班次当前状总 车时间 , 就显示“ 此班已发出” 的提示信息 ; 假如当前系统时间超过了某班次的发3查询路线:可按班次号查询 , 可按终点站查询;4班次排序,按发车时间从早到晚进行排序;5修改班次信
26、息,可按班次号对该班次信息进行修改;6删除班次信息,可删掉不需要的班次;7可通过系统进行售票、退票:名师归纳总结 - - - - - - -第 10 页,共 12 页精选学习资料 - - - - - - - - - 当查询出已定票人数小于额定载量且当前系统时间小于发车时间时才能售票,自 动更新已售票人数;退票时,输入退票的班次,当本班车未发出时才能退票,自动更新已售票人数;4、同学选课系统 假定有 n 门课程,每门课程有课程编号,课程名称,课程性质,学时,授课学时,试验 或上机学时,学分,开课学期等信息,同学可按要求如总学分不得少于 15自由选课;试设计一个选修课程系统,使之能供应以下功能:1
27、系统以菜单方式工作2课程信息和同学选课信息录入功能课程信息可用文件储存3全部课程信息浏览功能4依据课程编号、课程名称查询功能5依据课程的开课学期进行排序功能 6统计全部课程总学分、总学时、试验或上机学时功能 7添加新课程功能 8修改课程信息功能 9删除课程信息功能 10同学选课、退课功能 5、职工工资治理系统 功能设计要求1. 输入记录: 将每一个职工的、ID 号 ID 号不能有重复 以及基本工资、 职务工资、岗位津贴、医疗保险、公积金的数据作为一个记录;.该软件能建立一个新的数据文件或给 已建立好的数据文件增加记录;2显示记录:显示全部职工的信息;3. 记录查询:依据用户供应的记录或者依据职
28、工显示一个或几个职工的各项工资和平 均工资;4. 记录排序:依据职工的ID 号进行由小到大升序排列并打印;5添加记录:可以添加职工的信息记录,需要对 ID 号进行逃避重复;6修改记录:可以对数据文件的任意记录的数据进行修改并在修改前后对记录内容进行显示;7. 删除记录:可删除数据文件中的任一记录;8. 统计 : 运算各项工资平均工资及总工资;名师归纳总结 - - - - - - -第 11 页,共 12 页精选学习资料 - - - - - - - - - 统计符合指定条件 如职工工资前三项之和在3000 元以上、30002000 元、20001000 元 以内的工资职工人数及占总职工人数的百分
29、比;按字符表格形式打印全部职工工资信息表及平均工资 包括各项总的平均工资 ;例如:职工工资信息表ID 号 基本工资 职务工资 津贴 医疗保险 - 公积金 - 总工资01 张望 1286 794 198 109 135 2034 02 李明 1185 628 135 94 114 1740 03 王小民 895 438 98 64 73 1294 04 张效章 1350 868 210 116 150 2162 05 彭山 745 398 84 61 68 1098 各项平均工资 1092.2 625.2 145 88.8 108 名师归纳总结 - - - - - - -第 12 页,共 12 页