课程设计设计题。
本课程设计的基本要求。
根据规定的题目,编写程序设计说明,程序设计说明包括以下内容:
1. 设计的基本要求。
2. 程序运行的软硬件环境。
3. 程序的组成模块及每个模块的基本功能。
4. 每个模块的形式参数。
5. 每个模块的流程图。
6. 程序的使用方法。
7. 编程中的问题及解决的方法。
8. 心得体会。
题目及详细说明。
1. fibonacci数列。fibonacci数列的计算公式如下:
fib(1) =1;
fib(2) =1;
fib(n) =fib(n-1) +fib(n-2); 对大于等于3的任意n
1)简单变量“数据平移”方法计算fibonacci数列的第n项(正整数n通过键盘输入):说明变量old1=1,old2=1,newitem;新的fibonacci项newitem总是“距它最近”的前两项(old1与old2)的累加和。而后通过“old1=old2; old2=newitem;”进行所谓的“数据平移”。
接着计算另一个新的fibonacci项newitem,依次循环,直到求出数列的第n项时为止。
2)使用数组求出fibonacci数列的第n项(正整数n通过键盘输入)并显示在屏幕上:说明数组f用来存放fibonacci数列的各项之值,且仅初始化前两个元素f[0]=1,f[1]=1,而后通过f[i]=f[i-2]+f[i-1];依次计算出f[2]到f[n-1](注意f[n-1]恰为所要求出的第n项)并将该值显示在屏幕上。
2. 编程序,循环进行如下的处理过程:由计算机生成简单的四则运算题;用户给出答案;计算机判断对错。直到用户回答说不再继续做了时结束程序。
提示:可让用户选择指定出加、减、乘、除哪一种运算题,以及出一位数还是两位数的运算题;而后通过使用“rand()%10”或“rand()%100”来获得一个0到9的一位整数随机值或得到0到99的两位整数随机值来为用户出题。还可进一步对用户所做算术题的对错次数进行记录,结束程序时给出一个某种形式的成绩。
3. 数的进制转换。
1) 将输入的2进制数(一个非“0”即“1”的字符串)化为10进制数。
提示:用字符数组a盛放所输入的二进制数;而后从后往前逐一计算每一位的“位权”w (2的0次方、2的1次方、..再计算“位权”乘以“位值”并累加到一个初值为0的变量value上,最后输出该value。
2)如何把8进制数或16进制数化为10进制数。
3)如何把某一个k进制的数化为10进制数呢?
4. 编程序,输入正整数m,它代表一个人民币钱数(元数)。求取这样一个方案,使用最少张数的人民币纸币,凑成上述的钱数m,并输出求取结果。
注意,现在共有7种元以上面值的人民币纸币,分别为:100,50,20,10,5,2,1。
5. 在体育、文艺比赛及选举等打分类项目中,为了公平起见,往往n个评委打出分数后,要去掉一个最高分和一个最低分,然后求取平均得分。当n较大时(本题设为9),则应取掉两个最高分和两个最低分,然后求取平均分。
编程实现该算法。
6. 用户任意输入一个年份以及该年的1月1日是星期几,而后再输入该年的任意一个月份,由程序负责在屏幕上按照你所设计的格式显示出这一个月的月历。
思考:利用元年元月元日(即1年1月1日)是星期一的已知事实,可对程序进行改造,让用户仅输入任意一个年份和一个月份,则程序就应按格式显示出该年那一个月的月历。
7.有n人围坐成一圈(假设他们的编号沿顺时针方向依次为1到n)。编程序,使用数组来存放各数据(人员编号),而后从1号人员开始数起(沿顺时针方向),当数到k时(其中k>1由用户通过cin输入指定),则该号人员被“淘汰出局”;接着仍沿顺时针方向从被淘汰出局者的下一人员又重新从1开始数起,数到k后,淘汰第2个人;如此继续,直到最后剩下一个人时停止。
请输出先后被“淘汰”的人的编号。
8. 编制具有如下原型的函数prime,用来判断整数n是否为素数:bool prime(int n); 而后编制主函数,任意输入一个大于4的偶数d,找出满足d=d1+d2的所有数对,其中要求d1与d2均为素数(通过调用prime来判断素数)。
如偶数18可以分解为11+7以及13+5;而偶数80可以分解为+7。
提示:i与d-i的和恰为偶数d,而且只有当i与d-i均为奇数时才有可能成为所求的“数对”。
9. 编一通用排序程序,程序可以对任意类型的数值常数或字符串构成的行进行排序,通过人机对话选择程序是按数值进行排序还是按字符顺序进行排序。排序是针对数据文件的。例如。
初识数据为:12,24,9,128,3,76,345
按数值大小排序应为:3,9,12,24,76,128,345
按字符串大小排序应为:12,128,24,3,345,76,9
10.编一程序对至少三个排序方法进行比较,比较方法是生成一组数据(≥400),用选定的排序方法进行排序。输出每种方法数据比较或交换的次数。最后输出所花费的时间。
注:此题要用到vc++函数库中time()函数。
time_t time(time_t *timeptr)
参数说明:time_t *timeptr 指向存放自格林威治标准时间2024年1月1日00:00:00:至现在经过多少秒数,类型为time_t的指针变量。
功能描述:函数读取当前时间,然后计算自格林威治标准时间2024年1月1日00:00:00:至现在经过多少秒数,结果被放在类型为time_t的指针变量所指向的地址变量中。
函数返回值:返回自格林威治标准时间2024年1月1日00:00:00:至现在经过多少秒数。
头文件:11.编一函数(过程)集, 可分别将整数、实数、布尔值转换成相应的字串,及将以字串表示的整数、实数、布尔值转换成相应类型的值。
(整数->字串,实数->字串均应规定位宽)。
12.输入一批学生某门课程考试的各题的分数,计算每个人的总分,统计各分数段0~49, 50~59, 60~69,70~79, 80~89, 90~100的人数及占总人数的百分比。要求输入:
课程名称,考试日期,学生班号,学生姓名,学号,课程考试得分。输出要求:课程名称,考试日期,学生班号;各分数段的人数及百分比。
13.验证卡布列克运算。
任意一个四位数,只要它们各个位置上的数字是不全相同的,就有这样的规律:
1)将组成这个四位数的四个数字由大到小排列,形成由这四个数字构成的最大的四位数;
2)将组成这个四位数的四个数字由小到大排列,形成由这四个数字构成的最小的四位数(如果四个数字中含有0,则得到的数不足四位);
3)求两个数之差,得到一个新的四位数。
4)重复以上过程,最后得到的结果总是6174。
14.100!的末尾有多少个零。
由于计算机所能表示的整数范围有限,不可能用求出100!之后再数其尾数有多少个零的方法。必须从数学上分析100!
末尾出产生零的条件。不难看出:一个整数若含有一个5的因子则必然会在求100!
时产生一个零。因此原问题转换为求1到100这100个整数中包含了多少5的因子。
15.高次方数的尾数。
求13的13次方的尾数。乘法的规律:乘积的最后三位的值只与乘数和被乘数的后三位有关,与乘数和被乘数的高位无关。
16.输出正六边型。
编写程序输出边长为n的空心正六边型(n由用户输入),其边由’*”组成。
思考:输出边长为n的空心正m边型(n,m由用户输入)。
17. 输出空心圆。
编写程序在屏幕上输出一个由”*”围成的空心圆。由于屏幕是25行×80列,故将园心定在屏幕中心40列的位置,将半径定为10行,这样可保证整个图形显示在一屏中。利用圆的方程x2+y2=r2(r=10)可求出坐标(x,y),然后用对称性算出右侧对应点的坐标。
18.横向绘制余弦曲线。
在屏幕上用”*”横向显示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)的对应关系。
19.绘制余弦曲线和直线。
在屏幕上显示0~360度的cos(x)曲线与直线f(x)=45*(x-1)+31的迭加图形。其中cos图形”*”表示,f(x)用”+”表示,在两个图形交叉点处则用f(x)图形的符号。图形迭加的关键是要在分别计算出同一行中两个图形的列方向点坐标后,正确判断相互的位置关系。
为此,可以先判定图形的交点,再分别控制打印不同的图形。
20.模拟人工洗牌。
编写一个模拟人工洗牌的程序,将洗好的牌分别发给四个人。
使用结构card 来描述一张牌,用随机函数来模拟人工洗牌的过程,最后将洗好的52张牌顺序分别发给四个人。
对每个人的牌要按桥牌的规则输出。即一个人的牌要先按牌的花色(顺序为梅花、方块、红心和黑桃)进行分类,同一类的牌要再按a、k、q、j牌的大小顺序排列。另发牌应按四个人的顺序依次分发。
注:c++随机数函数有:
void srand(unsigned seed)
功能:函数可以设置rand函数所用得到随机数产生算法的种子值。任何大于1的种子值都会将rand随机数产生函数所产生的虚拟随机数序列重新设置一个起始点。
int rand(void)
功能:此函数可以产生介于0到32767间的虚拟随机数,所谓虚拟随机数的意思就是因为当只设置相同的启动种子值,所产生的数值序列都是可**的。要产生不可**的数值序列,必须通过srand函数不断改变随机数的启始种子值,已产生最佳的随机数。
头文件:21. 用户猜测藏物位置:
计算机在n行n列(行号为0到n-1,列号为0到n-1)的“棋盘”的某一位置处“藏放一物件”(具体位置通过使用“rand()%10”来随机产生);用户通过输入行列号来“寻找”该物件;若没猜对时计算机要告诉用户与藏放物件的位置有多远(取整后的近似距离)。
思考:若没猜对时也可增加告诉用户藏物的方向信息;另外在猜对结束时,还可告诉用户共猜了几次。
22. 编写具有如下函数原型的递归与非递归两种函数f,负责判断数组a的前n个元素是否从大到小完全有序了,是则返回true,否则返回false。并编制主函数对它们进行调用,以验证其正确性。
C 课程设计
自动走迷宫小游戏。根据课堂讲授内容,做相应的自主练习,消化课堂所讲解的内容 通过调试典型例题或习题积累调试c 程序的经验 通过完成辅导教材中的编程题,逐渐培养学生的编程能力 用计算机解决实际问题的能力。同时在设计的过程中发现自己的不足之处,对以前所学过的知识理解的更加深刻,掌握得更加牢固。迷宫生成。...
c 课程设计
哈尔滨 课程设计报告。课程 c 学号 姓名 班级 教师 1.管理系统的功能说明。课程信息管理 能够增加数据,删除数据,显示数据,修改数据,按姓名和首字母查询数据和一些基本的程序功能。2.存储数据的描述。coursenumber 课程号coursename 课程名subject 所属专业xingzhi...
C课程设计
面向对象程序设计课程设计。一 设计要求。1 课程设计以3 4人为一组,每人一个模块 2 课程设计时间为1周 在处理系统的时候,要从分析系统的需求入手,根据系统需求进行详细分析,明确系统功能,然后设计系统整体架构以及划分系统模块,按照模块分配小组中每个组员的具体任务,完成设计。二 系统设计规范。1 命...