C语言日历显示课程设计报告含源代码.docx
《C语言日历显示课程设计报告含源代码.docx》由会员分享,可在线阅读,更多相关《C语言日历显示课程设计报告含源代码.docx(16页珍藏版)》请在冰豆网上搜索。
C语言日历显示课程设计报告含源代码
高级语言程序设计课程设计
题目:
专业计算机类
班级计算机类1102
学生
学号
指导教师_______________
起止时间——
20##2月
实验报告
必做题:
〔1〕编一程序对2种排序方法进行比较:
交换法、选择法、插入法、冒泡法四种方法选2.具体比较方法是随机生成一组〔≥300个〕的100以内的整数数据,用选定的2种排序方法进行排序.纪录排序过程中数据比较和交换的次数,输出比较结果.
#include
#include
intmain
{
inta[300],b[300];
inti,j,temp,t;
ints=0,p=0,s1=0,p1=0;
for
{
a[i]=rand<>%100;
b[i]=a[i];
}
for{
for
{
if
{
temp=a[i];
a[i]=a[j];
a[j]=temp;
s++;
}
p++;
}}
printf<"%d%d\n",s,p>;
printf<"\n">;
for
{
t=i;
for
{
if
t=j;
if=i>{
temp=b[i];
b[i]=b[t];
b[t]=temp;
s1++;
}
p1++;
}
}
printf<"%d%d\n",s1,p1>;
return0;
}
运行结果:
在这个题目中选择了交换法和选择法,首先要产生300个随机数,其次要懂得两种排序法的原理,然后进行编程,同时利用循环结构.关键在于产生随机数和排序.通过比较发现交换法的交换次数比选择法少,比较的次数两者一样.
〔2〕写一个函数voidmaxMinAver,求一组数据的最大值、最小值和平均值,测试之.其中data指向给定数据的数组的指针,max、min、ave分别指向最大值、最小值和平均值,size是数组的大小.
要求第一个实参是数组,第2、3、4个实参都是对普通的简单变量的某种操作,最后一个实参是数组的大小.测试之
#include
voidmaxMinAver;
intmain
{
int*data,*max,*min,size;
float*ave;
maxMinAver;
return0;
}
voidmaxMinAver
{
inta[10];
intb,c,n,j,s=0,temp;
floatd;
data=a;
max=&b;
min=&c;
ave=&d;
for
{
scanf<"%d",&a[n]>;
}
//交换法排序求最大最小值
for
{
for{
if
{
temp=a[n];
a[n]=a[j];
a[j]=temp;
}
}
}
b=a[0];
c=a[9];
//求平均数
for
{
s=s+a[n];
}
d=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;
intriqi;
intxinqi;
voiddayin;
intmain
{
intn,s;
intm,,##;
printf<"Inputtheyear:
">;
scanf<"%d",&n>;
s=year;
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;
//printf<"%d\n",m>;
dayin;
return0;
}
//判断输入的那一年是否是闰年
intyear
{
if
=0>
{
return28;
}
if
{
if
{
if
{
return29;
}
return28;
}
return29;
}
}
//求输入那一年的1月1日式星期几
/*参照1997年1月1日*/
intriqi
{
intd;
intdays=*365;
inti=/4;
days=days+i*1;
/*1997年1月1日是星期三*/
d=days%7+1;
d=%7;
ifd=7;
returnd;
}
//从2月开始到12月每个月份的的1号是星期几
intxinqi
{
intss;
intqi;
intb[12]={31,28,31,30,31,30,31,31,30,31,30,31};
ss=year;
b[1]=ss;
qi=+1>%7;
returnqi;
}
voiddayin
{
inti,r,v,##,j,;
for
{
printf<"%d\n",a[i]>;
printf<"%s\n",c>;
if{
if
m=0;
for<##=0;##<3*m+m*1;##++>
{
printf<"">;
}
printf<"1">;
for{
printf<"%4d",r>;
}
printf<"\n">;
}
else
{
=xinqi;
m=;
//printf<"%d\\\\\\\\",m>;
for<##=0;##<3*m+m*1;##++>
{
printf<"">;
}
printf<"1">;
for
{
printf<"%4d",r>;
}
printf<"\n">;
}
for
{
printf<"%-4d",j>;
if
printf<"\n">;}
printf<"\n==========================">;
printf<"\n">;
}
}
运行结果:
这个程序要求输入任意年能打印出该年的一月到十二月的日历表;因此需要年份,月份,日期;但如上程序是以1997的1月1日〔星期三〕为参照,因此只能查询1997年以后的年份日历<包括1997年>.
流程图:
〔如下〕
主流程图:
分层流程图:
模块流程图:
dayin:
year:
xinqi:
工程代码:
1.main.c:
#include
#include"li.h"
intmain
{
intn,s;
intm,,##;
printf<"Inputtheyear:
">;
scanf<"%d",&n>;
s=year;
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;
//printf<"%d\n",m>;
dayin;
return0;
}
2.ri.c:
//判断输入的那一年是否是闰年
intyear
{
if
=0>
{
return28;
}
if
{
if
{
if
{
return29;
}
return28;
}
return29;
}
}
//求输入那一年的1月1日式星期几
/*参照1997年1月1日*/
intriqi
{
intd;
intdays=*365;
inti=/4;
days=days+i*1;
/*1997年1月1日是星期三*/
d=days%7+1;
d=%7;
ifd=7;
returnd;
}
//从2月开始到12月每个月份的的1号是星期几
intxinqi
{
intss;
intqi;
intb[12]={31,28,31,30,31,30,31,31,30,31,30,31};
ss=year;
b[1]=ss;
qi=+1>%7;
returnqi;
}
//打印日历
voiddayin
{
inti,r,v,##,j,;
for
{
printf<"%d\n",a[i]>;
printf<"%s\n",c>;
if{
if
m=0;
for<##=0;##<3*m+m*1;##++>
{
printf<"">;
}
printf<"1">;
for{
printf<"%4d",r>;
}
printf<"\n">;
}
else
{
=xinqi;
m=;
//printf<"%d\\\\\\\\",m>;
for<##=0;##<3*m+m*1;##++>
{
printf<"">;
}
printf<"1">;
for
{
printf<"%4d",r>;
}
printf<"\n">;
}
for
{
printf<"%-4d",j>;
if
printf<"\n">;
}
printf<"\n==========================">;
printf<"\n">;
}
}
3.li.h:
#ifndefLI_H
#defineLI_H
intyear;
intriqi;
intxinqi;
voiddayin;
#endif
心得体会
编写一个程序之前首先要分析它,知道它的功能,要做什么等等,如何实现它,需要我们认真的思考,分析.对于较复杂的程序可以分模块把它逐一实现.编写程序的过程中,我们需要耐心,细心,信心.