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