C语言日历显示课程设计报告(含源代码).doc_第1页
C语言日历显示课程设计报告(含源代码).doc_第2页
C语言日历显示课程设计报告(含源代码).doc_第3页
C语言日历显示课程设计报告(含源代码).doc_第4页
C语言日历显示课程设计报告(含源代码).doc_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

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

文档简介

高级语言程序设计课程设计题目: 专 业 计算机 类 班 级 计算机类1102 学 生 学 号 指导教师 _起止时间 2012.2.132012.2.17 2012年 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号开始,并按其是周几实际情况与上面的星期数垂直对齐当输入2004显示如下:Input the year:2004Input the file name:aThe calendar of the year 2004. 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(

温馨提示

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

评论

0/150

提交评论