C语言日历显示课程设计分析报告含源代码.docx

上传人:b****1 文档编号:10179248 上传时间:2023-05-24 格式:DOCX 页数:21 大小:231.89KB
下载 相关 举报
C语言日历显示课程设计分析报告含源代码.docx_第1页
第1页 / 共21页
C语言日历显示课程设计分析报告含源代码.docx_第2页
第2页 / 共21页
C语言日历显示课程设计分析报告含源代码.docx_第3页
第3页 / 共21页
C语言日历显示课程设计分析报告含源代码.docx_第4页
第4页 / 共21页
C语言日历显示课程设计分析报告含源代码.docx_第5页
第5页 / 共21页
C语言日历显示课程设计分析报告含源代码.docx_第6页
第6页 / 共21页
C语言日历显示课程设计分析报告含源代码.docx_第7页
第7页 / 共21页
C语言日历显示课程设计分析报告含源代码.docx_第8页
第8页 / 共21页
C语言日历显示课程设计分析报告含源代码.docx_第9页
第9页 / 共21页
C语言日历显示课程设计分析报告含源代码.docx_第10页
第10页 / 共21页
C语言日历显示课程设计分析报告含源代码.docx_第11页
第11页 / 共21页
C语言日历显示课程设计分析报告含源代码.docx_第12页
第12页 / 共21页
C语言日历显示课程设计分析报告含源代码.docx_第13页
第13页 / 共21页
C语言日历显示课程设计分析报告含源代码.docx_第14页
第14页 / 共21页
C语言日历显示课程设计分析报告含源代码.docx_第15页
第15页 / 共21页
C语言日历显示课程设计分析报告含源代码.docx_第16页
第16页 / 共21页
C语言日历显示课程设计分析报告含源代码.docx_第17页
第17页 / 共21页
C语言日历显示课程设计分析报告含源代码.docx_第18页
第18页 / 共21页
C语言日历显示课程设计分析报告含源代码.docx_第19页
第19页 / 共21页
C语言日历显示课程设计分析报告含源代码.docx_第20页
第20页 / 共21页
亲,该文档总共21页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

C语言日历显示课程设计分析报告含源代码.docx

《C语言日历显示课程设计分析报告含源代码.docx》由会员分享,可在线阅读,更多相关《C语言日历显示课程设计分析报告含源代码.docx(21页珍藏版)》请在冰点文库上搜索。

C语言日历显示课程设计分析报告含源代码.docx

C语言日历显示课程设计分析报告含源代码

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

 

 

————————————————————————————————作者:

————————————————————————————————日期:

 

高级语言程序设计课程设计

 

题目:

 

专业计算机类

班级计算机类1102

学生

学号

指导教师_______________

起止时间2012.2.13——2012.2.17

 

2012年2月

 

实验报告

必做题:

(1)编一程序对2种排序方法进行比较:

交换法、选择法、插入法、冒泡法四种方法选2。

具体比较方法是随机生成一组(≥300个)的100以内的整数数据,用选定的2种排序方法进行排序。

纪录排序过程中数据比较和交换的次数,输出比较结果。

#include

#include

intmain(void)

{

inta[300],b[300];

inti,j,temp,t;

ints=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]

{

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]

t=j;

if(t!

=i){

temp=b[i];

b[i]=b[t];

b[t]=temp;

s1++;

}

p1++;

}

}

printf("%d%d\n",s1,p1);

return0;

}

运行结果:

 

在这个题目中选择了交换法和选择法,首先要产生300个随机数,其次要懂得两种排序法的原理,然后进行编程,同时利用循环结构。

关键在于产生随机数和排序。

通过比较发现交换法的交换次数比选择法少,比较的次数两者一样。

 

(2)写一个函数voidmaxMinAver(int*data,int*max,int*min,float*ave,intsize),求一组数据的最大值、最小值和平均值,测试之。

其中data指向给定数据的数组的指针,max、min、ave分别指向最大值、最小值和平均值,size是数组的大小。

要求第一个实参是数组,第2、3、4个实参都是对普通的简单变量的某种操作,最后一个实参是数组的大小。

测试之

#include

voidmaxMinAver(int*data,int*max,int*min,float*ave,intsize);

intmain(void)

{

int*data,*max,*min,size;

float*ave;

maxMinAver(data,max,min,ave,size);

return0;

}

voidmaxMinAver(int*data,int*max,int*min,float*ave,intsize)

{

inta[10];

intb,c,n,j,s=0,temp;

floatd;

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]

{

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号开始,并按其是周几实际情况与上面的星期数垂直对齐

当输入2004显示如下:

Inputtheyear:

2004

Inputthefilename:

a

Thecalendaroftheyear2004.

Januray1February2

SunMonTueWedThuFriSatSunMonTueWedThuFriSat

1231234567

45678910891011121314

1112131415161715161718192021

1819202122232422232425262728

2526272829303129

======================================================

March3April4

SunMonTueWedThuFriSatSunMonTueWedThuFriSat

123456123

7891011121345678910

1415161718192011121314151617

2122232425262718192021222324

28293031252627282930

======================================================

#include

intyear(intp);

intriqi(intz);

intxinqi(intw,intl,intjj);

voiddayin(intm,intn,inta[12],intb[12],charc[30]);

intmain(void)

{

intn,s;

intm,qq,xx;

printf("Inputtheyear:

");

scanf("%d",&n);

s=year(n);

inta[12]={1,2,3,4,5,6,7,8,9,10,11,12};

intb[12]={31,s,31,30,31,30,31,31,30,31,30,31};

//printf("%d",b[1]);

charc[]="sunmontuewedthrfrisat";

printf("Thecalendaroftheyear%d\n",n);

m=riqi(n);

//printf("%d\n",m);

dayin(m,n,a,b,c);

return0;

}

//判断输入的那一年是否是闰年

intyear(intp)

{

if(p%4!

=0)

{

return28;

}

if(p%4==0)

{

if(p%100==0)

{

if(p%400==0)

{

return29;

}

return28;

}

return29;

}

}

//求输入那一年的1月1日式星期几

/*参照1997年1月1日*/

intriqi(intz)

{

intd;

intdays=(z-1997)*365;

inti=(z-1997)/4;

days=days+i*1;

/*1997年1月1日是星期三*/

d=days%7+1;

d=(d+2)%7;

if(d==0)d=7;

returnd;

}

//从2月开始到12月每个月份的的1号是星期几

intxinqi(intw,intl,intjj)

{

intss;

intqi;

intb[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;

returnqi;

}

voiddayin(intm,intn,inta[12],intb[12],charc[30])

{

inti,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");

}

}

运行结果:

这个程序要求输入任意年能打印出该年的一月到十二月的日历表;因此需要年份,月份,日期;但如上程序是以1997的1月1日(星期三)为参照,因此只能查询1997年以后的年份日历(包括1997年)。

流程图:

(如下)

主流程图:

分层流程图:

 

模块流程图:

dayin:

year:

 

xinqi:

工程代码:

1.main.c:

#include

#include"li.h"

intmain(void)

{

intn,s;

intm,qq,xx;

printf("Inputtheyear:

");

scanf("%d",&n);

s=year(n);

inta[12]={1,2,3,4,5,6,7,8,9,10,11,12};

intb[12]={31,s,31,30,31,30,31,31,30,31,30,31};

//printf("%d",b[1]);

charc[]="sunmontuewedthrfrisat";

printf("Thecalendaroftheyear%d\n",n);

m=riqi(n);

//printf("%d\n",m);

dayin(m,n,a,b,c);

return0;

}

2.ri.c:

//判断输入的那一年是否是闰年

intyear(intp)

{

if(p%4!

=0)

{

return28;

}

if(p%4==0)

{

if(p%100==0)

{

if(p%400==0)

{

return29;

}

return28;

}

return29;

}

}

//求输入那一年的1月1日式星期几

/*参照1997年1月1日*/

intriqi(intz)

{

intd;

intdays=(z-1997)*365;

inti=(z-1997)/4;

days=days+i*1;

/*1997年1月1日是星期三*/

d=days%7+1;

d=(d+2)%7;

if(d==0)d=7;

returnd;

}

//从2月开始到12月每个月份的的1号是星期几

intxinqi(intw,intl,intjj)

{

intss;

intqi;

intb[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;

returnqi;

}

//打印日历

voiddayin(intm,intn,inta[12],intb[12],charc[30])

{

inti,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:

#ifndefLI_H

#defineLI_H

intyear(intp);

intriqi(intz);

intxinqi(intw,intl,intjj);

voiddayin(intm,intn,inta[12],intb[12],charc[30]);

#endif

心得体会

编写一个程序之前首先要分析它,知道它的功能,要做什么等等,如何实现它,需要我们认真的思考,分析。

对于较复杂的程序可以分模块把它逐一实现。

编写程序的过程中,我们需要耐心,细心,信心。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 人文社科 > 法律资料

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2