C语言日历显示课程设计报告.docx

上传人:b****5 文档编号:8291864 上传时间:2023-01-30 格式:DOCX 页数:18 大小:118.61KB
下载 相关 举报
C语言日历显示课程设计报告.docx_第1页
第1页 / 共18页
C语言日历显示课程设计报告.docx_第2页
第2页 / 共18页
C语言日历显示课程设计报告.docx_第3页
第3页 / 共18页
C语言日历显示课程设计报告.docx_第4页
第4页 / 共18页
C语言日历显示课程设计报告.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

C语言日历显示课程设计报告.docx

《C语言日历显示课程设计报告.docx》由会员分享,可在线阅读,更多相关《C语言日历显示课程设计报告.docx(18页珍藏版)》请在冰豆网上搜索。

C语言日历显示课程设计报告.docx

C语言日历显示课程设计报告

C语言日历显示课程设计报告

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

题目:

专业

班级

学生

学号

指导教师

起止时间2012213——2012.2.17

2012年2月

实验报告4

必做题:

4

选做题:

9

题目10写一个日历显示程序9

16

心得体会26

实验报告

必做题:

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

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

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

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

#includeh>

#include

intmain(void)

{

inta[300],b[300];

intij,temp,t;

ints=O,p=O,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+l;j<300;j++)

{

if(a[i]

{

temp=a[i];

a[i]=aUJ;

a[j]=temp;

s++;

}

P++;

}}

printf(n%d%d\n'\s,p);

printfU;

for(i=0;i<299;i++)

t=i;for(j=i+l;j<300;j++){

if(b[t]

=i){temp=b[i];b[i]=b[t];b[t]=temp;sl++;

pl++;

}

}

printf(n%d%d\nH,sl,pl);return0;

}

运行结果:

ibol

在这个题目中选择了交换法和选择法,首先要产生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*avejntsize);intmain(void)

{

int*data9*max9*min^size;

float*ave;

maxMinAver(data,maximin,ave^size);

return0;

voidmaxMinAver(int*data,int*max,int*min,float*avejntsize){

inta[10];

intb,c,nj,s=0,temp;

floatd;

data=a;

max=&b;

min=&c;

ave=&d;

for(n=0;n<10;n++)

scanf(u%d,\&a[n]);

〃交换法排序求最大最小值

for(n=0;n<9;n++)

{

for(j=n+l;j<10;j++){if(a[n]

{

temp=a[n];a[n]=a[j];a[j]=temp;

b=a[O];

c=a[9];

〃求平均数

for(n=0;n<10;n++)

s=s+a[n];

d=(float)s/10;

printf(H%d%d%r\*max,*min,*ave);

X高级程序语言设计\

(2).exe

bL2345678910

1015.500000

Processpetupned0C0x0>executiontime:

13.938s

Pressanykeytocontinue-

这个题目需要利用函数调用,还要利用指针的间接引用法,设计函数

将最大、最小以及平均值求出来。

关键是函数调用。

选做题:

题目10写一个日历显示程序

基本功能:

1).输入任一年将显示出该年的所有月份日期,对应的星期

2).注意闰年情况

其显示格式要求如下:

1)月份:

中文英文都可以,

2)下一行显示星期,从周日到周六,中英文都可以

3)下一行开始显示日期从1号开始,并按其是周几实际情况与上面的星期数垂直对齐

当输入2004显示如下:

Inputtheyear:

2004

Inputthefilename:

a

Thecalendaroftheyear2004.

Januray1

February2

SunMonTueWedThuFriSatSun

MonTueWedThuFriSat

1

2

3

1

23456

7

4567

8

9

10

8

910111213

14

11121314

15

16

17

15

1617181920

21

18192021

22

23

24

22

2324252627

28

25262728:

29;

30

31

29

March3

SunMonTueWedThuFriSat

Apill4

Sun

MonTueWedThuFriSat

1234

56

123

78910111213

4

5678910

14151617181920

11

121314151617

21222324252627

18

192021222324

28293031

25

2627282930

#include

intyear(intp);

intriqi(intz);

intxinqi(intw,intljntjj);

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

intmain(void)

intn9s;

intm,qq,xx;

printf(11Inputtheyear:

11);

scanf(M%dn,&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(H%d,,,b[l]);

charc[]=Hsunmontuewedthrfrisat";printf(*'Thecalendaroftheyear%d\nu,n);m=riqi(n);

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

dayin(m9n,a9b9c);

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*l;

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

d=days%7+l;

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(I);

b[l]=ss;

qi=(b[jj-l]%7+(w-l)+l)%7;

returnqi;

}

voiddayin(intm,intn9inta[12],intb[12],charc[30])

{

inti,r,v,xxj,qq;

for(i=0;i<12;i++)

printf(,,%d\nn,a[i]);

printf(n%s\nn,c);

if(i==O){

if(m==7)

m=0;

for(xx=0;xx<3*m+m*1;xx++)

{

printf(Hn);

}

printf('T‘);

for(r=2;r<=7-m;r++){

printf(M%4dH,r);

}

printfW);

}

else

{

qq=xinqi(m9n9i);

m=qq;

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

for(xx=0;xx<3*m+m*1;xx++)

printf(Hn);

}

运行结果:

}

printf(nln);

for(r=2;r<=7-m;r++)

printf(,,%4dH,r);

}

printf(n\nn);

}

for(j=r,v=l;j<=b[i];j++,v++)

{

printf(n%-4dnj);

if(v%7==0)

printf(H\nn);}

printf(H\n==========================H);

printf(n\nn);

 

Inputtheyear-2012

Thecalendaroftheyear2012

1

sun

non

tue

wed

thr

Fri

sat

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

sun

non

tue

wed

thrfrisat

123

4

5

6

?

8

9

10

11

12

13

14

15

16

1?

18

19

20

21

22

23

24

25

26

2?

28

29

30

31

 

4

sun

non

tue

wed

thr

fri

sat

1

2

3

4

5

6

7

8

?

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

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

流程图:

(如下)

主流程图:

分层流程图:

模块流程图:

dayin:

inti.r.v.xz.j・qq:

printf(“%d\n",a[i]):

printf(“%s\n",c):

m=0;

qq二xinqi(m.n.i):

m=qq:

ior(xx=0;xx<3

for

(xx=0:

xx<3*m

printf(““):

1

 

printf(““):

printf(“1"

4lor(r=2:

r<=7-

m;r++)

For(r=2;r<=7-

m:

r++)

prinlf(“I");

prinlf(“%4

printf(“\n”);

 

printft4d".r);

printf(“\n"):

 

丿

year:

xinqi:

工程代码:

l.maimc:

#include

#includeHli.hH

intmain(void)

{

intn,s;

intm,qq,xx;

printf(Y'Inputtheyear:

11);

scanf(n%dH,&n);

s=year(n);

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

intb[12]={31,5,31,30,31,30,31,31,3071,30,31};

//printf(M%df\b[l]);

charc[]=Hsunmontuewedthrfrisatn;printf(HThecalendaroftheyear%d\nn,n);m=riqi(n);

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

dayin(m9n9a,b9c);

return0;

2erieC:

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

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*l;

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

d=days%7+l;

d=(d+2)%7;

if(d==0)d=7;

returnd;

}

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

intxinqi(intw,intl,intjj)

{

intss;

intqi;

intb[12]={31,2&31,30^31,30,31,31,30^31,30,31};

ss=year(l);

b[l]=ss;

qi=(b[jj-l]%7+(w-l)+l)%7;

returnqi;

}

〃打印日历

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

inti,r,v,xxj,qq;

for(i=0;i<12;i++)

{

printf(H%d\nn,a[i]);

printf(H%s\nn,c);

if(i==0){

if(m==7)m=0;

for(xx=0;xx<3*m+m*1;xx++)

{

printf(HH);

}

printf(nr*);

for(r=2;r<=7-m;r++){

printf(H%4dK,r);

printf(n\nf,);

else

qq=xinqi(m9n4);

m=qq;

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

for(xx=0;xx<3*m+m*1;xx++){printf(HH);

}

printf(,,r,);

for(r=2;r<=7-m;r++)

{

printf(M%4dM,r);

}

printf(n\nH);

}

for(j=r,v=l;j<=b[i];j++,v++)

{

printf(H%-4dHJ);

if(v%7==0)printf(H\n==========================n);printf(n\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-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1