C语言课程设计.doc
《C语言课程设计.doc》由会员分享,可在线阅读,更多相关《C语言课程设计.doc(22页珍藏版)》请在咨信网上搜索。
分屏处理数据系统 一、设计内容 随机产生1000个数,并分屏显示(每行显示10个数字,每页显示10行),而且在每一屏的下方显示本屏中数据的最大值、最小值和平均值。 提示:循环显示,在分屏点上输出press any key to continue…,通过getchar()函数让用户以按回车键的方式进入下一屏。 二、方案设计与论证 生成一个随机数,放入二维数组,输出。每输出十个一个回车。 调用自定义函数求这个数组的最大最小值,平局值。 摁下回车清屏。 循环十次。 三、程序运行结果(截图) 四、心得体会 运行时数字挤在一起,最后一行输出十个,每输出一行一个回车; 五、参考资料与致谢 查找书本清屏,随机函数的写法。 六、源程序 #include<stdio.h> #include<time.h> #include<stdlib.h> #define MAX 99 #define MIN 0 int 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 二、 二、方案设计与论证 将不规则图形分割成小矩形,最后求和。 三、 程序运行结果(截图) 四、 心得体会 将不规则图形分的越多,面积越准确。 五、 参考资料与致谢 查找积分的几何意义。 六、源程序 #include<stdio.h> #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; } 求离群点 一、 设计内容 随机生成一组位于二维坐标系中的点集(集合大小小于50),点集中每个点的位置由x轴分量和y轴分量组成,且1x80, 1y80。 求这组点集中的离群点。(离群点定义:远离点集一般水平的极端大值和极端小值)。 要求:若有离群点,请输出离群点的坐标;若无离群点,则输出“No outliers!”,将离群点在终端用#输出表示,非离群点用*输出表示,显示方式如下图所示。 提示:离群点判断的方法不止一种,例如,可借助点集所有的数据的平均值为圆心,以所有点集到圆心的平均距离为半径,所构成的圆。在圆中的为正常点,否则为离群点。 二、方案设计与论证 开一个90*90的数组,并随机生成50个点。 再开一个90*90的数组,计算50个点到80*80个点的平均距离,找到最小的(离群点)。 计算所有点到离群点的距离,小于等于就为正常点,否则为离群点。 三、程序运行结果(截图) 四、心得体会 由于行间距不对,所以看起来很怪,本来是正方形的。 没有离群点的概率太小了…….. 五、参考资料与致谢 参考题目的提示来写的。 参考随机数生成法。 六、源程序 #include<stdio.h> #include<time.h> #include<math.h> #define MAX 80 #define MIN 1 int 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圆)。概率法求解圆周率的过程为:随机产生n个范围在(0,1)之间的点,若其中有m个点落于扇形中,则 提示:根据圆的特点,判断随机生成的点是否在扇形内。 二、方案设计与论证 随机产生0~1之间的小数,赋值给x,y。 计算x^2+y^2是否<=1。 循环,让数据更准确。 三、程序运行结果(截图) 四、心得体会 随机数并不是真正意义上的随机数。 五、参考资料与致谢 RAND_MAX是rand()随机产生的最大数。 六、源程序 #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); printf("%f",pi); return 0; } 推箱子游戏设计 一、 设计内容 功能:实现简易小人推箱子游戏,游戏过程:(1)初始时,小人在窗口的左上角位置,箱子在小人的右侧;(2)在小人前方随机生成若干个阻碍物;(3)在窗口的右侧随机生成一个出口;(4)要求小人能够将箱子推到窗口右侧出口。 基本要求: 1用键盘上、下、左、右按键控制小人移动。 2在小人前方随机生成若干个阻碍物和一个箱子。 3小人必须推箱子,而不能拉箱子。 4小人必须穿过阻碍物之间的空隙,到达出口。 5 小人进入出口时提示游戏成功。 6小人无路可走时提示游戏失败。 7 小人每移动一步在窗口的左下角显示当前已经移动的步数。 8用户可自行放弃游戏 提示:小人可以用“”表示(ASCII码值为12),阻碍物可用“”表示(ASCII码值为5),推箱子可用“”表示(ASCII码值为30)。 二、方案设计与论证 利用整形二维数组,围一个(0~25)*(0~81)的空间。 全部赋值为0。 最边上一圈为墙,用1表示。 随机生成墙,出口。 人用7表示。 方块用4表示。 用Getch读取上下左右,计算人,方块的坐标。 输出,逢0输出空格,逢1输出墙,逢7输出人,逢4输出方块。 三、程序运行结果(截图) 四、心得体会 上下左右的读入有点小困难,在网上找了好久。 控制台行间距太大,看起来很难受。 五、参考资料与致谢 按照网上的方法,getch上下左右,输出前都有“-32” 上72 下80 左75 右77 六、 源程序 #include<stdio.h> #include<stdlib.h> #include<time.h> int main() { int a[40][100]; int i,j,k,m,n,p,q,bu,cheng,zhong; srand((unsigned)time(NULL)); for(i=1;i<=23;i++) //画空气0 { for(j=1;j<=80;j++) { a[i][j]=0; } } for(i=0;i<=85;i++) { a[0][i]=1; a[24][i]=1; } for(i=0;i<=30;i++) { a[i][0]=1; a[i][81]=1; } m=rand()%21+2; //画随机墙1 n=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; a[i][p]=1; } a[m+1][p]=0; for(i=1;i<=23;i++) { if(i==n)continue; a[i][q]=1; } a[n+1][q]=0; zhong=rand()%21+2; //随机终点 a[zhong-1][80]=1; a[zhong-1][79]=1; a[zhong+1][80]=1; a[zhong+1][79]=1; a[1][1]=7; //人 a[2][2]=4; //箱子 for(bu=0,cheng=9;1;1) { for(i=1;i<=23;i++) { for(j=1;j<=80;j++) { if(a[i][j]==0) printf(" "); else if(a[i][j]==1) printf("%c",5); else if(a[i][j]==7) { printf("%c",12); m=i; n=j; } else if(a[i][j]==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("游戏失败!"); break; } k=getch(); if(k==27)break; if(k==75) //左 { if(q==(n-1)&&m==p) //箱子在左边 { if(a[m][q-1]==1); //箱子左边是墙 else if(a[m][q-1]!=1) //箱子左边不是墙 { a[m][q]=0; a[m][q-1]=4; a[m][n]=0; a[m][n-1]=7; bu++; q=q-1; n=n-1; } } else if((q!=(n-1)&&m==p)||m!=p) //箱子不在 { if(a[m][n-1]==1); //人左边是墙 else if(a[m][n-1]!=1) //人左边不是墙 { a[m][n]=0; a[m][n-1]=7; bu++; n=n-1; } } } else if(k==77) { if(q==(n+1)&&m==p) //箱子在右边 { if(a[m][q+1]==1); //箱子右边是墙 else if(a[m][q+1]!=1) //箱子右边不是墙 { a[m][q]=0; a[m][q+1]=4; a[m][n]=0; a[m][n+1]=7; bu++; q=q+1; n=n+1; } } else if((q!=(n+1)&&m==p)||m!=p) //箱子不在 { if(a[m][n+1]==1); //人右边是墙 else if(a[m][n+1]!=1) //人右边不是墙 { a[m][n]=0; a[m][n+1]=7; bu++; n=n+1; } } } else if(k==72) { if(p==(m-1)&&n==q) { if(a[p-1][q]==1); else if(a[p-1][q]!=1) { a[p][q]=0; a[p-1][q]=4; a[m][n]=0; a[m-1][n]=7; bu++; p=p-1; m=m-1; } } else if((p!=(m-1)&&n==q)||n!=q) { if(a[m-1][n]==1); else if(a[m-1][n]!=1) { a[m][n]=0; a[m-1][n]=7; bu++; m=m-1; } } } else if(k==80) { if(p==(m+1)&&n==q) { if(a[p+1][q]==1); else if(a[p-1][q]!=1) { a[p][q]=0; a[p+1][q]=4; a[m][n]=0; a[m+1][n]=7; bu++; p=p+1; m=m+1; } } else if((p!=(m+1)&&n==q)||n!=q) { if(a[m+1][n]==1); else if(a[m+1][n]!=1) { a[m][n]=0; a[m+1][n]=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; } - 22 -- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 完整 word 语言 课程设计
咨信网温馨提示:
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【精***】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【精***】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【精***】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【精***】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
关于本文