




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、西安科技大学c语言程序设计课程设计报告 题 目 c 程序设计课程设计报告 院、系(部) 电气与控制工程学院 专业及班级 微电子1001班 姓 名 李治 刘源 韩枝宏 日 期 2011年7月7号 1 题目要求 一级标题小三黑体,二级标题四号黑体,正文小四宋体,行间距20磅2 功能需求(分析系统应具有哪些功能)(1)圆圈循环报数有100个小朋友按编号顺序1,2,。,100逆时针方向围成一圈。从1号开始按逆时针方向1,2,。,9报数,凡报数9者出列,问:最后剩下一个未出圈者的编号是多少?第50个出圈者的编号是多少?(2)年历显示功能要求:a输入一个年份,输出是在屏幕上显示该年的日历。假定输入的年份在
2、1940-2040年之间。b输入年月,输出该月的日历。c输入年月日,输出距今天还有多少天,星期几,是否是公历节日。(3)图形时钟功能要求: 在屏幕上显示一个图形时钟(用程序绘制一个与时钟样式相似即可),时间与系统时间一致,且要随着时间的走动准确的走动。(4)猜数字游戏首先输入要猜的数字的位数,这样计算机可以根据输入的位数随机地分配一个符合要求的数据,计算机输出guess后便可以输入数字,计算机会根据输入信息给出相应的提示信息:a表示位置于数字均正确的个数,b表示位置不正确但数字正确的个数,这样便可以根据提示信息进行下次输入,知道正确为止。(5)保龄球计分程序要求: a使用c语言写一个程序可以方
3、便的对保龄球运动项目进行记分; 界面布局合理,能直观的显示每次得分,每轮得分和累计得分的情况 b分值录入操作合理,需要有必要的无效值判断处理(比如每次击球得分不会10等等) c每场比赛结束后将本次比赛数据保存下来。(选择文件或者数据库均可)3 总体设计系统业务处理流程开始(1)圆圈循环报数 结束输出b50 b100i=1000i=i+1 ai=1j=j+1 bj=i+1ai=0 s=0s=9s=s+aii=i+1i=0i=0i,j,s,a100,b100y nny nni=99i= -1ny nn j=100 y n(2)年历显示a.主体循环输入p qp=bp=cp=ayyy输出某年年历输出某
4、年某月日历输出某年某月某日详细信息yq=yn退出程序b.分步流程图nnnnnyyyyy输出daid=d+1k=6k=k+1j=6j=j+1(j*10+k)=(10+w)j=1k=0i=12i=i+1输出i+1月i=0a1=29输入y,m,d,w,k,s,i,j;a12w=(y+(y-1)/4-(y-1)/100+(y-1)/400)%7y%4=0&y%100!=0)|y%400=0sum1,sum2nynnnnnyyyyysum2=sum2-sum1j=ksum2=sum2+1i=k j=j+1bj=aij=0i=i+1i=0 i=ki=i+1sum1=sum+1bi=aii=0i=ksum1
5、=0,sum2=0, k,i=0,aibi=xi=i+1开始(4)猜数字游戏(5)保龄球计分nnnynnnnyyyyyy开始输出部分a18+a19)=10输入附加球1输入附加球1、2a18=10(*pb+*(pb-1)10i10pb0输入pbi =i+1a22=0*pb=a,i=1,s10=0,sum=0开始a输入部分4 详细设计根据功能模块,详细论述设计过程,给出主要实现代码。(1) 圆圈循环报数#includemain()int i,j=0,s=0,a100,b100;for(i=0;i100;i+) ai=1; /*给所有ai赋初值1*/ for(i=0;i100;i+) s=s+ai;
6、 /*从1开始报数*/ if(s=9) /*报数为9的出圈*/ j=j+1; /*出圈人数加1*/ bj=i+1; ai=0; /*与前面相对应,可使出圈者以后的报数都为前一位所报数*/ s=0; /*重新从1开始报数*/ if(i=99) i=-1; /*第100个人报完后又从第1个开始报数*/ if(j=100) /*100个人都报完了输出结果*/ break; printf(第50个出圈者的编号是:%dn,b50); printf(最后未出圈者编号是:%dn,b100);(2) 年历显示 #includemain()int y,m,d,w,k,s,i,j;int a12=31,28,31
7、,30,31,30,31,31,30,31,30,31;char p,q;printf(查询项目a:查询1940-2040年的年历表.n); printf(查询项目b:查询某年某月的日历表.n); printf(查询项目c:输入年月日查询当天信息.nn);doprintf(请输入你所要查询的项目(输入a或者b或者c));scanf( %c,&p);if(p=a)/*打印某年的年历表*/printf(请输入你想知道的年份:); scanf(%d,&y);printf(n); printf(=%d年公历表=nn,y); w=(y+(y-1)/4-(y-1)/100+(y-1)/400)%7; if
8、(y%4=0&y%100!=0)|y%400=0) a1=29; for(i=0;i12;i+) d=0; printf(=%2d月=n,i+1); printf( sun mon tue wed thu fri satn); for(j=1;j=6;j+) for(k=0;k=(10+w) /*当j大于1时此不等式必为真,只有月初的前几日此不等式才可能为假,此时输出空格*/ d=d+1; if(dai) printf(n); break; /*日期大于某月天数时跳到下一个月*/ else printf(%5d,d); w=k+1; if(w=7) w=0; printf(n); /*星期天时
9、换行并从星期一开始新的循环*/ else printf( ); printf(=n);/*打印某年某月的日历表*/if(p=b) printf(请输入你想知道的年 月:); scanf(%d %d,&y,&m);printf(n); printf(=%d年%d月=nn,y,m); if(y%4=0&y%100!=0)|y%400=0) a1=29; s=0; for(i=0;im-1;i+)s=s+ai; /*s为y年中m月前的天数*/ w=(y+(y-1)/4-(y-1)/100+(y-1)/400+s)%7; /* y年m月1号为星期w*/ printf( sun mon tue wed
10、thu fri satn); d=0; for(j=1;j=6;j+) for(k=0;k=(10+w) d=d+1; if(dai) printf(n); break; else printf(%5d,d); w=k+1; if(w=7) w=0; printf(n); else printf( ); /*这些和上面年历差不多*/ printf(=n);/*某年某月某日的信息查询*/ if(p=c)int y1,m1,d1,i1,j1,s=0,s1=0,x=0,x1=0,sum3000,sum13000,t,t1,b,z=0;printf(请输入今天的日期 年 月 日);scanf(%d %
11、d %d,&y,&m,&d);printf(请输入你所要查询的年 月 日);scanf(%d %d %d,&y1,&m1,&d1);for(i=0;iy;i+)if(i%4=0&i%100!=0)|i%400=0)sumi=366;else sumi=365;s=s+sumi; /*s为y年元旦与公元0年元旦所差的天数*/for(j=0;jm-1;j+)if(y%4=0&y%100!=0)|y%400=0)a1=29;x=x+ai; /*x为m-1个月的天数*/for(i1=0;i1y1;i1+)if(i1%4=0&i1%100!=0)|i1%400=0)sum1i=366;else sum1
12、i=365;s1=s1+sum1i; /*s1为y1年元旦与公元0年元旦所差的天数*/for(j1=0;j10)printf(所查询日期还有%d天n,b);else b=-1*b;printf(所查询日期已过%d天n,b);/*计算要查询的这一天是星期几*/ for(i=0;im1-1;i+)z=z+ai1; /*z为y1年中前m1-1个月的天数*/ z=z+d1; /*z为y1年中m1月d1号之前的天数*/w=(y1-1+(y1-1)/4-(y1-1)/100+(y1-1)/400+z)%7; /*y1年m1月d1是星期w*/switch(w)case 1: printf(| 星期一 |n)
13、;break; case 2: printf(| 星期二 |n);break; case 3: printf(| 星期三 |n);break; case 4: printf(| 星期四 |n);break; case 5: printf(| 星期五 |n);break; case 6: printf(| 星期六 |n);break; case 0: printf(| 星期天 |n);break;/*查看改日是否有节日*/if(m1=1&d1=1) printf(| 元旦节 |n); if(m1=2&d1=2) printf(| 世界湿地日 |n); if(m1=2&d1=14) printf(
14、| 情人节了 |n); if(m1=3&d1=1) printf(| 国际海豹日 |n); if(m1=3&d1=3) printf(| 全国爱耳日 |n); if(m1=3&d1=8) printf(| 3.8妇女节 |n); if(m1=3&d1=12) printf(| 植树节 |n); if(m1=3&d1=14) printf(| 国际警察日 |n); if(m1=3&d1=15) printf(| 消费者权益日 |n); if(m1=3&d1=17) printf(| 国际航海日 |n); if(m1=3&d1=21) printf(| 世界森林日 |n); if(m1=3&d1=
15、23) printf(| 世界气象日 |n); if(m1=3&d1=24) printf(| 世界防治结核病日 |n); if(m1=4&d1=1) printf(| 愚人节,小心上当 |n); if(m1=4&d1=7) printf(| 世界卫生日 |n); if(m1=4&d1=13) printf(| 黑色星期五 |n); if(m1=5&d1=1) printf(| 劳动节 放假 |n); if(m1=5&d1=4) printf(| 青年节 |n); if(m1=5&d1=8) printf(| 世界红十字日 |n); if(m1=5&d1=12) printf(| 国际护士节
16、|n); if(m1=5&d1=5) printf(| 近日注意母亲节 |n); if(m1=5&d1=15) printf(| 国际家庭日 |n); if(m1=5&d1=31) printf(| 世界无烟日 |n); if(m1=6&d1=1) printf(| 国际儿童节 |n); if(m1=6&d1=5) printf(| 世界环境日 |n); if(m1=6&d1=26) printf(| 国际禁毒日 |n); if(m1=6&d1=6) printf(| 全国爱眼日 |n); if(m1=6&d1=13) printf(| 近期注意父亲节 |n); if(m1=7&d1=1) p
17、rintf(| 香港回归纪念日 |n); if(m1=7&d1=7) printf(| 抗日战争纪念日 |n); if(m1=7&d1=11) printf(| 世界人口日 |n); if(m1=8&d1=1) printf(| 八一建军节 |n); if(m1=8&d1=8) printf(| 中国男子节 |n); if(m1=8&d1=15) printf(| 抗日战争胜利纪念日 |n); if(m1=9&d1=10) printf(| 中国教师节 |n); if(m1=9&d1=18) printf(| 九一八事变纪念 |n); if(m1=9&d1=20) printf(| 国际爱牙日
18、 |n); if(m1=9&d1=27) printf(| 世界旅游日 |n); if(m1=10&d1=1) printf(| 中国国庆节 |n); if(m1=10&d1=4) printf(| 世界动物日 |n); if(m1=10&d1=24) printf(| 联合国日 |n); if(m1=10&d1=12) printf(| 明天国际教师节 |n); if(m1=10&d1=13) printf(| 国际教师节 |n); if(m1=11&d1=10) printf(| 世界青年节 |n); if(m1=11&d1=17) printf(| 世界学生节 |n); if(m1=12
19、&d1=1) printf(| 世界艾滋病日 |n); if(m1=12&d1=23) printf(| 明晚平安夜 |n); if(m1=12&d1=24) printf(| 今晚平安夜 |n); if(m1=12&d1=25) printf(| 圣诞快乐 |n); if(m1=12&d1=31) printf(| 明日新年 |n);printf(=n);printf(是否想继续查询(y/n)n); scanf( %c,&q);while(q=y);(3)图形时钟#includegraphics.h 是tc里面的图形库#includemath.h #includedos.h 这是一个头文件,
20、里面包含了很多bios和dos调用函数#define pi 3.1415926 #define x(a,b,c) x=a*cos(b*c*pi/180-pi/2)+300 确定横坐标#define y(a,b,c) y=a*sin(b*c*pi/180-pi/2)+240 确定纵坐标#define d(a,b,c) x(a,b,c);y(a,b,c);line(300,240,x,y) void init() /*画时钟边框函数*/自定义函数初始化时钟界面 int i,l,x1,x2,y1,y2; setbkcolor(1); 背景颜色为蓝色circle(300,240,200); circl
21、e(300,240,205);画圆 circle(300,240,5); for(i=0;i60;i+) /*划钟点上的短线*/ if(i%5=0) l=13;(表示线长13) else l=4; x1=200*cos(i*6*pi/180)+300; y1=200*sin(i*6*pi/180)+240; x2=(200-l)*cos(i*6*pi/180)+300; y2=(200-l)*sin(i*6*pi/180)+240; line(x1,y1,x2,y2); 画一条从点(x1,y1)到(x2,y2) main() int x,y,i,k=1; int gdriver=9,gmode
22、=2; unsigned char h,m,s; int o,p,q; float n; struct time t1; struct date d1; initgraph(&gdriver,&gmode,c: tc); initgraph(&gdriver,&gmode,c: tc); for(i=0;i=4;i+) settextstyle(triplex_font,horiz_dir,i); /*控制输出字符的字体,方向,大小*/ cleardevice(); settextjustify(1,1); /*在指定坐标上输出字符串*/ outtextxy(300,80,12) ; outt
23、extxy(300,390,6); outtextxy(140,230,9); outtextxy(460,230,3); outtextxy(380,100,1); outtextxy(220,100,11); outtextxy(430,160,2); outtextxy(430,310,4); outtextxy(380,370,5); outtextxy(220,370,7); outtextxy(160,160,10); outtextxy(160,310,8); init(); setwritemode(1); /*设置画线的输出模式*/ if(k!=0) getdate(d);
24、/*获得系统日期函数*/ o=d0.da_year; p=d0.da_mon; q=d0.da_day; gettime(t); /*获得系统时间函数*/ h=t0.ti_hour; m=t0.ti_min; s=t0.ti_sec; setcolor(9); /*设置时针颜色*/ n=(float)h+(float)m/60; d(120,n,30); /*画出时针*/ setcolor(8); /*设置分针颜色*/ d(150,m,6); /*画出分针*/ setcolor(4); /*设置秒针颜色*/ d(190,s,6); /*画出秒针*/ while(!kbhit() /*控制程序按
25、下任意键退出*/ while(t0.ti_sec=s) gettime(t); gotoxy(44,18); /*使光标移动到指定坐标*/ printf(bbbbbbbbb); /*退格,使表示时间的字符串不断变化*/ sound(400); /*按给定的频率打开pc扬声器*/ delay(70); /*中断程序的执行,时间为70毫秒*/ sound(200); delay(30); nosound(); /*按给定的频率关闭pc扬声器*/ setcolor(4); d(190,s,6); s=t0.ti_sec; d(190,s,6); if(t0.ti_min!=m) setcolor(1
26、4); d(170,m,6); m=t0.ti_min; d(170,m,6); if(t0.ti_hour!=h) setcolor(7); d(150,h,30); h=t0.ti_hour; d(150,h,30); sound(1000); delay(240); nosound(); delay(140); sound(2000); delay(240); nosound(); if(s10) /*用字符的形式输出时间*/ if(m10) printf(%u:0%u:0%u,h,m,s); else printf(%u:%u:0%u,h,m,s); else if(m10) prin
27、tf(%u:0%u:%u,h,m,s); else printf(%u:%u:%u,h,m,s); gotoxy(34,19); /*在指定坐标上输出日期*/ printf(%d-%d-%d,o,p,q); printf(bbbbbbbbb); getch(); closegraph(); (4)猜数字游戏#include#includemain()int i,j,k,n,sum1,sum2,m=0,a10,b10;time_t t;printf(难度设置(110):);scanf(%d,&k);srand(unsigned)time(&t); for(i=0;ik;i+) ai=rand()
28、%10; /*电脑随机出k个0到9的数*/dosum1=0;sum2=0;printf(n请输入所猜的数字(请用空格隔开!);for(i=0;ik;i+) scanf(%d,&n);bi=n; /*输入k个数字*/for(i=0;ik;i+) if(bi=ai) /*位置和数值都对*/sum1+; /*sum1为位置数值都对的数的个数*/for(i=0;ik;i+) for(j=0;jk;j+)if(bj=ai) /*此处用j,所以位置不一定相等*/ bj=10;sum2+;break; /*sum2为数值相等的个数*/ sum2=sum2-sum1; /*sum2为位置不同数值相同的数的个数
29、*/ printf(%da %dbn,sum1,sum2);while(sum1!=k); /*当sum1等于k时停止循环*/ printf(恭喜你,猜对了 (*_*) !n);(5)保龄球计分程序#includeint main(void)int a22=0;int i,*pb=a,s10=0,sum=0;for(i=1;i=10;i+,pb+)doprintf(第%d轮第1次:,i); scanf(%d,pb);while(*pb10); if(*pb10); else *+pb=0;if(a18=10)printf(附加的第一次击倒的柱数:);scanf(%d,pb);printf(附加
30、的第二次击倒的柱数:); scanf(%d,pb);if(a18!=10&(a18+a19)=10)printf(本局附次的击倒的柱数:);scanf(%d,pb); printf(nn 本局得分情况 n);printf( 轮数 1 2 3 4 5 6 7 8 9 10 n);printf( 各轮第一次得分 );for(i=0;i10;i+) printf(%4d,ai*2);printf( n);printf( 各轮第二次得分 );for(i=0;i10;i+) if(ai*2=10)printf( /);else printf(%4d,ai*2+1); printf( n); for(i=0;i10;i+) if(a2*i=10) if(a2*(i+1)=10) si=20+a2*(i+2); else si=10+a2*(i+1)+a2*(i+1)+1; else if(a2*i+a2*i+1=10) si=10+a2*(i+1); else si=a2*i+a2*i+1; printf( 本轮分数 );for(i=0;i10;i+) printf(%4d,si);
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 工业气体供应与安全应急预案编制合同
- 教育培训机构股权证书及师资力量整合交接协议
- 儿童早期教育机构加盟合作合同
- 群众演员参演电视剧拍摄合同书
- 特色烘焙品牌形象保护及合作协议补充条款
- 车载电子产品维修保养与售后服务合同
- 自驾俱乐部合同协议
- 装修包人工合同协议
- 芜湖光伏协议书模板
- 药品买卖服务合同协议
- 2023产后康复服务规范
- 医院护理培训课件:《老年综合评估与护理安全》
- 比亚迪财务报表分析
- 氨水浓度密度温度对照表
- 小学生研学旅行展示ppt模板
- 带式输送机毕业设计论文
- 基础工程之地基处理培训讲义
- 中级技工防水工考核试题及答案
- 高水平环境艺术设计专业群自评报告
- 新店特大桥45#墩水渠改移施工方案打印版
- 急重症脓毒症及脓毒性休克患者液体治疗
评论
0/150
提交评论