C语言课程设计_第1页
C语言课程设计_第2页
C语言课程设计_第3页
C语言课程设计_第4页
C语言课程设计_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

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

文档简介

1、分屏处理数据系统一、设计内容随机产生 1000 个数,并分屏显示 (每行显示 10 个数字,每页显示 10 行 ),而且在每一屏的下方显示本屏中数据的最大值、最小值和平均值。提示:循环显示,在分屏点上输出 press any key to continue ,通过 getchar()函数让用户以按回车键的方式进入下一屏。二、方案设计与论证生成一个随机数,放入二维数组,输出。每输出十个一个回车。调用自定义函数求这个数组的最大最小值,平局值。摁下回车清屏。循环十次。三、程序运行结果(截图)四、心得体会运行时数字挤在一起,最后一行输出十个,每输出一行一个回车;五、参考资料与致谢- 1 -查找书本清屏

2、,随机函数的写法。六、源程序#include<stdio.h>#include<time.h>#include<stdlib.h>#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

3、<=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 a120)/最大int i,z;for(i=1,z=0

4、;i<=100;i+)if(ai>=z)z=ai;- 2 -else if(ai<z)z=z;return z;int mi(int a120)/最小int i,z;for(i=1,z=999999999;i<=100;i+)if(ai>=z)z=z;else if(ai<z)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;- 3 -求积分一、 设计内容小明最近在学高等数学,被数学里面的微积

5、分难倒了。但小明编程能力很强,于是他就突发奇想,看能不能用编程的方法来帮助理解数学的学习。以下是他想求解的问题:请编程求解 错误 ! 未找到引用源。 的值,并分析 错误 !未找到引用源。 的值与 错误 ! 未找到引用源。 的关系。(提示:如下图,按照积分的原理,将函数区间切分为非常小的长方形,其中长方形的宽度为切分的间距错误 !未找到引用源。 ,长方形的高度为方格所在横坐标对应的函数值错误 !未找到引用源。 ,则图中第 错误 !未找到引用源。个小长方形(阴影部分)面积为 错误 !未找到引用源。 ,而最终函数的积分值为所有小方格的面积之和。 ) 0.128y = f( x)| z xi|z二、?

6、 x二、方案设计与论证将不规则图形分割成小矩形,最后求和。三、 程序运行结果(截图)四、 心得体会将不规则图形分的越多,面积越准确。五、 参考资料与致谢查找积分的几何意义。六、源程序#include<stdio.h>- 4 -#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;- 5 -求离群点一、 设计内容随机生成一组位于二维坐标系中的

7、点集(集合大小小于50),点集中每个点的位置由 x 轴分量和 y 轴分量组成, 且 1 错误 !未找到引用源。 x 错误 !未找到引用源。 80, 1 错误 !未找到引用源。 y 错误 ! 未找到引用源。 80。求这组点集中的离群点。 (离群点定义: 远离点集一般水平的极端大值和极端小值)。要求:若有离群点,请输出离群点的坐标;若无离群点,则输出“No outliers! ”,将离群点在终端用#输出表示,非离群点用* 输出表示,显示方式如下图所示。提示:离群点判断的方法不止一种, 例如,可借助点集所有的数据的平均值为圆心,以所有点集到圆心的平均距离为半径,所构成的圆。在圆中的为正常点,否则为离

8、群点。二、方案设计与论证开一个 90*90 的数组,并随机生成50 个点。再开一个 90*90 的数组,计算 50 个点到 80*80 个点的平均距离, 找到最小的 (离群点)。计算所有点到离群点的距离,小于等于就为正常点,否则为离群点。三、程序运行结果(截图)四、心得体会- 6 -由于行间距不对,所以看起来很怪,本来是正方形的。没有离群点的概率太小了.五、参考资料与致谢参考题目的提示来写的。参考随机数生成法。六、源程序#include<stdio.h>#include<time.h>#include<math.h>#define MAX 80#define

9、 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=1;i<=80;i+)/ 准备工作,全为0for(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

10、+;if(q=50)break;if(q<50)continue;else if(q=50)break;- 7 -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(rij<=min

11、)min=rij;m=i;n=j;else if(rij>min)min=min;for(l=0,i=1,k=0;i<=80;i+)/ 判断该点是什么类型for(j=1;j<=80;j+)- 8 -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=3;else if(sqrt(x+y)>min)aij=2;l+;if(l=0)printf("No outliers!");elsefor(i=1;i<=80;i+)/ 输出for(j=1;j<

12、;=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;- 9 -2 阶曲线绘制一、 设计内容2 阶曲线公式可描述为其中,为曲线的参数,由用户手动输入。请编程绘制出该曲线的图形,坐标原点,y 轴正方向, x 轴正方向,如下图所示提示:可利用二维数组

13、预先计算并存储每个点(图中用 “*表”示)的坐标,然后利用循环一次性输出图形。二、方案设计与论证开一个 400*80 的二维数组(以中心点做原点)。再开一个数组,计算-4040 的 x 代入方程的所得值。如果这个值大于200 或小于 -200,就计算下一个。输出。三、程序运行结果(截图)-10-四、心得体会由于 WIN10 于 VC6.0 不兼容,输出图形变形,于是输出一行一个回车。五、参考资料与致谢六、源程序#include<stdio.h>int main()float a0,a1,a2,a42090,zhi90;float ;int i,j,k,x,y;scanf("

14、;%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=-39,j=1;i<=39;i+,j+)/算 y 值zhij=a0+a1*i+a2*i*i;for(i=1;i<=79;i+)/ 计算对应坐标y=zhii;if(y>=200|y<=-200)continu

15、e;-11-y=201-y;ayi=3;for(i=1;i<=401;i+)for(j=1;j<=79;j+)if(aij=0)printf(" ");else if(aij=1)printf("-");else if(aij=2)printf("|");else if(aij=3)printf("*");else if(aij=4)printf("+");else if(aij=5)printf(">");else if(aij=6)printf(&quo

16、t;");printf("n");return 0;-12-概率法求圆周率一、 设计内容如下图所示, 设一直角坐标系中,有一边长为1 的正方形, 以原点为中心1 为半径,在正方形中画一扇形(1/4 圆)。概率法求解圆周率的过程为:随机产生n 个范围在( 0,1)之间的点,若其中有m 个点落于扇形中,则y1O1x提示:根据圆的特点,判断随机生成的点是否在扇形内。二、方案设计与论证随机产生 01 之间的小数,赋值给x, y。计算 x2+y2 是否 <=1 。循环,让数据更准确。三、程序运行结果(截图)四、心得体会随机数并不是真正意义上的随机数。五、参考资料与致谢

17、RAND_MAX是 rand()随机产生的最大数。六、源程序-13-#include<stdio.h>#include<time.h>#include<math.h>#include<stdlib.h>int 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);pr

18、intf("%f",pi);return 0;-14-推箱子游戏设计一、 设计内容功能:实现简易小人推箱子游戏,游戏过程: ( 1)初始时,小人在窗口的左上角位置,箱子在小人的右侧; ( 2)在小人前方随机生成若干个阻碍物; (3)在窗口的右侧随机生成一个出口; ( 4)要求小人能够将箱子推到窗口右侧出口。基本要求:1 用键盘上、下、左、右按键控制小人移动。2 在小人前方随机生成若干个阻碍物和一个箱子。3 小人必须推箱子,而不能拉箱子。4 小人必须穿过阻碍物之间的空隙,到达出口。5 小人进入出口时提示游戏成功。6 小人无路可走时提示游戏失败。7 小人每移动一步在窗口的左下角

19、显示当前已经移动的步数。8 用户可自行放弃游戏提示:小人可以用 “ ”表示( ASCII 码值为 12),阻碍物可用 “ ”表示( ASCII 码值为 5),推箱子可用 “ ”表示( ASCII 码值为 30)。二、方案设计与论证利用整形二维数组,围一个(025) * ( 081)的空间。全部赋值为0。最边上一圈为墙,用1 表示。随机生成墙,出口。人用 7 表示。方块用 4 表示。用 Getch 读取上下左右,计算人,方块的坐标。输出,逢 0 输出空格,逢1 输出墙,逢7 输出人,逢4 输出方块。-15-三、程序运行结果(截图)四、心得体会上下左右的读入有点小困难,在网上找了好久。控制台行间距

20、太大,看起来很难受。五、参考资料与致谢按照网上的方法,getch 上下左右,输出前都有“-32”上 72下 80左 75右 77六、 源程序-16-#include<stdio.h>#include<stdlib.h>#include<time.h>int main()int a40100;int i,j,k,m,n,p,q,bu,cheng,zhong;srand(unsigned)time(NULL);for(i=1;i<=23;i+)/ 画空气 0for(j=1;j<=80;j+)aij=0;for(i=0;i<=85;i+)a0i=

21、1;a24i=1;for(i=0;i<=30;i+)ai0=1;ai81=1;m=rand()%21+2;/ 画随机墙 1n=rand()%21+2;p=rand()%21+30;for(1;1;1)q=rand()%21+30;if(q>(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;-17-an+1q=0;zhong=rand()%21+2;/ 随机终点azhong-180=1;azhong-179=

22、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;else if(aij=4)printf("%c",30);p=i;q=j;printf("n");printf

23、("总共 %d步。( ESC退出) n",bu);if(cheng=1)printf("游戏成功! ");break;else if(cheng=0)-18-printf("游戏失败! ");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)

温馨提示

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

评论

0/150

提交评论