最新C语言日历显示课程设计报告(含源代码)

上传人:小*** 文档编号:143954077 上传时间:2022-08-26 格式:DOC 页数:26 大小:459.50KB
返回 下载 相关 举报
最新C语言日历显示课程设计报告(含源代码)_第1页
第1页 / 共26页
最新C语言日历显示课程设计报告(含源代码)_第2页
第2页 / 共26页
亲,该文档总共26页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
最新C语言日历显示课程设计报告(含源代码)高级语言程序设计课程设计题目: 专 业 计算机 类 班 级 计算机类1102 学 生 学 号 指导教师 _起止时间 2022年 2月目录实验报告3必做题:3选做题:8题目10 写一个日历显示程序8流程图:如下14工程代码:19心得体会24实验报告必做题: 1 编一程序对2种排序方法进行比拟:交换法、选择法、插入法、冒泡法四种方法选2。具体比拟方法是随机生成一组300个的100以内的整数数据,用选定的2种排序方法进行排序。纪录排序过程中数据比拟和交换的次数,输出比拟结果。#include#includeint main(void) int a300,b300; int i,j,temp,t; int s=0,p=0,s1=0,p1=0; for(i=0;i300;i+) ai=rand()%100; bi =ai; for(i=0;i299;i+) for(j=i+1;j300;j+) if(aiaj) temp=ai; ai=aj; aj=temp; s+; p+; printf(%d %dn,s,p);printf(n); for(i=0;i299;i+) t=i; for(j=i+1;j300;j+) if(btbj) t=j; if(t!=i) temp=bi; bi=bt; bt=temp; s1+; p1+; printf(%d %dn,s1,p1); return 0;运行结果:在这个题目中选择了交换法和选择法,首先要产生300个随机数,其次要懂得两种排序法的原理,然后进行编程,同时利用循环结构。关键在于产生随机数和排序。通过比拟发现交换法的交换次数比选择法少,比拟的次数两者一样。2 写一个函数void maxMinAver(int *data, int *max, int *min,float * ave,int size), 求一组数据的最大值、最小值和平均值,测试之。其中data指向给定数据的数组的指针,max、min、ave分别指向最大值、最小值和平均值,size是数组的大小。要求第一个实参是数组,第2、3、4个实参都是对普通的简单变量的某种操作,最后一个实参是数组的大小。测试之#includevoid maxMinAver(int *data, int *max, int *min,float * ave,int size);int main(void) int *data,*max,*min,size; float *ave; maxMinAver(data,max,min,ave,size); return 0;void maxMinAver(int *data, int *max, int *min,float * ave,int size) int a10; int b,c,n,j,s=0,temp; float d; data=a; max=&b; min=&c; ave=&d; for(n=0;n10;n+) scanf(%d,&an); /交换法排序求最大最小值 for(n=0;n9;n+) for(j=n+1;j10;j+) if(anaj) temp=an; an=aj; aj=temp; b=a0; c=a9;/求平均数 for(n=0;n10;n+) s=s+an; d=(float)s/10; printf(%d %d %f,*max,*min,*ave);这个题目需要利用函数调用,还要利用指针的间接引用法,设计函数将最大、最小以及平均值求出来。关键是函数调用。选做题:题目10 写一个日历显示程序 根本功能: 1输入任一年将显示出该年的所有月份日期,对应的星期 2 注意闰年情况其显示格式要求如下:1月份:中文英文都可以,2下一行显示星期,从周日到周六,中英文都可以3下一行开始显示日期从1号开始,并按其是周几实际情况与上面的星期数垂直对齐当输入2022显示如下:Input the year:2022Input the file name:aThe calendar of the year 2022. Januray 1 February 2 Sun Mon Tue Wed Thu Fri Sat Sun Mon Tue Wed Thu Fri Sat 1 2 3 1 2 3 4 5 6 7 4 5 6 7 8 9 10 8 9 10 11 12 13 14 11 12 13 14 15 16 17 15 16 17 18 19 20 21 18 19 20 21 22 23 24 22 23 24 25 26 27 28 25 26 27 28 29 30 31 29 = = March 3 April 4 Sun Mon Tue Wed Thu Fri Sat Sun Mon Tue Wed Thu Fri Sat 1 2 3 4 5 6 1 2 3 7 8 9 10 11 12 13 4 5 6 7 8 9 10 14 15 16 17 18 19 20 11 12 13 14 15 16 17 21 22 23 24 25 26 27 18 19 20 21 22 23 24 28 29 30 31 25 26 27 28 29 30 = =#includeint year(int p);int riqi(int z);int xinqi(int w,int l,int jj);void dayin(int m,int n,int a12,int b12,char c30);int main(void) int n,s; int m,qq,xx; printf(Input the year:); scanf(%d,&n); s=year(n); int a12 = 1,2,3,4,5,6,7,8,9,10,11,12; int b12=31,s,31,30,31,30,31,31,30,31,30,31; /printf(%d,b1); char c=sun mon tue wed thr fri sat; printf(The calendar of the year %dn,n); m=riqi(n); /printf(%dn,m); dayin(m,n,a,b,c);return 0;/判断输入的那一年是否是闰年int year(int p) if(p%4 != 0)return 28;if(p%4 = 0)if(p%100 = 0)if(p%400 = 0)return 29;return 28;return 29;/求输入那一年的1月1日式星期几/*参照1997年1月1日*/int riqi(int z)int d;int days=(z-1997)*365;int i = (z- 1997)/4;days=days+i*1;/*1997年1月1日是星期三*/d=days%7+1;d=(d+2)%7;if(d = 0)d = 7;return d;/从2月开始到12月每个月份的的1号是星期几int xinqi(int w,int l,int jj) int ss; int qi; int b12=31,28,31,30,31,30,31,31,30,31,30,31; ss=year(l); b1=ss; qi=(bjj-1%7+(w-1)+1)%7; return qi;void dayin(int m,int n,int a12,int b12,char c30) int i,r,v,xx,j,qq; for(i=0;i12;i+) printf(%dn,ai); printf (%sn,c); if(i=0) if(m=7) m=0; for(xx=0;xx3*m+m*1;xx+) printf( ); printf(1); for(r=2;r=7-m;r+) printf(%4d,r); printf(n); else qq=xinqi(m,n,i); m=qq; / printf(%d,m); for(xx=0;xx3*m+m*1;xx+) printf( ); printf(1); for(r=2;r=7-m;r+) printf(%4d,r); printf(n); for(j=r,v=1;j=bi;j+,v+) printf(%-4d,j); if(v%7=0) printf(n); printf(n=); printf(n); 运行结果:这个程序要求输入任意年能打印出该年的一月到十二月的日历表;因此需要年份,月份,日期;但如上程序是以1997的1月1日星期三为参照,因此只能查询1997年以后的年份日历(包括1997年)。流程图:如下 主流程图:分层流程图:模块流程图:dayin:year:xinqi:工程代码:1.main.c :#include#includeli.hint main(void) int n,s; int m,qq,xx; printf(Input the year:); scanf(%d,&n); s=year(n); int a12 = 1,2,3,4,5,6,7,8,9,10,11,12; int b12=31,s,31,30,31,30,31,31,30,31,30,31; /printf(%d,b1); char c=sun mon tue wed thr fri sat; printf(The calendar of the year %dn,n); m=riqi(n); /printf(%dn,m); dayin(m,n,a,b,c);return 0;2.ri.c: /判断输入的那一年是否是闰年int year(int p) if(p%4 != 0)return 28;if(p%4 = 0)if(p%100 = 0)if(p%400 = 0)return 29;return 28;return 29;/求输入那一年的1月1日式星期几/*参照1997年1月1日*/int riqi(int z)int d;int days=(z-1997)*365;int i = (z- 1997)/4;days=days+i*1;/*1997年1月1日是星期三*/d=days%7+1;d=(d+2)%7;if(d = 0)d = 7;return d;/从2月开始到12月每个月份的的1号是星期几int xinqi(int w,int l,int jj) int ss; int qi; int b12=31,28,31,30,31,30,31,31,30,31,30,31; ss=year(l); b1=ss; qi=(bjj-1%7+(w-1)+1)%7; return qi;/打印日历void dayin(int m,int n,int a12,int b12,char c30) int i,r,v,xx,j,qq; for(i=0;i12;i+) printf(%dn,ai); printf (%sn,c); if(i=0) if(m=7) m=0; for(xx=0;xx3*m+m*1;xx+) printf( ); printf(1); for(r=2;r=7-m;r+) printf(%4d,r); printf(n); else qq=xinqi(m,n,i); m=qq; / printf(%d,m); for(xx=0;xx3*m+m*1;xx+) printf( ); printf(1); for(r=2;r=7-m;r+) printf(%4d,r); printf(n); for(j=r,v=1;j=bi;j+,v+) printf(%-4d,j); if(v%7=0) printf(n); printf(n=); printf(n); 3.li.h :#ifndef LI_H#define LI_Hint year(int p);int riqi(int z);int xinqi(int w,int l,int jj);void dayin(int m,int n,int a12,int b12,char c30);#endif心得体会 编写一个程序之前首先要分析它,知道它的功能,要做什么等等,如何实现它,需要我们认真的思考,分析。对于较复杂的程序可以分模块把它逐一实现。编写程序的过程中,我们需要耐心,细心,信心。
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 办公文档 > 模板表格


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!