分屏处理数据系统一、设计内容随机产生1000个数,并分屏显示(每行显示10个数字,每页显示10行),而且在每一屏的下方显示本屏中数据的最大值、最小值和平均值。
提示:循环显示,在分屏点上输出press any key to continue…,通过getchar()函数让用户以按回车键的方式进入下一屏。
二、方案设计与论证生成一个随机数,放入二维数组,输出。
每输出十个一个回车。
调用自定义函数求这个数组的最大最小值,平局值。
摁下回车清屏。
循环十次。
三、程序运行结果(截图)四、心得体会运行时数字挤在一起,最后一行输出十个,每输出一行一个回车;五、参考资料与致谢查找书本清屏,随机函数的写法。
六、源程序#include<stdio.h>#include<time.h>#include<stdlib.h>#define MAX 99#define MIN 0int main(){int ma(int a[120]);int mi(int a[120]);float v(int a[120]);int i,j,k,max,min,a[120];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++) //显示十个{a[x]=rand()%(MAX-MIN+1)+MIN;printf("%d ",a[x]);}printf("\n");}max=ma(a);min=mi(a);avg=v(a);printf("最大:%d 最小:%d 平均:%.2f\n",max,min,avg);printf("请按回车键进入下一屏。
");getchar(); //下一页system("cls"); //清屏}return 0;}int ma(int a[120]) //最大{int i,z;for(i=1,z=0;i<=100;i++){if(a[i]>=z)z=a[i];else if(a[i]<z)z=z;}return z;}int mi(int a[120]) //最小{int i,z;for(i=1,z=999999999;i<=100;i++){if(a[i]>=z)z=z;else if(a[i]<z)z=a[i];}return z;}float v(int a[120]) //平均{int sum=0,i;float z;for(i=1;i<=100;i++){sum=sum+a[i];}z=sum*1.0/100;return z;}求积分一、设计内容小明最近在学高等数学,被数学里面的微积分难倒了。
但小明编程能力很强,于是他就突发奇想,看能不能用编程的方法来帮助理解数学的学习。
以下是他想求解的问题:请编程求解错误!未找到引用源。
的值,并分析错误!未找到引用源。
的值与错误!未找到引用源。
的关系。
(提示:如下图,按照积分的原理,将函数区间切分为非常小的长方形,其中长方形的宽度为切分的间距错误!未找到引用源。
,长方形的高度为方格所在横坐标对应的函数值错误!未找到引用源。
,则图中第错误!未找到引用源。
个小长方形(阴影部分)面积为错误!未找到引用源。
,而最终函数的积分值为所有小方格的面积之和。
)0.128二、y =f(x)∆x|{z}|{z}x i二、方案设计与论证将不规则图形分割成小矩形,最后求和。
三、程序运行结果(截图)四、心得体会将不规则图形分的越多,面积越准确。
五、参考资料与致谢查找积分的几何意义。
六、源程序#include<stdio.h>#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;}求离群点一、设计内容随机生成一组位于二维坐标系中的点集(集合大小小于50),点集中每个点的位置由x轴分量和y轴分量组成,且1错误!未找到引用源。
x错误!未找到引用源。
80, 1错误!未找到引用源。
y错误!未找到引用源。
80。
求这组点集中的离群点。
(离群点定义:远离点集一般水平的极端大值和极端小值)。
要求:若有离群点,请输出离群点的坐标;若无离群点,则输出“No outliers!”,将离群点在终端用#输出表示,非离群点用*输出表示,显示方式如下图所示。
提示:离群点判断的方法不止一种,例如,可借助点集所有的数据的平均值为圆心,以所有点集到圆心的平均距离为半径,所构成的圆。
在圆中的为正常点,否则为离群点。
二、方案设计与论证开一个90*90的数组,并随机生成50个点。
再开一个90*90的数组,计算50个点到80*80个点的平均距离,找到最小的(离群点)。
计算所有点到离群点的距离,小于等于就为正常点,否则为离群点。
三、程序运行结果(截图)四、心得体会由于行间距不对,所以看起来很怪,本来是正方形的。
没有离群点的概率太小了……..五、参考资料与致谢参考题目的提示来写的。
参考随机数生成法。
六、源程序#include<stdio.h>#include<time.h>#include<math.h>#define MAX 80#define MIN 1int main(){int a[90][90],b[170];float r[90][90],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++){a[i][j]=0;r[i][j]=0.0;}}for(1;1;1){for(i=1;i<=160;i++) //取随机数{b[i]=rand()%(MAX-MIN+1)+MIN;}for(j=2;j<=160;j=j+2){m=b[j];n=b[j-1];if(a[m][n]==1)continue;else if(a[m][n]!=1){a[m][n]=1;q++;}if(q==50)break;}if(q<50)continue;else if(q==50)break;}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(a[m][n]==1){x=m-i;x=abs(x);x=x*x;y=n-j;y=abs(y);y=y*y;r[i][j]=r[i][j]+sqrt(x+y);}}}r[i][j]=r[i][j]*1.0/50;}}for(i=1,min=r[1][1];i<=80;i++) //找最小{for(j=1;j<=80;j++){if(r[i][j]<=min){min=r[i][j];m=i;n=j;}else if(r[i][j]>min){min=min;}}}for(l=0,i=1,k=0;i<=80;i++) //判断该点是什么类型{for(j=1;j<=80;j++){if(a[i][j]==1){x=m-i;x=abs(x);x=x*x;y=n-j;y=abs(y);y=y*y;if(sqrt(x+y)<=min){a[i][j]=3;}else if(sqrt(x+y)>min){a[i][j]=2;l++;}}}}if(l==0)printf("No outliers!");else{for(i=1;i<=80;i++) //输出{for(j=1;j<=80;j++){if(a[i][j]==0)printf(" ");else if(a[i][j]==2)printf("#");else if(a[i][j]==3)printf("*");}printf("\n");}printf("\n");n=80-n;printf("(%d,%d)\n",m,n);}return 0;}2阶曲线绘制一、设计内容2阶曲线公式可描述为其中,为曲线的参数,由用户手动输入。
请编程绘制出该曲线的图形,坐标原点,y轴正方向,x轴正方向,如下图所示提示:可利用二维数组预先计算并存储每个点(图中用“*”表示)的坐标,然后利用循环一次性输出图形。
二、方案设计与论证开一个400*80的二维数组(以中心点做原点)。
再开一个数组,计算-40~40的x代入方程的所得值。
如果这个值大于200或小于-200,就计算下一个。
输出。
三、程序运行结果(截图)四、心得体会由于WIN10于VC6.0不兼容,输出图形变形,于是输出一行一个回车。
五、参考资料与致谢六、源程序#include<stdio.h>int main(){float a0,a1,a2,a[420][90],zhi[90];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++){a[i][j]=0;}}for(i=1;i<=79;i++) //建坐标系{a[201][i]=1;}for(i=1;i<=401;i++){a[i][40]=2;}a[1][40]=6;a[201][40]=4;a[201][79]=5;for(i=-39,j=1;i<=39;i++,j++)//算y值{zhi[j]=a0+a1*i+a2*i*i;}for(i=1;i<=79;i++) //计算对应坐标{y=zhi[i];if(y>=200||y<=-200)continue;y=201-y;a[y][i]=3;}for(i=1;i<=401;i++){for(j=1;j<=79;j++){if(a[i][j]==0)printf(" ");else if(a[i][j]==1)printf("-");else if(a[i][j]==2)printf("|");else if(a[i][j]==3)printf("*");else if(a[i][j]==4)printf("+");else if(a[i][j]==5)printf(">");else if(a[i][j]==6)printf("^");}printf("\n");}return 0;}概率法求圆周率一、 设计内容如下图所示,设一直角坐标系中,有一边长为1的正方形,以原点为中心1为半径,在正方形中画一扇形(1/4圆)。