《C语言程序设计》课程设计任务书建电11412.docx
- 文档编号:13347333
- 上传时间:2023-06-13
- 格式:DOCX
- 页数:17
- 大小:144.17KB
《C语言程序设计》课程设计任务书建电11412.docx
《《C语言程序设计》课程设计任务书建电11412.docx》由会员分享,可在线阅读,更多相关《《C语言程序设计》课程设计任务书建电11412.docx(17页珍藏版)》请在冰点文库上搜索。
《C语言程序设计》课程设计任务书建电11412
《C语言》课程设计任务书
一、性质与目的:
本课程设计是学生学习完《C语言程序设计》课程后进行的一次全面的综合练习。
本课程设计的目的和任务:
(1)巩固和加深学生对C语言课程的基本知识的理解和掌握;
(2)掌握C语言编程和程序调试的基本技能;(3)利用C语言进行简单软件设计的基本思路和方法;(4)提高运用C语言解决实际问题的能力。
通过实习,加深学生对课堂所学基础知识的掌握与理解,提高学生对所学内容的综合运用能力;同时通过查询资料,培养学生自学、接受新知识能力,提高学习兴趣;增强学生程序设计能力,掌握编程技巧,培养学生实际上机调试能力。
二、基本要求:
1、选题规定
2、设计结束后,要求每个学生上交一份打印的实习报告。
3、设计期间,学生要服从指导教师统一安排,遵守机房制度。
4、严格遵守纪律,不迟到,不早退。
对于无故缺勤者,成绩按不及格处理。
三、设计内容:
题目见后边附录
四、课程设计的成绩评定
a)实习期间的平时表现;
b)设计任务的考核成绩;
c)设计报告的批阅成绩。
根据以上的成绩由指导教师进行综合评定,成绩分优、良、中、及格和不及格五个等级。
五、实习进程
实习为期一周,共22学时,周一至周四每天利用半天时间查阅资料,另外半天到计算机房调试程序(上机的具体时间遵照机房的安排),周五对所设计的软件进行上机考核验收,考核合格者书写设计报告(电子版和打印版),下周一交给指导教师。
六、设计报告格式
首先是封面(如下图)
其次是目录(要求根据报告内容自动生成)
一、设计思路
二、程序流程图
三、源程序清单
四、程序运行结果
五、设计总结
六、教师评语(学生不要填写)
然后是根据目录而写的具体内容
附录:
(一)基础部分:
1.输入一个五位整数,将它反向输出。
例如输入12345,输出应为54321。
(15分)
2.用两种循环结构分别编程计算1+2+3…+100的值。
运行结果为“1+2+…+100=5050”(15分)
3.从终端读入20个数据到数组中,统计其中正数的个数,并计算它们之和。
(15分)
4.利用指针实现将5个整数输入到数组a中,然后将a逆序复制到数组b中,并输出b中各单元的值。
(20分)
5.要将五张100元的大钞票,换成等值的50元,20元,10元,5元一张的小钞票,要求换成30张小钞票,每种面值的至少一张,编程输出所有可能的换法,程序应适当考虑减少重复次数。
(25分)
6.求n以内(不包括n)同时能被3和7整除的所有自然数之和的平方根s,并作为函数值返回,最后结果s输出到文件out.dat中。
例如若n为1000时,函数值应为:
s=153.909064。
(30分)
7.用指向指针的方法对n个整数排序并输出。
要求将排序单独写成一个函数。
N个整数在主函数中输入。
最后在主函数中输出。
8.编写密码加密和解密函数,对一个明码串,根据其ASCⅡ码值在反转ASCⅡ码表ASC(255)、ASC(254)、ASC(253)、……、ASC(0)中对应位置进行加密或解密。
如明密“abf1243”,其ASCⅡ码分别是97、98、99、49、50、51、52,根据反转ASCⅡ码表,将其转换成ASCⅡ码是255-97、255-98、255-99、255-49、255-50、255-51、255-52的密码串。
9.求矩阵a、b乘积,结果存入矩阵c中并按矩阵形式输出。
矩阵相乘的前提:
矩阵A(m×p)的列数p=矩阵B(p×n)。
即:
C(m×n)=A·B要求
a11a12…a1p
a21a22…a2p
…
an1an2…anp
A=
b11b12…b1n
b21b22…b2n
…
bp1bp2…bpn
B=
c11c12…c1n
c21c22…c2n
…
cm1cm2…amn
C=
其计算公式是:
(i=1,2,…,mj=1,2,…,n)
10.编写一个将某个范围在-32768~32767之间的整数转换为R进制(R=2,8,16)的通用程序。
要求程序首先选择转换的进制(二——B/B,十六——H/h,八——O/o),然后输入要转换的数,键入Q/q时退出。
要求只编写无符号整数的转换的程序。
11.要求设计者在屏幕上打印出杨辉三角形。
1
11
121
1331
14641
15101051
...... ... ... ...
12.找出1000内回文素数:
对一整数n,从左向右和从右向左读其结果值相同且是素数。
13.设计程序将两个递增有序的数组合并为一个递增有序的数组。
14、编写一个程序,让它有以下功能:
从键盘上输入一个五位数,对此整数中的五个数值进行从大到小排序,形成一个新的五位数,输出这个整数。
15、输入年、月、日,输出该日期是该年的第几天。
16、利用数组实现数据的存储。
将学生的学号和成绩存储在数组中,利用循环计算出数组中存储学生的平均成绩,找出高于平均分的学生信息并输出。
17、输入五个国家的名字,按字母顺序(即按ASCII码从小到大的顺序)排列输出。
18、用指针实现:
任意输入20个数,将它们按照从大到小的顺序输出。
19、编程完成数据加密。
数据是五位的整数,加密规则为:
每位数字都加上6,然后用和除以8的余数代替该数字,再将第一位和第五位交换,第二位和第四位交换。
20、请猜数字,该数字由系统随即产生。
要求:
用户最多有10次猜测的机会,如果在10次内猜对数字,则程序显示祝贺信息,如果连续10次都没有猜中数字,则游戏自动退出。
(提示:
可能用到以下库函数:
randomize();用系统的时间作为随机种子;包含于stdlib.h库中
random(100):
随机产生0-99之间的一个随机数;包含于stdlib.h库中
toupper():
将字符c转换为大写英文字母,包含于ctype.h库中)
21、有一个3×4的矩阵,要求编写程序找出每一行中最大值并与第一列交换。
22、输入五个字符串,要求按照字母顺序(即按ASCII码从小到大的顺序)输出这五个字符串。
23、用指针实现:
把一个整数插入到由小到大排列的数列中,插入后仍然保持由小到大的顺序。
24、编程解决如下数学问题:
有12升水,怎样利用一个8升和一个5升的容器将水分为两个6升?
要求以如下格式打印出分水步骤。
a12b8c5
1200
***(“*”表示当前状态下每个容器的盛水量)
......
066
25、编程实现:
有二维数组a[3][3]={{5.4,3.2,8},{6,4,3.3},{7,3,1.3}},将数组a的每一行元素均除以该行上的主对角元素(第1行同除以a[0][0],第2行同除以a[1][1],...),按行输出新数组。
26、编程:
设x取值为区间[1,20]的整数,求函数f(x)=x-sin(x)-cos(x)的最大值,要求使用自定义函数实现f(x)功能。
27、编写函数fun,通过指针实现将一个字符串反向。
要求主函数输入字符串,通过调用函数fun实现输入字符串反向。
28、已知学生三门课程基本信息如下。
请使用结构体编程,计算学生三门课程平均成绩后,列表输出学生的姓名、数学、英语、计算机、平均分信息,并按平均分排序。
姓名数学英语计算机
Mary9310088
Jone829090
Peter917671
Rose1008092
29、编程解决如下问题:
鸡翁一,值钱五;鸡母一,值钱三;鸡雏三,值钱一。
百钱买百鸡,问鸡翁,鸡母,鸡雏各几何?
30、编程实现:
有二维数组a[3][3]={{1.3,2.7,3.6},{2,3,4.7},{3,4,1.27}},将数组a的每一行元素均除以该行上绝对值最大的元素,按行输出新数组。
31、编程:
设x、y取值为区间[1,10]的整数,f(x,y)=(3x-2y)/(x+y),求使f(x,y)取最小值的x1、y1,要求使用自定义函数实现f(x,y)功能。
32、编写函数fun,其功能是:
在字符串中所有数字字符前加一个“*”字符,要求通过指针实现。
33、编程:
已知学生记录由学号和学习成绩构成,N名学生的记录已存入结构体数组中,找出成绩最低的学生,并输出这个学生的信息,已知学生信息如下。
A01,81;A02,89;A03,66;A04,87;A05,77
A06,90;A07,79;A08,61;A09,80;A10,71
34、编程解决如下问题。
请在整数n=742683613984中删除8个数字,使得余下的数字按原次序组成的新数最小。
要求如下:
(1)整数n和删除数字的个数“8”在源程序中完成赋值,程序直接输出运行结果;
(2)程序结果输出先后被删除的数字(之间以逗号分隔)和删除后所得的最小数。
(提示:
整数n可以以字符数组的方式定义、赋值和处理)
35、编程解决如下问题
有一个数学等式:
ABCD*E=DCBA,式中的一个字母代表一位数字,试找出所有符合上述要求的乘积式并打印输出。
36、编程解决如下问题
请在整数n=92081346718538中删除10个数字,使得余下的数字按原次序组成的新数最大。
要求如下:
(1)整数n和删除数字的个数“10”在源程序中完成赋值,程序直接输出运行结果;
(2)程序结果输出先后被删除的数字(之间以逗号分隔)和删除后所得的最大数。
(提示:
整数n可以以字符数组的方式定义、赋值和处理)
(二)中等难度部分:
1、编写一个函数InverseByWord(char*sentence),实现一个英文句子按单词逆序存放的功能,并给出测试程序。
如:
Thisisaninterestingprogramme.
逆序后变为:
.programmeinterestinganisThis
2、编程实现输入一串英文,统计其中各单词出现的个数(不区分大小写字母),以“000”作为字符串输入结束标志,例如:
Twinkletwinklelittlestar000(回车)
twinklelittlestar
211
3、编写一个简单的通讯录管理系统。
通讯录包括:
姓名、通讯地址、邮编、联系电话,现编写一个通讯录管理系统,可以对通讯录进行输入、显示、查找,通讯录保存到一个文件中。
(50分)
(提示:
可能用到以下库函数:
malloc(),功能:
分配size字节的存储区,
用法:
(类型*)malloc(size*sizeof(你要定义的类型));包含于
feof(),功能:
检测文件是否结束
用法:
intfeof(fp)
FILE*fp;包含于
)
4、编写一个简单的通讯录管理系统。
通讯录包括:
姓名、通讯地址、邮编、联系电话,现编写一个通讯录管理系统,可以对通讯录进行输入、显示、查找等,通讯录保存到一个文件中。
(提示:
可能用到以下库函数:
malloc(),功能:
分配size字节的存储区,
用法:
(类型*)malloc(size*sizeof(你要定义的类型));包含于
feof(),功能:
检测文件是否结束
用法:
intfeof(fp)
FILE*fp;包含于
)
5、编程解决如下问题
(1)已知平面上三个点:
(7,1)、(4,6)、(5,8),判断这三点组成的三角形是何种三角形(锐角,直角,钝角)(10分);
(2)对
(1)问中的三角形,给出它的外接圆半径(20分);
(3)已知平面上6个点的坐标为:
(7,1)、(4,6)、(5,8)、(6,2)、(3,9)、(2,7),试求覆盖这6个点的覆盖圆最小半径(20分)。
(要求:
点坐标数据在程序初始化中赋值完成,程序运行后直接输出结果,不进行数据输入;点坐标数据和题目要求完全一致,否则导致的结果不正确视为程序编写错误。
)
6、编程解决如下问题
在小于10的素数中有3、5、7组成的等差数列,在小于30的素数中有11、17、23、29组成的等差数列。
试找出区间[100,1000]内的素数构成的最大等差数列(即等差数列包含的素数个数最多)并打印输出。
(三)拔高部分:
1、现有21根火柴,两人轮流取,每人每次可取走1-4根,不可多取,也不能不取,谁取最后一根火柴则谁输。
请编写一个程序进行人机对弈,要求人先取,计算机后取;计算机一方为“常胜将军”。
要求程序运行效果如下图。
2、编程完成商人过河游戏:
有三个商人带着三个随从和货物过河,船每次最多只能载两个人,由他们自己划行,并且如何乘船渡河的大权由商人掌握。
要求保证在过河期间的任一岸上商人的人数要大于或等于随从的人数,否则随从会杀死商人抢走货物。
设计一个符合上述要求的商人过河的游戏。
要求程序运行效果如下图。
(1)有游戏规则提示,按任意键开始游戏,按“Q”键退出游戏;
(2)程序开始,分别提示每次从河岸这边到那边、从河岸那边到这边的商人和随从人数;
(3)如果输入错误(如一次输入的人数不得超过2个、过河的人数不得超过2个),则提示错误并且按任意键重新开始游戏;
(4)当任一河岸的商人数小于随从数时,提示商人被杀,按任意键继续游戏;
(5)当游戏成功时提示游戏成功,按任意键结束游戏。
(注:
程序可能用到的库函数及函数如下:
#include
voidwindow(intleft,inttop,int right,intbottom);定义活动文本模式窗口,例如:
window(1,1,25,80);
voidtextbackground(intcolor);选择新的文本背景颜色(蓝颜色的值为LIGHTBLUE);
voidtextcolor(intcolor);在文本模式中选择新的字符颜色(黄颜色的值为YELLOW);
voidgotoxy(intx,inty);在文本窗口中设置光标(x和y的值分别为行列坐标)。
)
3、求解钢材切割的最佳订单。
(1)描述:
编写程序,从订单中选择一组订单对钢材作切割加工,使钢材得到最佳利用,约定每一次切割会损耗固定长度的钢材(约定该值为2)。
已知线型钢材总长度、订单数和各订单需要的钢材长度;
(2)输入:
钢材总长度s、订单数n、各定单需要的钢材长度;
(3)输出:
可以使钢材得到最佳利用的订单号、该订单需要的钢材长度。
例如:
Pleaseinputtotallengthofthesteels:
28(回车)
Pleaseinputnumberofordern:
8(回车)
Pleaseinputtheorders:
5(回车)
6(回车)
7(回车)
8(回车)
9(回车)
10(回车)
12(回车)
15(回车)
屏幕输出:
Choiceoneorder1length=5order3length=7order7length=12
Choicetwoorder2length=6order4length=8order6length=10
Pressanykeytoquit…
4、产生无连续重复部分的字符串。
(1)描述:
编写程序,产生由1,2,3这3个数字符号所构成、长度为n的字符串,并且在字符串中对于任何一个子串而言,都不会有相邻的、完全相同的子串;
(2)输入:
字符串长度n;
(3)输出:
无相邻重复子串的所有字符串,每个字符串换行输出。
例如:
Pleaseinputstringlengthn:
5(回车)
屏幕输出:
13121
13123
13212
……
5、求某正整数插入乘号后乘积的最大值。
(1)描述:
编程实现在一个9位数的正整数n中插入4个乘号,使分得的5个整数的乘积最大;
(2)输入:
正整数n;
(3)输出:
被分得的5个整数、得到的最大乘积值。
例如:
Pleaseinputn:
734019862(回车)
屏幕输出:
73*401*9*8*62=130674672
6、求西瓜均分问题。
描述:
地面上有12个西瓜,它们的重量(单位为“两”,为计算方便已全部转化为整数,如98即为9斤8两)如下:
98,93,57,64,50,82,18,34,69,56,16,61
(1)设计程序:
实现对以上12个瓜“二堆均分”(每堆6个,两堆重量相等),要求打印输出均分的各种可能方案;
(a)输入:
数据输入由程序完成,执行程序后不需要任何数据输入;
(b)输出:
程序执行后输出以下格式,X分别代表一个西瓜重量的数字,如下:
No1:
XXXXXX,XXXXXX
No2:
XXXXXX,XXXXXX
……
注:
均分的两堆如果只有摆放顺序不一样,算一种输出结果。
(2)设计程序,实现对以上12个西瓜,拟实现“三堆均分”(每堆4个,三堆重量相等)。
考虑到上述西瓜总重量不能为3所整除,这里另有几个西瓜,重量分别为:
70,71,72,73,74,75可供挑选,从12个西瓜中替换掉其中一个,是否可以实现“三堆均分”?
如果可以,设计程序实现,要求打印输出均分的各种可能方案;
(a)输入:
数据输入由程序完成,执行程序后不需要任何数据输入;
(b)输出:
输出结果为以下格式,X分别代表一个西瓜重量的数字,A、B、C、D、E分别代表替换原来西瓜的新重量数字70、71、72、73、74、75,如下 :
No1(AreplacesX):
XXXX,XXXX,XXXX
No2(BreplacesX):
XXXX,XXXX,XXXX
……
注:
均分的三堆如果只有摆放顺序不一样,算一种输出结果。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C语言程序设计 语言程序设计 课程设计 任务书 11412
![提示](https://static.bingdoc.com/images/bang_tan.gif)