关于语言编程的论文
成就
课程设计报告簿
20 09 ~ 20 10学年第二学期
课程名称:C语言课程设计
老师:
班级级别:B090602
姓氏:臧福月
学号:B09060243
6月20日10
一、课程设计题目:万年历
二。标题要求:
(1)程序开始运行时,会显示当前的年历。
(2)能够根据输入的年份显示月历。
(3)当输入小于1900的年份时,退出程序。
三。话题分析:
课程设计主题分析和功能模块划分。
(1)首先根据起始年份判断每年第一天的星期几,然后根据星期几控制每个月第一行的空间输出!
(2)判断每一年是否是闰年,设置相关的二月天!
4.模块设计(流程图):
每个模块的设计描述,包括模块名称、功能、入口参数和返回值的描述,以及每个模块实现过程的描述(必要时绘制流程图)。
(1)main函数:这个函数是程序入口,通过一个do-while当输入的年数小于1900时程序退出,否则main函数调用claculate函数,将输入的年数作为参数传递给classify函数!
(2)calculate函数:该函数有一个参数,是主函数传入的输入年份,返回类型为void。这个函数负责从主函数接收输入的年份并显示出来,然后调用standpirnt函数。
(3)standpirnt函数:该函数有一个参数,是calculate函数传入的输入年份,返回类型为void。该函数负责实现标准日历格式输出,根据周期数设置每个月的天数,通过tag和tag2控制每个月的月初空间!并调用dayOfweek获取输入年份的第一天的星期几,输出对应的空格!
(4)dayOfweek函数:该函数有一个参数,是输入的年数,返回值是星期几。这个函数负责将一周中的某一天作为一年中的第一天返回,并输出许多与该天匹配的空格!
动词 (verb的缩写)源代码:
每个模块的源代码。
主要功能:
void main() {
int input = 0;
int Jude = 1;
做{
printf("请输入年份!\ n ");
scanf("%d ",& amp输入);
if(输入& lt= 1900) {
printf("数据错误!!!");
裘德= 0;
}
printf("年份是%d\n ",输入);
//这里,判断一下是不是闰年!
如果(裘德)
计算(输入);
} while(裘德);
}
*************************************************************
计算函数:
//这个函数负责显示年份,调用standpirnt函数!
无效计算(跨年度){
printf("%d\n ",年份);
standpirnt(年);
//day ofweek(year);
}
卓越功能
无效期限(跨年度){
//在这里测试日历格式输出!
int date[31]= { 0 };
for(int I = 0;我& lt31;i++) {
日期[I]= I+1;
}
int输入=年;
int tag = 0;
int tag 2 = 0;
int leap = 0;
int ccyd = 0;
int bug = 0;
for(int j = 0;j & lt12;j++) {
printf(" * * * * * * * * * * * * * * * * * * * * * * * * * * * * * \ n ");
Printf(" %d年%d月\n ",输入,(j+1));
printf(" * * * * * * * * * * * * * * * * * * * * * * * * * * * * * \ n ");
printf(" Day 123456 \ n ");
//设置一个月中的天数!
if(input % 4 = = 0 | | input % 100 = = 0 & amp;& amp输入%400!= 0)ccyd = 1;
开关((j+1)) {
案例1:leap = 31;打破;
案例二:ccyd?闰= 29:闰= 28;打破;
案例三:leap = 31;打破;
情况四:闰= 30;打破;
案例五:leap = 31;打破;
案例六:闰= 30;打破;
案例7:leap = 31;打破;
案例8:leap = 31;打破;
案例九:闰= 30;打破;
案例10:leap = 31;打破;
案例11:闰= 30;打破;
案例12:leap = 31;打破;
}
//这里控制跳转和换行!
for(int k = 0;k & lt飞跃;k++) {
if(k = = 0 & amp;& ampj == 0) {
tag = dayOfweek(输入);
if(tag = = 7)tag = 0;
}
else if(k==0) {
开关(标签2) {
案例0:printf(" ");打破;
case 1:printf(" ");打破;
案例二:printf(" ");打破;
案例三:printf(" ");打破;
案例四:printf(" ");打破;
案例五:printf(" ");打破;
案例6:printf(" ");打破;
}
}
printf("%3d ",date[k]);
tag++;
//新添加的
if(date[k] == leap) {
tag 2 = tag-1;
}
if(tag==7) {
printf(" \ n ");
tag = 0;
}
}
printf(" \ n ");
}
}
DayOfweek函数:
//这个函数负责判断输入年数时是星期几!
int dayOfweek(int dayy) {
int value = 0;
int input2 = dayy
int start = 1990;
int days = 1;
天数=输入2 -开始;
int total = 0;
int years[100000]= { 0 };
for(int I = 0;我& lt天;i++) {
年[i] =开始+I;
if(years[I]% 4 = = 0 | |(years[I]% 100 = = 0 & amp;& amp年[我] %400!=0)) {
//printf("今年是闰年!");
合计+= 366;
}
否则{
//平年!
合计+= 365;
}
}
int week = total % 7;
切换(周){
案例0:值= 1;
printf(" ");打破;
案例1:值= 2;
printf(" ");打破;
情况二:值= 3;
printf(" ");打破;
情况三:值= 4;
printf(" ");打破;
情况4:值= 5;
printf(" ");打破;
情况5:值= 6;
printf(" ");打破;
情况6:值= 7;
printf(" ");打破;
}
返回值;
}
不及物动词测试和调试:
设计系统及各模块的测试方法和方案。
(1)完成主函数后,通过输入小于1900的函数观察程序是否退出,以测试程序主模块是否正常!
(2)完成calculate函数后,调用main中的calculate函数,输出calculate中的相关信息,判断calculate函数是否正常!
(standpirnt函数完成后,在calculate函数中调用,观察控制台上输出的日历格式是否正确!
(4)完成dayOfweek函数后,在standpirnt函数中调用,最后观察输出!
七。课程设计概要:
(1)通过课程设计,增强对C语言中函数调用和断行跳转的理解和掌握。
(2)加深对面向过程编程的理解!
(3)深刻理解万年历的具体实现!