《2022年C语言课程设计 .pdf》由会员分享,可在线阅读,更多相关《2022年C语言课程设计 .pdf(21页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、- 1 - 分屏处理数据系统一、设计内容随机产生1000 个数,并分屏显示(每行显示10 个数字,每页显示10 行),而且在每一屏的下方显示本屏中数据的最大值、最小值和平均值。提示:循环显示,在分屏点上输出press any key to continue,通过 getchar()函数让用户以按回车键的方式进入下一屏。二、方案设计与论证生成一个随机数,放入二维数组,输出。每输出十个一个回车。调用自定义函数求这个数组的最大最小值,平局值。摁下回车清屏。循环十次。三、程序运行结果(截图)四、心得体会运行时数字挤在一起,最后一行输出十个,每输出一行一个回车;五、参考资料与致谢名师资料总结 - - -
2、精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 21 页 - - - - - - - - - - 2 - 查找书本清屏,随机函数的写法。六、源程序#include #include #include #define MAX 99 #define MIN 0 int main() int ma(int a120); int mi(int a120); float v(int a120); int i,j,k,max,min,a120; float avg; int x; srand(unsigne
3、d)time(NULL); for(i=1;i=10;i+) /显示十页 for(j=1,x=1;j=10;j+) /显示十行 for(k=1;k=10;k+,x+) /显示十个 ax=rand()%(MAX-MIN+1)+MIN; printf(%d ,ax); printf(n); max=ma(a); min=mi(a); avg=v(a); printf( 最大: %d 最小: %d 平均: %.2fn,max,min,avg); printf( 请按回车键进入下一屏。); getchar(); /下一页system(cls); /清屏 return 0; int ma(int a12
4、0) /最大 int i,z; for(i=1,z=0;i=z)z=ai; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 21 页 - - - - - - - - - - 3 - else if(aiz)z=z; return z; int mi(int a120) /最小 int i,z; for(i=1,z=999999999;i=z)z=z; else if(aiz)z=ai; return z; float v(int a120) /平均 int sum=0,i
5、; float z; for(i=1;i=100;i+) sum=sum+ai; z=sum*1.0/100; return z; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 21 页 - - - - - - - - - - 4 - 求积分一、 设计内容小明最近在学高等数学,被数学里面的微积分难倒了。但小明编程能力很强,于是他就突发奇想,看能不能用编程的方法来帮助理解数学的学习。以下是他想求解的问题:请编程求解 错误!未找到引用源。的值,并分析 错误!未找到引用源。的
6、值与 错误!未找到引用源。的关系。(提示:如下图,按照积分的原理,将函数区间切分为非常小的长方形, 其中长方形的宽度为切分的间距错误!未找到引用源。 ,长方形的高度为方格所在横坐标对应的函数值错误!未找到引用源。 ,则图中第 错误!未找到引用源。 个小长方形(阴影部分)面积为错误!未找到引用源。 ,而最终函数的积分值为所有小方格的面积之和。)0.128 二、y=f(x)?x|z|zxi二、方案设计与论证将不规则图形分割成小矩形,最后求和。三、 程序运行结果(截图)四、 心得体会将不规则图形分的越多,面积越准确。五、 参考资料与致谢查找积分的几何意义。六、源程序#include 名师资料总结 -
7、 - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 21 页 - - - - - - - - - - 5 - #define N 100000 int main() float x,sum; int i; for(i=1,sum=0,x=1;i=N;i+) sum=sum+(1.0/(x*x+4*x)*(1.0/N); x=x+1.0/N; printf(%f,sum); return 0; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - -
8、 - - - 名师精心整理 - - - - - - - 第 5 页,共 21 页 - - - - - - - - - - 6 - 求离群点一、 设计内容随机生成一组位于二维坐标系中的点集(集合大小小于50) ,点集中每个点的位置由 x 轴分量和y 轴分量组成,且1 错误!未找到引用源。x 错误!未找到引用源。80, 1 错误!未找到引用源。y 错误!未找到引用源。80。求这组点集中的离群点。 (离群点定义: 远离点集一般水平的极端大值和极端小值) 。要求:若有离群点,请输出离群点的坐标;若无离群点,则输出“No outliers! ” ,将离群点在终端用#输出表示,非离群点用* 输出表示,显示
9、方式如下图所示。提示:离群点判断的方法不止一种,例如,可借助点集所有的数据的平均值为圆心,以所有点集到圆心的平均距离为半径,所构成的圆。在圆中的为正常点,否则为离群点。二、方案设计与论证开一个 90*90 的数组,并随机生成50 个点。再开一个 90*90 的数组,计算 50 个点到 80*80 个点的平均距离, 找到最小的 (离群点)。计算所有点到离群点的距离,小于等于就为正常点,否则为离群点。三、程序运行结果(截图)四、心得体会名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6
10、页,共 21 页 - - - - - - - - - - 7 - 由于行间距不对,所以看起来很怪,本来是正方形的。没有离群点的概率太小了 . 五、参考资料与致谢参考题目的提示来写的。参考随机数生成法。六、源程序#include #include #include #define MAX 80 #define MIN 1 int main() int a9090,b170; float r9090,min; int i,j,k,m,n,q=0,x,y,l; srand(unsigned)time(NULL); for(i=1;i=80;i+) / 准备工作,全为0 for(j=1;j=80;j+
11、) aij=0; rij=0.0; for(1;1;1) for(i=1;i=160;i+) / 取随机数 bi=rand()%(MAX-MIN+1)+MIN; for(j=2;j=160;j=j+2) m=bj; n=bj-1; if(amn=1)continue; else if(amn!=1)amn=1;q+; if(q=50)break; if(q50)continue; else if(q=50)break; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 21
12、 页 - - - - - - - - - - 8 - for(i=1;i=80;i+) / 计算平均圆心距 for(j=1;j=80;j+) for(m=1;m=80;m+) for(n=1;n=80;n+) if(amn=1) x=m-i; x=abs(x); x=x*x; y=n-j; y=abs(y); y=y*y; rij=rij+sqrt(x+y); rij=rij*1.0/50; for(i=1,min=r11;i=80;i+) / 找最小 for(j=1;j=80;j+) if(rijmin) min=min; for(l=0,i=1,k=0;i=80;i+) / 判断该点是什么
13、类型 for(j=1;j=80;j+) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 21 页 - - - - - - - - - - 9 - if(aij=1) x=m-i; x=abs(x); x=x*x; y=n-j; y=abs(y); y=y*y; if(sqrt(x+y)min) aij=2; l+; if(l=0) printf(No outliers!); else for(i=1;i=80;i+) / 输出 for(j=1;j=80;j+) if(ai
14、j=0) printf( ); else if(aij=2) printf(#); else if(aij=3) printf(*); printf(n); printf(n); n=80-n; printf(%d,%d)n,m,n); return 0; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 9 页,共 21 页 - - - - - - - - - - 10 - 2 阶曲线绘制一、 设计内容2 阶曲线公式可描述为其中,为曲线的参数,由用户手动输入。请编程绘制出该曲线的图形
15、,坐标原点,y 轴正方向, x 轴正方向,如下图所示提示:可利用二维数组预先计算并存储每个点(图中用 “*”表示) 的坐标,然后利用循环一次性输出图形。二、方案设计与论证开一个 400*80 的二维数组(以中心点做原点)。再开一个数组,计算-4040 的 x 代入方程的所得值。如果这个值大于200 或小于 -200,就计算下一个。输出。三、程序运行结果(截图)名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 10 页,共 21 页 - - - - - - - - - - 11 - 四、
16、心得体会由于 WIN10 于 VC6.0 不兼容,输出图形变形,于是输出一行一个回车。五、参考资料与致谢六、源程序#include int main() float a0,a1,a2,a42090,zhi90; float ; int i,j,k,x,y; scanf(%f %f %f,&a0,&a1,&a2); for(i=1;i=401;i+) / 准备 for(j=1;j=85;j+) aij=0; for(i=1;i=79;i+) / 建坐标系 a201i=1; for(i=1;i=401;i+) ai40=2; a140=6; a20140=4; a20179=5; for(i=-3
17、9,j=1;i=39;i+,j+)/算 y 值 zhij=a0+a1*i+a2*i*i; for(i=1;i=200|y=-200)continue; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 11 页,共 21 页 - - - - - - - - - - 12 - y=201-y; ayi=3; for(i=1;i=401;i+) for(j=1;j); else if(aij=6) printf(); printf(n); return 0; 名师资料总结 - - -精品资
18、料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 12 页,共 21 页 - - - - - - - - - - 13 - 概率法求圆周率一、 设计内容如下图所示, 设一直角坐标系中,有一边长为1 的正方形, 以原点为中心1 为半径,在正方形中画一扇形(1/4 圆) 。概率法求解圆周率的过程为:随机产生n 个范围在(0,1)之间的点,若其中有m 个点落于扇形中,则yx11O提示:根据圆的特点,判断随机生成的点是否在扇形内。二、方案设计与论证随机产生 01 之间的小数,赋值给x,y。计算 x2+y2 是否=1。循环,
19、让数据更准确。三、程序运行结果(截图)四、心得体会随机数并不是真正意义上的随机数。五、参考资料与致谢RAND_MAX是 rand()随机产生的最大数。六、源程序名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 13 页,共 21 页 - - - - - - - - - - 14 - #include #include #include #include int main() float x,y,pi; int i,k; srand(unsigned)time(NULL); for(k=
20、0,i=1;i=10000;i+) x=rand()*1.0/RAND_MAX; y=rand()*1.0/RAND_MAX; if(sqrt(x*x+y*y)=1) k+; pi=4*(k*1.0/10000); printf(%f,pi); return 0; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 14 页,共 21 页 - - - - - - - - - - 15 - 推箱子游戏设计一、 设计内容功能:实现简易小人推箱子游戏,游戏过程:(1)初始时,小人在窗口的左上角
21、位置,箱子在小人的右侧;(2)在小人前方随机生成若干个阻碍物;(3)在窗口的右侧随机生成一个出口; (4)要求小人能够将箱子推到窗口右侧出口。基本要求:1 用键盘上、下、左、右按键控制小人移动。2 在小人前方随机生成若干个阻碍物和一个箱子。3 小人必须推箱子,而不能拉箱子。4 小人必须穿过阻碍物之间的空隙,到达出口。5 小人进入出口时提示游戏成功。6 小人无路可走时提示游戏失败。7 小人每移动一步在窗口的左下角显示当前已经移动的步数。8 用户可自行放弃游戏提示:小人可以用“ ” 表示( ASCII 码值为 12) ,阻碍物可用 “” 表示( ASCII 码值为 5) ,推箱子可用“ ” 表示(
22、 ASCII 码值为 30) 。二、方案设计与论证利用整形二维数组,围一个(025)* (081)的空间。全部赋值为0。最边上一圈为墙,用1 表示。随机生成墙,出口。人用 7 表示。方块用 4 表示。用 Getch 读取上下左右,计算人,方块的坐标。输出,逢 0 输出空格,逢1 输出墙,逢7 输出人,逢4 输出方块。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 15 页,共 21 页 - - - - - - - - - - 16 - 三、程序运行结果(截图)四、心得体会上下左右的读
23、入有点小困难,在网上找了好久。控制台行间距太大,看起来很难受。五、参考资料与致谢按照网上的方法,getch 上下左右,输出前都有“-32”上 72 下 80 左 75 右 77 六、 源程序名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 16 页,共 21 页 - - - - - - - - - - 17 - #include #include #include int main() int a40100; int i,j,k,m,n,p,q,bu,cheng,zhong; sran
24、d(unsigned)time(NULL); for(i=1;i=23;i+) / 画空气 0 for(j=1;j=80;j+) aij=0; for(i=0;i=85;i+) a0i=1; a24i=1; for(i=0;i(p+4)|q(p-4)break; for(i=1;i=23;i+) if(i=m)continue; aip=1; am+1p=0; for(i=1;i=23;i+) if(i=n)continue; aiq=1; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - -
25、 第 17 页,共 21 页 - - - - - - - - - - 18 - an+1q=0; zhong=rand()%21+2; / 随机终点azhong-180=1; azhong-179=1; azhong+180=1; azhong+179=1; a11=7; / 人a22=4; / 箱子for(bu=0,cheng=9;1;1) for(i=1;i=23;i+) for(j=1;j=80;j+) if(aij=0) printf( ); else if(aij=1) printf(%c,5); else if(aij=7) printf(%c,12); m=i; n=j; els
26、e if(aij=4) printf(%c,30); p=i; q=j; printf(n); printf(总共 %d步。 (ESC退出) n,bu); if(cheng=1) printf(游戏成功! ); break; else if(cheng=0) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 18 页,共 21 页 - - - - - - - - - - 19 - printf(游戏失败! ); break; k=getch(); if(k=27)break; if(k
27、=75) / 左 if(q=(n-1)&m=p) / 箱子在左边 if(amq-1=1); / 箱子左边是墙else if(amq-1!=1) / 箱子左边不是墙 amq=0; amq-1=4; amn=0; amn-1=7; bu+; q=q-1; n=n-1; else if(q!=(n-1)&m=p)|m!=p) / 箱子不在 if(amn-1=1); / 人左边是墙else if(amn-1!=1) / 人左边不是墙 amn=0; amn-1=7; bu+; n=n-1; else if(k=77) if(q=(n+1)&m=p) / 箱子在右边 if(amq+1=1); / 箱子右边
28、是墙else if(amq+1!=1) / 箱子右边不是墙 amq=0; amq+1=4; amn=0; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 19 页,共 21 页 - - - - - - - - - - 20 - amn+1=7; bu+; q=q+1; n=n+1; else if(q!=(n+1)&m=p)|m!=p) / 箱子不在 if(amn+1=1); / 人右边是墙else if(amn+1!=1) / 人右边不是墙 amn=0; amn+1=7; bu+;
29、 n=n+1; else if(k=72) if(p=(m-1)&n=q) if(ap-1q=1); else if(ap-1q!=1) apq=0; ap-1q=4; amn=0; am-1n=7; bu+; p=p-1; m=m-1; else if(p!=(m-1)&n=q)|n!=q) if(am-1n=1); else if(am-1n!=1) amn=0; am-1n=7; bu+; m=m-1; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 20 页,共 21 页 -
30、 - - - - - - - - - 21 - else if(k=80) if(p=(m+1)&n=q) if(ap+1q=1); else if(ap-1q!=1) apq=0; ap+1q=4; amn=0; am+1n=7; bu+; p=p+1; m=m+1; else if(p!=(m+1)&n=q)|n!=q) if(am+1n=1); else if(am+1n!=1) amn=0; am+1n=7; bu+; m=m+1; if(m=zhong&n=79&p=zhong&q=80)cheng=1; else if(p=1)|(p=23)|(q=1)|(q=80)cheng=0; system(cls); return 0; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 21 页,共 21 页 - - - - - - - - -