收藏 分销(赏)

C语言日历显示专业课程设计方案报告含源代码.doc

上传人:精**** 文档编号:2727333 上传时间:2024-06-05 格式:DOC 页数:26 大小:458.54KB 下载积分:10 金币
下载 相关 举报
C语言日历显示专业课程设计方案报告含源代码.doc_第1页
第1页 / 共26页
C语言日历显示专业课程设计方案报告含源代码.doc_第2页
第2页 / 共26页


点击查看更多>>
资源描述
高级语言程序设计课程设计 题目: 专 业 计算机 类 班 级 计算机类1102 学 生 学 号 指导老师 _______________ 起止时间 .2.13——.2.17 2月 目录 试验汇报 3 必做题: 3 选做题: 8 题目10 写一个日历显示程序 8 步骤图:(以下) 14 工程代码: 19 心得体会 24 试验汇报 必做题: (1) 编一程序对2种排序方法进行比较:交换法、选择法、插入法、冒泡法四种方法选2。具体比较方法是随机生成一组(≥300个)100以内整数数据,用选定2种排序方法进行排序。纪录排序过程中数据比较和交换次数,输出比较结果。 #include<stdio.h> #include<stdlib.h> int main(void) { int a[300],b[300]; int i,j,temp,t; int s=0,p=0,s1=0,p1=0; for(i=0;i<300;i++) { a[i]=rand()%100; b[i ]=a[i]; } for(i=0;i<299;i++){ for(j=i+1;j<300;j++) { if(a[i]<a[j]) { temp=a[i]; a[i]=a[j]; a[j]=temp; s++; } p++; }} printf("%d %d\n",s,p); printf("\n"); for(i=0;i<299;i++) { t=i; for(j=i+1;j<300;j++) { if(b[t]<b[j]) t=j; if(t!=i){ temp=b[i]; b[i]=b[t]; b[t]=temp; s1++; } p1++; } } printf("%d %d\n",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个实参全部是对一般简单变量某种操作,最终一个实参是数组大小。测试之 #include<stdio.h> void 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 a[10]; int b,c,n,j,s=0,temp; float d; data=a; max=&b; min=&c; ave=&d; for(n=0;n<10;n++) { scanf("%d",&a[n]); } //交换法排序求最大最小值 for(n=0;n<9;n++) { for(j=n+1;j<10;j++){ if(a[n]<a[j]) { temp=a[n]; a[n]=a[j]; a[j]=temp; } } } b=a[0]; c=a[9]; //求平均数 for(n=0;n<10;n++) { s=s+a[n]; } d=(float)s/10; printf("%d %d %f",*max,*min,*ave); } 这个题目需要利用函数调用,还要利用指针间接引使用方法,设计函数将最大、最小和平均值求出来。关键是函数调用。 选做题: 题目10 写一个日历显示程序 基础功效: 1).输入任十二个月将显示出该年全部月份日期,对应星期 2). 注意闰年情况 其显示格式要求以下: 1)月份:汉字英文全部能够, 2)下一行显示星期,从周日到周六,中英文全部能够 3)下一行开始显示日期从1号开始,并按其是周几实际情况和上面星期数垂直对齐 当输入显示以下: Input the year: Input the file name:a The calendar of the year . 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 =========================== =========================== … #include<stdio.h> int year(int p); int riqi(int z); int xinqi(int w,int l,int jj); void dayin(int m,int n,int a[12],int b[12],char c[30]); int main(void) { int n,s; int m,qq,xx; printf("Input the year:"); scanf("%d",&n); s=year(n); int a[12] = {1,2,3,4,5,6,7,8,9,10,11,12}; int b[12]={31,s,31,30,31,30,31,31,30,31,30,31}; //printf("%d",b[1]); char c[]="sun mon tue wed thr fri sat"; printf("The calendar of the year %d\n",n); m=riqi(n); //printf("%d\n",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 b[12]={31,28,31,30,31,30,31,31,30,31,30,31}; ss=year(l); b[1]=ss; qi=(b[jj-1]%7+(w-1)+1)%7; return qi; } void dayin(int m,int n,int a[12],int b[12],char c[30]) { int i,r,v,xx,j,qq; for(i=0;i<12;i++) { printf("%d\n",a[i]); printf ("%s\n",c); if(i==0){ if(m==7) m=0; for(xx=0;xx<3*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;xx<3*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<=b[i];j++,v++) { printf("%-4d",j); if(v%7==0) printf("\n"); } printf("\n=========================="); printf("\n"); } } 运行结果: 这个程序要求输入任意年能打印出该年一月到十二月日历表;所以需要年份,月份,日期;但如上程序是以19971月1日(星期三)为参考,所以只能查询1997年以后年份日历(包含1997年)。 步骤图:(以下) 主步骤图: 分层步骤图: 模块步骤图: dayin: year: xinqi: 工程代码: 1.main.c : #include<stdio.h> #include"li.h" int main(void) { int n,s; int m,qq,xx; printf("Input the year:"); scanf("%d",&n); s=year(n); int a[12] = {1,2,3,4,5,6,7,8,9,10,11,12}; int b[12]={31,s,31,30,31,30,31,31,30,31,30,31}; //printf("%d",b[1]); char c[]="sun mon tue wed thr fri sat"; printf("The calendar of the year %d\n",n); m=riqi(n); //printf("%d\n",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 b[12]={31,28,31,30,31,30,31,31,30,31,30,31}; ss=year(l); b[1]=ss; qi=(b[jj-1]%7+(w-1)+1)%7; return qi; } //打印日历 void dayin(int m,int n,int a[12],int b[12],char c[30]) { int i,r,v,xx,j,qq; for(i=0;i<12;i++) { printf("%d\n",a[i]); printf ("%s\n",c); if(i==0){ if(m==7) m=0; for(xx=0;xx<3*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;xx<3*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<=b[i];j++,v++) { printf("%-4d",j); if(v%7==0) printf("\n"); } printf("\n=========================="); printf("\n"); } } 3.li.h : #ifndef LI_H #define LI_H int year(int p); int riqi(int z); int xinqi(int w,int l,int jj); void dayin(int m,int n,int a[12],int b[12],char c[30]); #endif 心得体会 编写一个程序之前首先要分析它,知道它功效,要做什么等等,怎样实现它,需要我们认真思索,分析。对于较复杂程序能够分模块把它逐一实现。编写程序过程中,我们需要耐心,细心,信心。
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 学术论文 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服