课程设计文档_第1页
课程设计文档_第2页
课程设计文档_第3页
课程设计文档_第4页
课程设计文档_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

·《C语言基础》课程设计(一)基本要求题目要求:基本题共30题,任选其中的20道题。提交实验报告(可手写、可电子版打印)。【程序1】1

题目:任意输入三个整数,编程实现对这三个数由小到大进行排序,并将排序后的结果显示在屏幕上。

1.程序分析:两个数一组使用if进行条件判断,如果逆序则使用中间变量对其进行交换。

2.程序源代码:【程序2】7

题目:猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。第二天早上又将第一天剩下的桃子吃掉一半,有多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想在吃时,发现只剩下一个桃子了。编写程序求猴子第一天共摘了多少个桃子。

1.程序分析:先找出变量间的关系,即第二天的桃子数加1的2倍等于第一天的桃子数。利用循环,即求出桃子总数。

2.程序源代码:【程序3】3

题目:求100到200之间的全部素数,打印输出。

1.程序分析:素数是大于1的整数,除了能被自身和1整除外,不能被其他正整数整除。因此判断素数就是从2到根号i进行循环,判断这个数能否被i整除,若能整除则说明不是素数,转而判断下一个。

2.程序源代码:【程序4】

题目:编程实现十进制数转化为二进制数,即从键盘输入一个0到32767的十进制数,输出其对应的二进制数。

1.程序分析:十进制数转换为二进制数的过程就是不断对2取余,取余后再除以二继续取余,最后将前面取得的余数序列倒序进行输出,即是该数对应的二进制数。其中,每次的余数可放在一个整形数组中,方便进行倒序输出。

2.程序源代码:【程序5】

题目:一个球从100米高度自由落下,每次落地后反弹回原高度的一半,再落下。编程求它在第十次落地时,共运动了多少米?第十次反弹多高?

1.程序分析:典型的循环问题,设置两个变量分别记录小球反弹的高度和当前运动的距离,循环十次即得到结果。

2.程序源代码:【程序6】

题目:从键盘上输入一个表示年份的整数,判断该年是否是闰年,输出结果显示在屏幕上。

1.程序分析:计算闰年的方法用自然语言描述如下:如果某年能被4整除但不能被100整除,或者概念能被400整除则该年为闰年。本题目主要是考虑if语句中的逻辑表达式的正确描述。

2.程序源代码:【程序7】

题目:水仙花数指一个三位数,其各位数字的立方和等于该数本身,例如153=13+53+33。编程求出所有的水仙花数。

1.程序分析:用穷举法对100到999之间的数字进行数位拆分,然后通过一个if语句进行判断,将满足水仙花数条件的数打印输出即可。

2.程序源代码:【程序8】11

题目:编程实现从键盘输入两个正整数,求它们的最大公约数和最小公倍数并打印在屏幕上。

1.程序分析:用辗转相除法求出两数的最大公约数,然后用两数的乘积除以最大公约数即可得到两数的最小公倍数。

2.程序源代码:【程序9】

题目:编程求所有满足abcd=(ab+cd)2的四位数,即将四位数分为两段,使之相加求和后平方,结果等于自身。

1.程序分析:用穷举法对1000到9999的所有四位数逐个分解为前后两个数字,再对其进行判断,看是否满足要求,若满足则打印输出,否则进行下次循环。

2.程序源代码:【程序10】

题目:用选择排序法对一组数据由小到大进行排序,数据分别为526、36、2、369、56、45、78、92、125、52。

1.程序分析:选择排序法是从待排序的区间中经过比较,选出最小的数存放在a[0]中(通过交换),再从剩余的未排序的9个数中再选出最小的数存放于a[1]中,以此类推,经过9趟选择和交换则排序完成。要注意它与冒泡排序的不同,冒泡排序是每趟排序边比较边交换,而选择排序是一趟比较完成后仅交换一次。

2.程序源代码:【程序11】

题目:小明买橙子,每个橙子1.8元,小明第一天买1个柚子,第二天开始每天买前一天的三倍,直到购买的橙子个数为不超过100的最大值,编程求小明每天平均花多少钱。

1.程序分析:利用循环控制最后一天不超过100个橙子,将每天的花销及天数累加起来,求得平均值。

2.程序源代码:【程序12】

题目:变成求出一个整数的任意次方的最后三位数,即求x^y的最后三位数,其中x和y从键盘输入。

1.程序分析:一个整数的任意次方很可能产生越界情况,因此要考虑计算结果是否越界的问题,要避免产生越界问题同时又不使程序结果产生误差。

2.程序源代码:【程序13】

题目:根据输入的三角形的三条边的值,判断三角形的类型(等边、等腰、直角、普通、非三角形)并输出。

1.程序分析:先根据两边之和是否大于第三条边来判断是否能够成三角形,若能构成三角形则进一步根据边的值判断是什么类型的三角形。

2.程序源代码:题目:班里来了个新同学,很喜欢学数学。同学问他今年多大,他说:“我的年龄的平方是个三位数,立方是个四位数,四次方是个六位数;年龄的三次方和四次方正好用遍0、1、2、3、4、5、6、7、8、9这十个数字,那么大家猜猜我年龄多大?”1.程序分析:首先考虑年龄的范围,因为17的四次方是83521,小于六位,22的三次方是10648,大于四位,所以年龄的范围就确定出来了,即18至21。然后对18到21之间的数字进行穷举,分别计算出它们的三次方和四次方,并将结果的四位数和六位数存于数组中,再对数组中的这十个数字进行判断,看是否0到9每个数字出现了一次。2.程序源代码:【程序20】题目:有一个八层教学楼,某时间在楼中上课的学生数量共有765人,而且恰巧每层的学生数量都是楼下的两倍,编程求一楼和八楼的学生人数。

1.程序分析:穷举法,对一楼的学生人数进行穷举,每次计算出一楼到八楼的所有学生人数,判断是否等于总学生人数765。

2.程序源代码:【程序21】24题目:编程实现任意输入一行字符(长度不超100),统计其中有多少个单词并输出。其中,每两个单词之间以空格分隔开,且最后的字符不能为空格。1.程序分析:首先使用gets()函数将输入的字符串保存在一个字符数组中,然后判断数组中第一个字符是否为结束符或空格,如果是则输出结果,否则则说明是一串正常字符。利用循环,在遇到结束符之前,统计空格数量,空格数量加一即为单词数。2.程序源代码:【程序22】题目:不使用字符串处理函数strcpy()来实现字符串的复制。输入一个字符串,拷贝到另一个字符串中,并打印输出。1.程序分析:可以使用gets()和puts()进行字符的获取和输出。利用循环依次赋值进行拷贝,另外应注意结束符的处理。2.程序源代码:【程序23】题目:统计一个长度为十的整型数组中,最大数和次大数、最小数和次小数的值及下标,要求只能使用一次循环,即最多循环十次。1.程序分析:本题很简单,要注意题目要求每个数只能读取一次。2.程序源代码:【程序24】题目:已知有两个长度为5的有序整形数组(升序排列),编程将其合并为一个长度为10的数组,使其依然有序。两数组中的值为运行时由键盘输入。1.程序分析:两个数组进行合并,首先定义出新的大小为10的数组,然后利用两数组的下标进行从前到后循环,每次从两数组中挑一个较小的从前到后赋给新数组,循环结束后再把剩下的数赋值过去,合并完毕。2.程序源代码:【程序25】题目:strlen()函数是C函数库中求字符串长度的函数,请使用递归自己实现这个函数。1.程序分析:用情况语句比较好,如果第一个字母一样,则判断用情况语句或if语句判断第二个字母。2.程序源代码:【程序26】题目:假设有个同学在爬楼梯,他可以一步上1个台阶、2个台阶或3个台阶,问这个同学上n层台阶的楼,总共有几种走法。1.程序分析:使用递归思想,类似于“斐波那契数列”的规律。2.程序源代码:【程序27】题目:使用指针实现两个字符串的连接,比如两个字符串“Iam”和“astudent.”,连接后变成“Iamastudent”。1.程序分析:定义一个连接函数connect(char*a,char*b,char*c),用于将a和b为首元素指针的两个字符串连接起来,并将首元素地址赋给c。连接操作使用循环,利用指针+1后移操作,分别将指针a和b所指向字符依次赋给c,最后须注意赋予结束标记。2.程序源代码:【程序28】题目:寒假马上要来了,使用typedef定义一个寒假结构体类型,包含以下三个成员变量:放假日期(char[20])、假期天数(int)、假期备注(char[100])。在主函数中定义一个该结构体类型的指针,使用malloc()为其动态分配内存,然后实现程序运行时假期的各项信息的输入和打印输出,最后使用free()释放内存。1.程序分析:在后面要学习的《数据结构》中,这种结构体指针的定义和动态分配内存的方法非常常用,若不熟悉typedef的使用方法,百度一下。2.程序源代码:【程序29】题目:判断一个数是否是数组中的成员(用二分法查找)已知数组a中一共有10个有序的整数(由小到大排列)。现在从键盘上输入一个数,判断这个数是否是数组a中的数,如果是的话,打印出此数在数组a中的位置,否则打印“找不到该数字”。1.程序分析:①设待查找的数为k,定义三个变量low、high、mid分别代表查找范围的顶部、底部和中间位置的数组下标,初始时low=0,high=9,mid=(low+high)/2,把数分成以a[mid]为中点的两段范围。②判断k是否等于a[mid],若是,则找到。③若k大于a[mid],则k必在数组的后半段范围,舍弃前半段,在a[mid+1]至a[high]中继续查找。反之则在a[low]至a[mid-1]的前半段进行查找,重复以上步骤,逐步缩小查找范围。④当low>high的时候,说明所有数字均已找遍都未找到想要的值,提示查找失败信息。2.程序源代码:【程序30】题目:使用递归实现题目29的二分查找。1.程序分析:定义一个递归二分查找函数供主函数调用,由于是递归进行查找,因此查找数组、要查找的值、当前查找的范围low和high都应作为该递归函数的参数。递归函数的出口有两个,一个是low>high(说明没找到),另一个是a[mid]==k(说明找到了),其余情况就是要查找的值落在前半段或后半段,都应递归调用自身,但根据前半段还是后半段的不同,应设置不同的low、high参数值。2.程序源代码:(二)综合训练要求:任选其一。(1)只能使用C语言,源程序要有适当的注释,使程序容易阅读(2)综合类题目采用文本菜单界面,调用界面和各个功能的操作界面应尽可能清晰美观!(3)学生可自动增加新功能模块(视情况可另外加分)(4)写出课程设计报告,具体要求见相关说明文档1、学生信息管理系统设计(结构体数组、函数、指针、算法、流程结构等的综合应用)对一个有stuNo个学生的班级,使用该系统实现对班级学生信息的录入、显示、查询、按成绩排序、求平均分、信息修改、添加、删除等操作。功能要求:(1)本系统采用一个结构体数组来存储班级所有学生的信息,每个结构包括:学号、姓名、班级和成绩。其中班级又是一个结构体,包含专业名称和班号。(2)本系统显示菜单:请选择菜单:1.信息录入。学生信息初始化,先询问要录入的学生个数,然后交互式从键盘输入所有学生的各项信息。PS:①信息录入只能做一次,若重复录入则会提示返回主菜单。②规定不能有学号重复出现,因此录入时须检查录入的学生学号是否有重复,若重复则提示重新输入,如第二张图所示。2.显示全部。从前到后依次打印输出所有学生的完整信息。3.学生查询。可根据学号查询指定学生信息,若存在则打印信息,否则进行提示。4.成绩排序。对所有学生按成绩进行由高到低的降序排列,并打印排序结果。5.平均成绩。求出所有学生的平均成绩并打印“学生们的平均成绩为:XX.XX”。6.信息修改。可修改指定学号学生的所有信息,选择该菜单后会提示输入(要修改的)学生的学号,去已有信息中查找,若未找到则提示不存在,返回主菜单,如图1;若找到该学生则打印该学生信息,并提示输入修改后的新信息,输入完毕则提示修改成功。这里也需要注意,修改学生信息时也需要判别是否输入了与其他学生重复的学号,若有重复则类似于信息录入时,提示重新输入,但允许学号和自己修改之前一样。7.添加学生。班里来了新同学,需要添加新的学生信息。PS:①由于学生信息存于结构体数组中,有先后次序,因此添加时需输入要插入的位置,需要对位置进行是否合法的判断,比如当前只有一个学生王一涵,合法的添加位置只能有1和2,其他位置会报错并返回主菜单,如图:②添加新学生信息时也需要判别是否与已有学生的学号重复,如图:③输入了正确的位置和正确的学号,则添加成功(可以用显示全部来验证),如图:8.删除学生。班里有同学转学,需要从信息表中删除他的信息,为方便起见我们使用学号,而非位置来指定要删除的学生。选择菜单后,输入要删除的学生学号,若该学生不存在则提示不存在信息并返回主菜单;若存在则在信息表中删掉他的信息。0.退出系统。退出主菜单,显示“按任意键继续…”。2、图书信息管理系统设计图书信息包括:书号、书名、作者名、分类号、出版单位、出版时间、价格等。试设计一图书信息管理系统,使之能提供以下功能:系统以菜单方式工作图书信息录入功能(需保证书号无重复)显示全部图书信息图书信息查询功能(按书号查询或者按书名查询)按出版时间排序功能图书信息修改功能(需保证书号无重复)图书信息添加功能(需保证书号无重复)图书信息删除功能3、车票管理系统一车站每天有n个发车班次,每个班次都有一班次号(1、2、3…n),固定的发车时间,固定的路线(起始站、终点站),大致的行车时间,固定的额定载客量。如班次

发车时间

起点站

终点站行车时间

额定载量

已定票人数1

8:00

上海南

杭州

2

45

302

6:30

嘉兴

杭州

0.5

40

403

7:00

嘉兴

杭州

0.5

40

204

10:00

嘉兴

杭州

0.5

40

2…功能要求:用c语言设计一系统,能提供下列服务:(1)录入班次信息,可不定时地增加班次数据。(2)浏览班次信息,可显示出所有班次当前状总(如果当前系统时间超过了某班次的发车时间,则显示“此班已发出”的提示信息)。(3)查询路线:可按班次号查询,可按终点站查询。(4)班次排序,按发车时间从早到晚进行排序。(5)修改班次信息,可按班次号对该班次信息进行修改。(6)删除班次信息,可删掉不需要的班次。(7)可通过系统进行售票、退票:①当查询出已定票人数小于额定载量且当前系统时间小于发车时间时才能售票,自动更新已售票人数。②退票时,输入退票的班次,当本班车未发出时才能退票,自动更新已售票人数。4、学生选课系统假定有n门课程,每门课程有课程编号,课程名称,课程性质,学时,授课学时,实验或上机学时,学分,开课学期等信息,学生可按要求(如总学分不得少于15)自由选课。试设计一个选修课程系统,使之能提供以下功能:(1)系统以菜单方式工作(2)课程信息和学生选课信息录入功能(课程信息可用文件保存)(3)全部课程信息浏览功能(4)根据课程编号、课程名称查询功能(5)根据课程的开课学期进行排序功能(6)统计所有课程总学分、总学时、实验或上机学时功能(7)添加新课程功能(8)修改课程信息功能(9)删除课程信息功能(10)学生选课、退课功能5、职工工资管理系统功能

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论