C语言大作业

合集下载

c语言大作业课程设计

c语言大作业课程设计

c语言大作业课程设计一、课程目标知识目标:1. 学生能掌握C语言的基本语法,包括变量定义、数据类型、运算符、控制结构等;2. 学生能理解函数的定义和调用,灵活运用函数实现模块化编程;3. 学生能掌握数组、指针、结构体等C语言高级特性,并应用于实际编程中;4. 学生了解文件操作的基本方法,能够读写文件,实现数据的持久化存储。

技能目标:1. 学生能够运用C语言编程解决实际问题,具备独立分析和解决问题的能力;2. 学生能够运用所学知识,设计并实现一个小型的C语言项目;3. 学生能够通过编程实践,提高逻辑思维能力和编程技巧;4. 学生能够熟练使用集成开发环境(IDE),调试程序并优化代码。

情感态度价值观目标:1. 学生培养对编程的兴趣,激发学习计算机科学的热情;2. 学生养成合作、探究的学习习惯,培养团队协作能力;3. 学生通过编程实践,体验解决问题的成就感,增强自信心;4. 学生遵循编程规范,注重代码质量,培养良好的编程习惯。

课程性质:本课程为C语言大作业课程设计,旨在巩固和拓展学生对C语言知识的掌握,提高学生的编程能力和实践能力。

学生特点:学生已经掌握了C语言的基本知识,具备一定的编程基础,但缺乏实际项目经验。

教学要求:注重实践,引导学生通过动手编程解决问题,培养学生独立思考和解决问题的能力。

将课程目标分解为具体的学习成果,以便于后续教学设计和评估。

二、教学内容1. 复习C语言基础知识,包括变量、数据类型、运算符、控制结构等,参考教材第1-4章;2. 函数的定义、调用、参数传递及作用域,引用教材第5章;3. 数组、字符串、指针的概念及应用,深入讲解教材第6-7章;4. 结构体、联合体、枚举类型的使用,分析教材第8章;5. 文件操作,包括文件的打开、读写、关闭,依据教材第9章;6. 面向过程的编程思想,以实际项目为例,引导学生运用所学知识设计程序;7. 编程规范和调试技巧,培养学生的良好编程习惯;8. 小型项目实践,分组进行项目设计和开发,涵盖整个C语言知识体系。

c语言大作业综合

c语言大作业综合

c语言大作业综合第一章C语言简介及算法一.选择题1.一个C程序可以包含的函数。

A.一个B.多个C.若干D.任意2.下面不可以使用来编译和连接一个C 程序。

A.TurboCB.VC++C.C语言编译器D.BC3.C语言的程序一行写不下时,可以。

A.用逗号换行B.用分号换行C.在任意一空格处换行D.用回车符换行4.C控制语句有种。

A.6B.9C.32D.345.复合语句是用一对界定的语句块。

A.{}B.[]C.()D.”6.一个C程序的执行总是从该程序的函数开始,在函数最后结束。

A.第一个、最后一个B.main、mainC.主函数、最后一个D.第一个、第一个7.C语言提供的合法的数据类型关键字A.FloatB.ignedC.integerD.Char8.在以下各组标识符中,合法的标识符是(1)A.B01B.table_1C.0_tD.k%(2)A.Fat_B.voidC.pblD.(3)A.某y_B.longdoubleC.某pD.CHAR(4)A.jB.IntC._某yD.w_y239.C语言的标识符里不能有A.大小写字母B.数字C..D.下划线二.填空题1.C程序是由构成的,一个C程序中至少包含因此,是C程序的基本单位。

2.C程序注释是由和所界定的文字信息组成的。

3.函数体一般包括和4.算法是解决问题的和的描述。

5.C程序的注释部分可以出现在程序的位置,它对程序的编译和运行作用,但是可以增加程序的第二章C语言数据类型、基本运算及简单程序设计一.选择题1.不合法的字符常量是A.‘\\t’B.“A”C.‘a’D.’\\某32’2.逻辑运算符两侧运算对象的数据类型。

A.只能是0或1B.只能是0或非0正数C.只能是整型或字符型数据D.可以是任何类型的数据3.下列表达式中,不满足“当某的值为偶数时值为真,为奇数时值为假”的要求。

A.某%2==0B.!某%2!=0C.(某/2某2-某)==0D.!(某%2)4.下面选项中,不是合法整型常量的是A.160B.-0某cdgC.-01D.-0某48a5.能正确表示“当某的取值在[1,10]和[200,210]范围内为真,否则为假”的表达式是。

c语言大作业

c语言大作业

大作业:编写和调试一个具有能对用一维数组建立的顺序表进行各种操作的应用程序。

训练目的
1.提高综合应用流程控制语句的能力;
2.提高对复杂流程结构的程序的编写能力和调试能力;
3.掌握利用数组的组织存储数据以及一些实用的算法。

4.掌握对文件的操作。

步骤
1.写程序显示如下菜单
1. 插入 (插入一个数据)
2. 删除 (删除一个数据)
3. 排序 (排序)
4. 输出 (输出表中所数据)
0. 退出 (退出程序)
2. 用输入函数输入菜单选择的数字(0-4)对其他输入要提示错误信息流程控制结构如图1所示。

3.顺序表的数据类型自选,可以先使用基本类型,在此基础上修改使用结构体类型。

4.每个功能模块要求用函数实现。

5.在菜单中增加“写入文件”和“读取文件”选项,能将顺序表中的数据写入文件和从文件读取数据。

图1
作业提交内容:
1 解题思路
2 算法流程图
3 源代码
4 实验结果。

C语言程序设计大作业

C语言程序设计大作业

学年学期:20xx - 20xx 学年 1 学期课程名称:C语言程序设计综合训练课程学分:2分考核形式:大作业任课教师:xx题目:学生成绩统计程序学院:xx学院__________________________________ 专业班级:xx_______________________________________ 学号:_______ 学生姓名:提交日期:目录目录 (2)引言 (3)1. 学生成绩管理系统 (4)1.1系统简介 (4)1.2相关代码及知识点介绍 (4)2. 添加学生成绩功能 (5)3. 查找学生成绩功能 (6)4. 排序学生成绩功能 (7)5. 展示学生成绩功能 (9)6. 删除学生成绩功能 (10)7. 附页代码 (11)引言C语言是一种比较常见的计算机语言,许多大型应用软件都是用C语言编写而成的。

其简洁紧凑,灵活方便,数据结构丰富。

在一定程度上,C语言比汇编语言更实用,具有结构化语句,实现了结构化编程,使程序编写变得更容易、更快捷,可以编写出各种类型的程序。

同时,C语言是一门实践性强的学科,在学习的过程中,利用所学知识,编写一些与生活、学习相关的应用程序来提高程序编写能力,增强学习兴趣。

本次使用C语言设计一个学生成绩管理系统,可以实现学生成绩的添加,查找,排序及展示。

在作业中使用的是函数的模块化设计,将四个程序使用四个函数来实现。

与此同时,增加用户界面的交互,可供用户选择想要的功能,实现增删查排等操作。

1. 学生成绩管理系统1.1系统简介该系统主要实现学生成绩的添加,查找,排序,展示和删除五个功能,添加学生成绩主要有6个输入值组成,其中包括学号,姓名,语文,数学,英语,政治等。

查找学生成绩主要通过学号查询。

对学生成绩进行排序,可以分别通过学号,语文,数学,英语,政治,平均分,总分等进行排序。

第四项功能是对学生成绩以表格的形式进行展示。

删除学生成绩是按照学号对表格中的数据进行删除。

大学C语言程序设计大作业题目

大学C语言程序设计大作业题目

1数据处理系统一、软件开发目的该软件主要是使用C语言设计开发数据处理程序,实现对数据的排序、查找、插入、计算、输出等功能。

二、数据结构定义一个11*10的二维数组。

三、软件功能说明1.生成100个随机数:调用库函数rand()或random()产生100个随机数,并存储在二维数组中的前十行。

2.选择法排序:用选择法将数据由小到大排序输出,保存在数组中,按行优先的原则存放(将小数先存满第一行,然后第二行….)。

3.冒泡法排序:用冒泡法将数据由小到大排序输出,保存在数组中,按行优先的原则存放(将小数先存满第一行,然后第二行….)。

4.插入法排序:用插入法将数据由小到大排序输出,保存在数组中,按行优先的原则存放(将小数先存满第一行,然后第二行….)。

5.查找数据:输入待查找数据, 在二维数组中逐个查找,若找到输出数据所在位置的行列号,若无该数值则输出“无此数”。

6.转换二进制:将数组中数据转换为二进制并转存到另一数组中输出。

7.转换为素数之和:对于原数组中的数进行判断:若为偶数,则表示成两个素数的和,并输出。

8.插入数据:输入一个数,将该数插入原数组中,使数组中的数仍然按从小到大排序,将数组中数据按从小到大顺序输出。

9.删除数据输入一个数,若原数组中存在该数,则删除该数,使数组中的数仍然按从小到大排序,将数组中数据按从小到大顺序输出。

10.退出系统,结束任务。

四、软件验收标准1.有较为美观简洁大方的菜单,能保证用户方便、直观、快捷的熟悉并使用软件的各项功能。

系统菜单功能项:1生成100个随机数2选择法排序3冒泡法排序4插入法排序5查找数据6转换二进制7转换为素数之和8插入数据9删除数据10退出系统注意:要求每执行一个具体的功能之后,程序将重新显示菜单。

2.系统要有一定的可靠性、稳定性,能够实现各功能模块。

2图书借阅管理系统一、软件开发目的该软件主要是使用C语言设计开发一个简单的图书借阅管理系统,实现对图书的借书,还书的管理和数据统计。

C语言大作业

C语言大作业

学院目录1 摘要 (3)1.1设计题目 (3)1.2设计内容 (3)1.3开发工具 (3)1.4应用平台 (3)2 详细设计 (3)2.1程序结构 (3)2.2主要功能 (3)2.3函数实现 (4)2.4开发日志 (4)3 程序调试及运行 (5)3.1程序运行结果 (5)3.2程序使用说明 (6)3.3程序开发总结 (6)4 附件(源程序) (6)1 摘要1.1 设计题目(1)数学型大作业4.歌星大奖赛。

(2)数学型大作业6. 高次方数的尾数.1.2 设计内容(1)在歌星大奖赛中,有10个评委为参赛的选手打分,分数为1~100分,选手最后得分为:去掉一个最高分和一个最低分后其余8个分数的平均值。

(2)求13的13次方的最后三位数。

1.3 开发工具开发工具为Microsoft Visual C++ 6.0.1.4 应用平台Windows XP32位。

2 详细设计2.1 程序结构(1)整体包括一个主函数和一个自定义函数,首先在主函数中输入10个分数,在输出函数中调用自定义函数,在调用过程中向自定义函数传递实参。

在自定义函数中实现了平均分的计算。

然后返回到主函数输出。

(2)程序整体上是用到一个主函数和一个自定义函数。

程序先运行主函数,然后在主函数中调用自定义函数Thr,Thr函数实现了求13的13次方的最后三位尾数。

调用Thr函数时将实参(13,13)传递到自定义函数的形参中,从而实现了对问题的求解。

2.2 主要功能(!)该程序主要用于求解去除最高分和最低分的平均分。

该功能的实现是在自定义的函数中实现的,即用选择法先对10个分数进行排序,排序中用的是选择法,即从第i+1至第n个数中选出比第i个数小的,然后和其交换,如都大于第i个数,则不进行交换。

从而实现从小到大的排序。

然后只计算第2至第n-1个数的平均值,计算结果即为最后得分。

(2)该程序的主要功能为实现高次方数的尾数的求解。

高次方数的结果一般较大,超过了计算机的内存,由乘法的运算性质知其最后的尾数只与每次最后三位的乘积有关,于是每次只运行最后三位的乘积即可,然后截取即可,这样就避免了内存不足这一缺陷,程序便可得到正确的结果。

C语言大作业

C语言大作业

学院目录1 摘要 (3)1.1设计题目 (3)1.2设计内容 (3)1.3开发工具 (3)1.4应用平台 (3)2 详细设计 (3)2.1程序结构 (3)2.2主要功能 (10)2.3函数实现 (10)2.4开发日志 (17)3 程序调试及运行 (18)3.1程序运行结果 (18)3.2程序使用说明 (19)3.3程序开发总结 (20)4 附件(源程序) (20)1 摘要1.1 设计题目A题算法型:折半查找算法演示程序B题空间桁架结构节点位移求解1.2 设计内容A题:本程序是一个演示折半查找算法的演示程序。

当用户输入查找数据表列和要查找的数据时,程序会演示折半法查找该数的详细过程,并且支持多次查找、错误提示等功能。

B题:空间桁架结构节点位移求解1.3 开发工具Code Blocks 12.11(内置MinGW)1.4 应用平台Windows 7 64位2 详细设计2.1 程序结构A题:程序功能模块:本程序主要包含六大模块:程序说明模块、输入模块、排序模块、折半法查找模块、选择模块和程序退出模块。

工程文件结构:本程序的工程含有6个文件,其中main.cpp、print_stars.cpp、judge.cpp、sort.cpp、putout.cpp5个cpp 文件和include.h1个头文件(参见下图),两者共同存在于工程“折半法查找演示程序”中。

其中main.cpp 文件包含了程序的主体部分,程序说明模块、输入、排序、折半查找、选择、程序退出模块按线性排列。

其中输入、排序模块执行一次,这般查找、选择模块可多次执行,直到程序退出模块执行。

六大模块说明:(1) 程序说明模块:给使用者营造一个较为友好的界面,同时提供程序开发人员的相关信息以及程序操作的相关说明信息。

此部分模块主函数源代码如下:int a[N];/*存储要查找的数表,用户输入*/int i,n,num,count;/*count为折半次数计数器,n为数表数据个数,num存储所查数据*/int top,bottom,mid;char c;/*存储选择函数中的输入的字符y或n*/int flag=1;/*折半法循环标志变量*/int loc=-1;/*存储所查找数据位置*/double k=0;p_s(76);puts("\n");/*引用p_s函数,打出一行'*'*/(p_s函数位于print_star.cpp文件中,参见下文)printf("****欢****迎****使****用****折****半****查****找****法****演****示****器****\n");puts("\n");/*程序欢迎语*/p_s(13);printf("制作者:Haidong Chen***");/*作者信息*/p_s(4);printf("**Email:1562353594@");/*电子邮件*/p_s(11);puts("\n");p_s(76);puts("\n");/*再次引用p_s函数,程序说明部分结束*/附:print_star.cpp文件源代码#include<stdio.h>void p_s(int k){int i;for(i=1;i<=k;i++)/*连续输出ka个'*'*/printf("*");}(2) 输入模块:引导使用者输入要在其中查找数据的数表的数据个数和数表数据。

C语言大作业全

C语言大作业全

#include "stdafx.h"#include "stdio.h"#include "stdlib.h"#include "string.h"#include "malloc.h"#define LEN sizeof(struct student) #define NULL 0int n,m;int k=1;struct student{char num[20];char name[20];int age;char profession[50];int maths;int english;int C_program;float ave;struct student * next;};float ave(struct student * p1){float ave;ave=(float)(p1->maths+p1->english+p1->C_program)/3;return ave;}void save(struct student *head){struct student *p1 = head;FILE *outFile;outFile = fopen("stu.bin", "wb");if (outFile == NULL) {printf("\nFile error.");}else {while(p1 != NULL){fwrite(p1, sizeof(struct student), 1, outFile);p1 = p1->next;}fclose(outFile);}}//将数据存入文档中void check(struct student * head,struct student * p1) {struct student *h=head;for(m=0;m<n;m++,h=h->next ){if(strcmp( h->num,p1->num)==0){printf("输入号码重复\n");printf("请重新输入学号:");scanf("%s",p1->num);getchar();check(head,p1);}}}//检验学号是否重复struct student * creat(){struct student * head;struct student *p1,*p2;n=0;p1=p2=(struct student *)malloc(LEN); printf("学号:\n");scanf("%s",p1->num);getchar();printf("姓名:\n");gets(p1->name);printf("年龄:\n");scanf("%d",&p1->age);getchar();printf("专业:\n");gets(p1->profession);printf("数学成绩:\n");scanf("%d",&p1->maths);printf("英语成绩:\n");scanf("%d",&p1->english);printf("C语言成绩:\n");scanf("%d",&p1->C_program);head=NULL;while(strcmp(p1->num,"0")!=0){n=n+1;if(n==1)head=p1;else p2->next=p1;p2=p1;p1=(struct student *)malloc(LEN);printf("学号:\n");scanf("%s",p1->num);getchar();check(head,p1);//检查输入的学号是不是重复且是不是重复输错 printf("姓名:\n");gets(p1->name);printf("年龄:\n");scanf("%d",&p1->age);getchar();printf("专业:\n");gets(p1->profession);printf("数学成绩:\n");scanf("%d",&p1->maths);printf("英语成绩:\n");scanf("%d",&p1->english);printf("C语言成绩:\n");scanf("%d",&p1->C_program);}p2->next=NULL;save(head);return(head);}//录入数据并将其保存至文档void print(struct student *head){struct student * p;printf("\n这%d个学生的成绩为:\n",n);printf("学号姓名年龄专业数学英语 C语言平均成绩\n");p=head;if(head==NULL)printf("The info error\n");if(head!=NULL)while(p!=NULL){p->ave=ave(p);printf("%s%8s%8d%13s%9d%10d%9d%10.2f",p->num,p->name,p->age,p->profession,p->maths,p->engl ish,p->C_program,p->ave);printf("\n");p=p->next;}}//输出链表//struct student* read(){struct student *head = NULL;struct student *p2 = head;struct student record;FILE *infile;infile = fopen("stu.bin", "rb");n=1;if(infile == NULL){printf("\nFile error.");}else {head = (struct student *)malloc(sizeof(struct student));fread(head, sizeof(*head), 1, infile);p2 = head;while(fread(&record, sizeof(record), 1, infile))//fread返回数据个数,结束和出错返回0;{p2->next = (struct student *)malloc(sizeof(struct student));memcpy(p2->next, &record, sizeof(record)); //复制结构体数据p2 = p2->next;n=n+1;}p2->next=NULL;fclose(infile);}return head;}//从文件中读取数据struct student * search_num(struct student * head,char array[20]){struct student * p1;p1=head;if(head==NULL){printf("打开错误");return(head);}while((strcmp(array,p1->num)!=0)&&(p1->next!=NULL)){p1=p1->next;}//找到相应的学号if(strcmp(array,p1->num)==0){printf("学号姓名年龄专业数学英语 C语言\n");printf("%s%10s%10d%15s%11d%12d%11d",p1->num,p1->name,p1->age,p1->profession,p1->maths,p1-> english,p1->C_program);printf("\n");}else printf("此学号不存在\n");return(head);}//按学号查询数据//]struct student * search_name(struct student * head,char array[20]){struct student * p1;p1=head;if(head==NULL){printf("打开错误");return(head);}while((strcmp(array,p1->name)!=0)&&(p1->next!=NULL)){p1=p1->next;}//找到相应的学号if(strcmp(array,p1->name)==0){printf("学号姓名年龄专业数学英语 C语言\n");printf("%s%10s%10d%15s%11d%12d%11d",p1->num,p1->name,p1->age,p1->profession,p1->maths,p1-> english,p1->C_program);printf("\n");}else printf("此姓名不存在\n");return(head);}//按姓名查询数据//struct student * change(struct student * head,char array[20]){struct student *p1;p1=head;if(head==NULL){printf("打开错误!");return(head);}while((strcmp(array,p1->num)!=0)&&(p1->next!=NULL)) {p1=p1->next;} //找到相应的学号if(strcmp(array,p1->num)==0){printf("请输入更改的学号:\n");printf("学号:\n");scanf("%s",p1->num);getchar();printf("姓名:\n");gets(p1->name);printf("年龄:\n");scanf("%d",&p1->age);getchar();printf("专业:\n");gets(p1->profession);printf("数学成绩:\n");scanf("%d",&p1->maths);printf("英语成绩:\n");scanf("%d",&p1->english);printf("C语言成绩:\n");scanf("%d",&p1->C_program);save(head);}else printf("所查学号不存在\n");return(head);}//修改数据//struct student * del(struct student * head,char array[20]) {struct student * p1,* p2;if(head==NULL){printf("\nlist null!\n");return head;}p1=head;while((strcmp(array,p1->num)!=0)&&(p1->next!=NULL)){p2=p1;p1=p1->next;}//找到相应的学号、if((strcmp(array,p1->num)==0)){if(strcmp(array,head->num)==0)head=p1->next;elsep2->next=p1->next;}elseprintf("你查询的学号(%s)不存在!",p1->num);save(head);return(head);}void add(struct student * head){struct student *p1;printf("\n请输入添加学生的信息:\n");p1=(struct student *)malloc(LEN);printf("学号:\n");scanf("%s",p1->num);getchar();check(head,p1);printf("姓名:\n");gets(p1->name);printf("年龄:\n");scanf("%d",&p1->age);getchar();printf("专业:\n");gets(p1->profession);printf("数学成绩:\n");scanf("%d",&p1->maths);printf("英语成绩:\n");scanf("%d",&p1->english);printf("C语言成绩:\n");scanf("%d",&p1->C_program);FILE *outFile;outFile = fopen("stu.bin", "ab");if (outFile == NULL) {printf("\n打开错误.");}fwrite(p1, sizeof(struct student), 1, outFile);fclose(outFile);}void sta(struct student * head,char array[20],int max,int min) {struct student *p1=head;int k=0;if(strcmp(array,"maths")==0){while(p1!=NULL){if(p1->maths>=min&&p1->maths<=max)k++;p1=p1->next;}printf("数学科目在%d到%d之间的人数为:%d\n",min,max,k);}else if(strcmp(array,"english")==0){while(p1!=NULL){if(p1->english>=min&&p1->english<=max)k++;p1=p1->next;}printf("英语科目在%d到%d之间的人数为:%d\n",min,max,k); }else if(strcmp(array,"C_program")==0){while(p1!=NULL)if(p1->C_program>=min&&p1->C_program<=max)k++;p1=p1->next;}printf("C语言科目在%d到%d之间的人数为:%d\n",min,max,k); }}void exit(){printf("\t\t");printf("**********************\n");printf("\t\t");printf("*******感谢使用*******\n");printf("\t\t");printf("**********************\n");k=0;}void Chooseproject(int i){ struct student * head=NULL;if(i==1){head = read();print(head);else if(i==2){int p=1 ;printf("请选择按学号查询(1)还是按姓名查询(0):");scanf("%d",&p);while(p!=1&&p!=0){printf("输入错误!");printf("请选择学号查询(1)还是姓名查询(0)");scanf("%d",&p);}if(p==1){head = read();char num[20];printf("请输入查询的学号:\n");scanf("%s",num);head=search_num(head,num);while(strcmp(num,"0")!=0){printf("是否继续查询(是就输学号,否就输0):\n");scanf("%s",num);if(strcmp(num,"0")==0)break;head=search_num(head,num);}}else if(p==0){head = read();char name[20];printf("请输入查询的学号:\n");scanf("%s",name);head=search_name(head,name);while(strcmp(name,"0")!=0){printf("是否继续查询(是就输学号,否就输0):\n"); scanf("%s",name);if(strcmp(name,"0")==0)break;head=search_name(head,name);}}}else if(i==3){ head = read();char num[20];printf("请输入要更改的学号:\n");scanf("%s",num);getchar();head=change(head,num);print(head);while(strcmp(num,"0")!=0){printf("是否继续更改(是就输学号,否就输0):\n"); scanf("%s",num);getchar();if(strcmp(num,"0")==0)break;head=change(head,num);print(head);}}else if(i==4){head=read();add(head);}else if(i==5){char num[20];head=read();printf("请输入要删除的学号:\n");scanf("%s",num);getchar();head=del(head,num);print(head);}else if(i==6){head = read();int i;printf("\t\t");printf("************1.学号排序;********************\n");printf("\t\t");printf("************2.平均成绩排序;****************\n");printf("\t\t");printf("************3.数学成绩排序;****************\n"); printf("\t\t");printf("************4.英语成绩排序;****************\n"); printf("\t\t");printf("************5.C语言成绩排序;***************\n");printf("请输入相应的排序代号:");scanf("%d",&i);sort_down(head,i);}else if(i==7){head=read();int min,max;char subject[20];printf("\t\t");printf("************数学(maths);***************\n");printf("\t\t");printf("************英语(english);*************\n");printf("\t\t");printf("***********C语言(C_program);***********\n");printf("请选择要统计的项目:\n");scanf("%s",subject);getchar();while((strcmp(subject,"maths")!=0&&strcmp(subject,"english")!=0&&strcmp(subject,"C_pro gram")!=0)){printf("输入错误!");printf("\t\t");printf("************数学(maths);***********\n");printf("\t\t");printf("************英语(english);***********\n");printf("\t\t");printf("***********C语言(C_program);***********\n");printf("请选择要统计的项目:\n");scanf("%s",subject);getchar();}printf("请输入分数段的区间:");printf("区间上限:");scanf("%d",&max);printf("区间下限:");scanf("%d",&min);while(min>=max){printf("输入的下限大于等于上限,错误!");printf("请重新输入分数段的区间:");printf("区间上限:");scanf("%d",max);printf("区间下限:");scanf("%d",min);}sta(head,subject,max,min);}else if(i==8){printf("\t\t");printf("************************************\n");printf("\t\t");printf("**************感谢使用**************\n");printf("\t\t");printf("************************************\n");k=0;}}//选择功能void menu(){int i;printf("\t\t");printf("***********1.信息浏览;***********\n");printf("\t\t");printf("***********2.信息查询;***********\n");printf("\t\t");printf("***********3.信息修改;***********\n");printf("\t\t");printf("***********4.信息添加;***********\n");printf("\t\t");printf("***********5.信息删除;***********\n");printf("\t\t");printf("***********6.信息排序;***********\n");printf("\t\t");printf("***********7.信息统计;***********\n");printf("\t\t");printf("***********8,退出系统;***********\n");printf("请选择项目:");scanf("%d",&i);while(i<1||i>8){printf("输入错误,请重新输入:\n");printf("\t\t");printf("***********1.信息浏览;***********\n");printf("\t\t");printf("***********2.信息查询;***********\n");printf("\t\t");printf("***********3.信息修改;***********\n");printf("\t\t");printf("***********4.信息添加;***********\n");printf("\t\t");printf("***********5.信息删除;***********\n");printf("\t\t");printf("***********6.信息统计;***********\n");printf("\t\t");printf("***********7,退出系统;***********\n");printf("请重新选择项目:");scanf("%d",&i);}Chooseproject(i);}int _tmain(int argc, _TCHAR* argv[]){ struct student *head = NULL;printf("\t\t");printf("************************************************************\n");printf("\t\t");printf("*********************学生管理系***************************\n");printf("\t\t");printf("************************************************************\n" );printf("是否已经录入信息?\n");char c;printf("请输入 'y' 或 'n':");c=getchar();getchar();while(c!='n'&&c!='y'){printf("输入错误,请重新输入( 'y' 或 'n'):\n");c=getchar();getchar();}if(c=='n'){printf("请输入学生成绩:\n");head=creat();}while(k!=0){menu();}system("pause");return 0;}。

C语言大作业

C语言大作业

《C程序设计》课程设计
【设计目的】全面深入理解高级语言程序设计思想,掌握程序设计知识和技巧,提高综合应用能力。

【设计题目】编制并调试学生成绩管理程序。

【基本要求】
1.功能要求
1)从磁盘读入学生成绩单文件(学生的原始成绩单可通过运行程序产生)。

2)按下列要求组织成绩单:
(1)按学号排序
(2)按姓名排序(用选择法)
(3)按成绩排序(用冒泡法)
(4)按成绩分段计数(每10分为一段)
(5)优秀成绩单(优秀线由宏定义给出)
(6)不及格成绩单
3)将各类学生成绩单输出到显示器上,同时以文件形式保存到磁盘上。

2.界面要求
1)允许用户输入成绩单的路径及文件名。

2)可选择成绩单排序规则:升序、降序。

3)可选择输出内容:原始成绩单、排序后的成绩单、分段后的成绩单、优秀成绩单、不
及格成绩单。

3.数据结构要求
一个学生的信息,至少包括:
1)学号:形如:54110115,其中“54”表示所在学院,“11”表示年级,“01”表示班级,
“15”表示班内序号
2)姓名
3)性别
4)考试科目(共3科)
5)各科目考试成绩
要求用结构体数组保存学生信息。

4.程序结构要求
体现模块化程序设计思想,用函数实现各模块功能。

【选作】
1)分别将优秀成绩单和不及格成绩单以链表形式组织。

2)读入若干班级成绩单,按班级完成以上【基本要求】所述功能。

C语言大作业

C语言大作业

C语言大作业题目1电话簿管理程序存储的数据包括:人名、工作单位、电话号码和E-mail地址等。

程序要求具有如下功能:①加入一个新电话号码;②删除一个电话号码;③显示保存的所有电话号码。

④修改功能;⑤排序功能,包括按照电话号码排序和按照姓名字母序排列;⑥查询功能,包括按人名查询电话号码和按电话号码查询人名。

⑦保存信息到文件。

⑧从文件读取信息。

课程设计要求:程序运行开始,首先显示一个提示信息,作为一个功能选择菜单。

用户选用哪条功能,就调用哪项功能。

2班级同学信息管理程序存储的数据包括:姓名,学号,宿舍,QQ号码和电话号码等。

程序要求具有以下功能:①加入一个同学的记录;②删除一个同学的记录;③显示所有同学的记录。

④排序功能,包括按照学号排序和按照姓名字母序排序显示所有同学的纪录。

⑤查询功能,包括按学号查询同学的信息或者其他。

⑥修改功能。

⑦保存信息到文件。

⑧从文件读取信息。

课程设计要求:程序运行开始,首先显示一个提示信息,作为一个功能选择菜单。

用户选用哪条命令,就调用哪项功能。

3职工信息管理系统职工信息包括职工号、姓名、性别、年龄、学历、工资、住址、电话等(职工号不重复)。

提供以下功能:①加入一个职工的记录;②删除一个职工的记录;③显示所有职工的记录。

④排序功能,包括按照学号排序和按照姓名字母序排序显示所有职工的纪录。

⑤查询功能,包括按工号或姓名查询职工的信息或者其他。

⑥修改功能。

⑦保存信息到文件。

⑧从文件读取信息。

课程设计要求:程序运行开始,首先显示一个提示信息,作为一个功能选择菜单。

用户选用哪条命令,就调用哪项功能。

4图书信息管理系统图书信息包括:图书号、书名、作者名、分类号、出版单位、出版时间、价格等。

提供以下功能:①加入一本图书;②删除一本图书;③显示所有图书。

④排序功能,包括按照书名排序所有图书。

⑤查询功能,包括按书名查询图书。

⑥修改功能⑦保存信息到文件。

⑧从文件读取信息。

课程设计要求:程序运行开始,首先显示一个提示信息,作为一个功能选择菜单。

C语言大作业全

C语言大作业全

C语言大作业全 Document number:PBGCG-0857-BTDO-0089-PTT1998#include ""#include ""#include ""#include ""#include ""#define LEN sizeof(struct student)#define NULL 0int n,m;int k=1;struct student{char num[20];char name[20];int age;char profession[50];int maths;int english;int C_program;float ave;struct student * next;};float ave(struct student * p1){float ave;ave=(float)(p1->maths+p1->english+p1->C_program)/3;return ave;}void save(struct student *head){struct student *p1 = head;FILE *outFile;outFile = fopen("", "wb");if (outFile == NULL) {printf("\nFile error.");}else {while(p1 != NULL){fwrite(p1, sizeof(struct student), 1, outFile);p1 = p1->next;}fclose(outFile);}};}else {head = (struct student *)malloc(sizeof(struct student));fread(head, sizeof(*head), 1, infile);p2 = head;while(fread(&record, sizeof(record), 1, infile));}fwrite(p1, sizeof(struct student), 1, outFile);fclose(outFile);}void sta(struct student * head,char array[20],int max,int min) {struct student *p1=head;int k=0;if(strcmp(array,"maths")==0){while(p1!=NULL){if(p1->maths>=min&&p1->maths<=max)k++;p1=p1->next;}printf("数学科目在%d到%d之间的人数为:%d\n",min,max,k); }else if(strcmp(array,"english")==0){while(p1!=NULL){if(p1->english>=min&&p1->english<=max)k++;p1=p1->next;}printf("英语科目在%d到%d之间的人数为:%d\n",min,max,k);}else if(strcmp(array,"C_program")==0){while(p1!=NULL){if(p1->C_program>=min&&p1->C_program<=max)k++;p1=p1->next;}printf("C语言科目在%d到%d之间的人数为:%d\n",min,max,k); }}void exit(){printf("\t\t");printf("**********************\n");printf("\t\t");printf("*******感谢使用*******\n");printf("\t\t");printf("**********************\n");k=0;}void Chooseproject(int i){ struct student * head=NULL;if(i==1){head = read();print(head);}else if(i==2){int p=1 ;printf("请选择按学号查询(1)还是按姓名查询(0):");scanf("%d",&p);while(p!=1&&p!=0){printf("输入错误!");printf("请选择学号查询(1)还是姓名查询(0)");scanf("%d",&p);}if(p==1){head = read();char num[20];printf("请输入查询的学号:\n");scanf("%s",num);head=search_num(head,num);while(strcmp(num,"0")!=0){printf("是否继续查询(是就输学号,否就输0):\n"); scanf("%s",num);if(strcmp(num,"0")==0)break;head=search_num(head,num);}}else if(p==0){head = read();char name[20];printf("请输入查询的学号:\n");scanf("%s",name);head=search_name(head,name);while(strcmp(name,"0")!=0){printf("是否继续查询(是就输学号,否就输0):\n"); scanf("%s",name);if(strcmp(name,"0")==0)break;head=search_name(head,name);}}}else if(i==3){ head = read();char num[20];printf("请输入要更改的学号:\n");scanf("%s",num);getchar();head=change(head,num);print(head);while(strcmp(num,"0")!=0){printf("是否继续更改(是就输学号,否就输0):\n");scanf("%s",num);getchar();if(strcmp(num,"0")==0)break;head=change(head,num);print(head);}}else if(i==4){head=read();add(head);}else if(i==5){char num[20];head=read();printf("请输入要删除的学号:\n");scanf("%s",num);getchar();head=del(head,num);print(head);}else if(i==6){head = read();int i;printf("\t\t");printf("************1.学号排序;********************\n");printf("\t\t");printf("************2.平均成绩排序;****************\n");printf("\t\t");printf("************3.数学成绩排序;****************\n");printf("\t\t");printf("************4.英语成绩排序;****************\n");printf("\t\t");printf("************语言成绩排序;***************\n");printf("请输入相应的排序代号:");scanf("%d",&i);sort_down(head,i);}else if(i==7){head=read();int min,max;char subject[20];printf("\t\t");printf("************数学(maths);***************\n");printf("\t\t");printf("************英语(english);*************\n");printf("\t\t");printf("***********C语言(C_program);***********\n");printf("请选择要统计的项目:\n");scanf("%s",subject);getchar();while((strcmp(subject,"maths")!=0&&strcmp(subject,"english")!=0&&strcmp(subject,"C_ program")!=0)){printf("输入错误!");printf("\t\t");printf("************数学(maths);***********\n");printf("\t\t");printf("************英语(english);***********\n");printf("\t\t");printf("***********C语言(C_program);***********\n");printf("请选择要统计的项目:\n");scanf("%s",subject);getchar();}printf("请输入分数段的区间:");printf("区间上限:");scanf("%d",&max);printf("区间下限:");scanf("%d",&min);while(min>=max){printf("输入的下限大于等于上限,错误!");printf("请重新输入分数段的区间:");printf("区间上限:");scanf("%d",max);printf("区间下限:");scanf("%d",min);}sta(head,subject,max,min);}else if(i==8){printf("\t\t");printf("************************************\n");printf("\t\t");printf("**************感谢使用**************\n");printf("\t\t");printf("************************************\n");k=0;}}息浏览;***********\n");printf("\t\t");printf("***********2.信息查询;***********\n");printf("\t\t");printf("***********3.信息修改;***********\n");printf("\t\t");printf("***********4.信息添加;***********\n");printf("\t\t");printf("***********5.信息删除;***********\n");printf("\t\t");printf("***********6.信息排序;***********\n");printf("\t\t");printf("***********7.信息统计;***********\n");printf("\t\t");printf("***********8,退出系统;***********\n");printf("请选择项目:");scanf("%d",&i);while(i<1||i>8){printf("输入错误,请重新输入:\n");printf("\t\t");printf("***********1.信息浏览;***********\n");printf("\t\t");printf("***********2.信息查询;***********\n");printf("\t\t");printf("***********3.信息修改;***********\n");printf("\t\t");printf("***********4.信息添加;***********\n");printf("\t\t");printf("***********5.信息删除;***********\n");printf("\t\t");printf("***********6.信息统计;***********\n");printf("\t\t");printf("***********7,退出系统;***********\n");printf("请重新选择项目:");scanf("%d",&i);}Chooseproject(i);}int _tmain(int argc, _TCHAR* argv[]){ struct student *head = NULL;printf("\t\t");printf("************************************************************\n");printf("\t\t");printf("*********************学生管理系***************************\n");printf("\t\t");printf("************************************************************ \n");printf("是否已经录入信息\n");char c;printf("请输入 'y' 或 'n':");c=getchar();getchar();while(c!='n'&&c!='y'){printf("输入错误,请重新输入( 'y' 或 'n'):\n"); c=getchar();getchar();}if(c=='n'){printf("请输入学生成绩:\n");head=creat();}while(k!=0){menu();}system("pause");return 0;}。

c语言课程设计大作业

c语言课程设计大作业

c语言课程设计大作业一、教学目标本课程的教学目标是使学生掌握C语言的基本语法、数据结构和算法,具备使用C语言进行程序设计的能力。

具体目标如下:1.知识目标:学生能够理解并掌握C语言的基本语法、数据结构和常用算法。

2.技能目标:学生能够运用C语言编写简单的程序,解决实际问题。

3.情感态度价值观目标:学生能够体验到编程的乐趣,培养对计算机科学的兴趣。

二、教学内容根据课程目标,本课程的教学内容主要包括C语言的基本语法、数据结构和算法。

具体安排如下:1.C语言的基本语法:包括变量、运算符、控制结构、函数等。

2.数据结构:包括数组、链表、栈、队列、树等。

3.算法:包括排序算法、查找算法、递归算法等。

三、教学方法为了达到课程目标,本课程将采用多种教学方法,如讲授法、讨论法、案例分析法、实验法等。

具体方法如下:1.讲授法:用于讲解C语言的基本语法、数据结构和算法。

2.讨论法:用于引导学生探讨编程问题,培养解决问题的能力。

3.案例分析法:通过分析实际案例,使学生更好地理解C语言的应用。

4.实验法:让学生动手编写程序,提高编程能力。

四、教学资源为了支持教学内容和教学方法的实施,本课程将准备以下教学资源:1.教材:《C语言程序设计》。

2.参考书:提供相关的编程资料和算法教程。

3.多媒体资料:制作课件和教学视频,辅助学生学习。

4.实验设备:提供计算机实验室,让学生进行编程实践。

五、教学评估本课程的评估方式包括平时表现、作业和考试。

具体评估方式如下:1.平时表现:通过学生在课堂上的参与度、提问和讨论,评估其对C语言的理解和应用能力。

2.作业:布置编程作业,评估学生对C语言语法和算法的掌握程度。

3.考试:进行期中和期末考试,评估学生对C语言的整体掌握情况。

评估方式应客观、公正,能够全面反映学生的学习成果。

六、教学安排本课程的教学安排如下:1.教学进度:按照教材的章节顺序进行教学,确保学生掌握C语言的基本语法、数据结构和算法。

c程序设计大作业

c程序设计大作业

c程序设计大作业C程序设计大作业C程序设计是一门实践性很强的课程,大作业是检验学生对C语言掌握程度的重要方式。

本次大作业的目的在于通过实际编程练习,加深对C 语言基础语法、数据结构、算法设计和程序调试等方面的理解,同时培养学生的编程思维和解决实际问题的能力。

一、大作业要求1. 题目选择:学生可以从以下题目中任选一题完成:- 学生信息管理系统- 图书馆管理系统- 简易计算器- 字符串处理工具- 图形界面的五子棋游戏2. 功能实现:每个题目都应实现基本功能,例如:- 学生信息管理系统:添加、删除、修改、查询学生信息。

- 图书馆管理系统:图书借阅、归还、查询等。

- 简易计算器:实现基本的加减乘除运算。

- 字符串处理工具:实现字符串的复制、连接、查找、替换等操作。

- 图形界面的五子棋游戏:实现基本的下棋逻辑和胜负判断。

3. 代码规范:代码应遵循良好的编程规范,包括但不限于:- 明确的函数分工,每个函数应有简短的注释说明其功能。

- 变量命名应清晰,避免使用无意义的缩写。

- 代码结构清晰,逻辑性强。

4. 文档编写:提交的作业应包括:- 程序设计说明书:介绍程序的功能、设计思路、实现过程等。

- 源代码:按照题目要求编写的C语言代码。

- 用户手册:简要说明如何使用程序。

5. 提交方式:所有材料应以电子文档形式提交,包括设计说明书、源代码和用户手册。

二、大作业流程1. 选题:学生在教师的指导下选择适合自己能力的题目。

2. 需求分析:明确程序需要实现的功能和性能要求。

3. 设计:设计程序的总体结构和各个模块的详细设计。

4. 编码:根据设计文档编写程序代码。

5. 测试:对编写的程序进行测试,确保功能正确无误。

6. 调试:根据测试结果进行必要的调试,修正程序中的错误。

7. 文档编写:编写程序设计说明书和用户手册。

8. 提交:按照要求提交所有材料。

三、评分标准1. 功能实现:程序是否实现了题目要求的所有功能。

2. 代码质量:代码是否规范、清晰、易读。

c语言大作业课程设计

c语言大作业课程设计

c语言大作业 课程设计一、课程目标知识目标:1. 理解C语言中数组、函数、指针等基本概念,掌握其应用方法;2. 学会使用C语言编程解决实际问题,如数值计算、数据处理等;3. 了解C语言程序设计中常用的算法与数据结构,如排序、查找等;4. 掌握C语言编程规范,提高代码质量。

技能目标:1. 能够独立设计并编写具有实际意义的C语言程序,具备一定的编程能力;2. 学会运用调试工具,如GDB,对程序进行调试,找出并解决程序中的错误;3. 能够阅读和理解C语言源代码,具备一定的代码阅读能力;4. 具备团队协作能力,与他人共同完成复杂的编程任务。

情感态度价值观目标:1. 培养学生对C语言编程的兴趣,激发学习热情,树立编程自信心;2. 培养学生严谨、认真的学习态度,养成良好的编程习惯;3. 培养学生面对编程难题时的耐心与毅力,具备解决问题的决心;4. 培养学生的创新意识,鼓励尝试新方法,勇于挑战自我。

本课程针对高年级学生,课程性质为实践性较强的编程课程。

在教学过程中,要求学生具备一定的C语言基础,能够通过本课程的学习,将所学的理论知识运用到实际编程中,提高解决实际问题的能力。

课程目标的设定旨在使学生能够通过本课程的学习,掌握C语言的核心知识,培养编程技能,同时注重情感态度价值观的培养,全面提高学生的综合素质。

后续教学设计和评估将围绕这些具体学习成果展开。

二、教学内容本章节教学内容主要包括以下几部分:1. C语言基础回顾:数组、函数、指针等基本概念及其应用;- 数组:一维数组、二维数组、字符数组;- 函数:函数定义、调用、传值与传址;- 指针:指针的概念、指针与数组、指针与函数。

2. 算法与数据结构:排序、查找等常用算法;- 排序:冒泡排序、选择排序、插入排序;- 查找:顺序查找、二分查找。

3. 编程规范与调试技巧:C语言编程规范、GDB调试工具的使用;- 编程规范:命名规则、代码格式、注释;- 调试技巧:设置断点、单步执行、查看变量值。

c语言课程设计大作业

c语言课程设计大作业

c语言课程设计大作业一、课程目标知识目标:1. 理解C语言中数组、函数、指针等基本概念,掌握其应用方法。

2. 学会运用结构体、文件操作等C语言高级特性进行程序设计。

3. 掌握程序调试与优化的基本方法,提高代码质量。

技能目标:1. 能够根据需求,设计并实现具有实用价值的C语言程序。

2. 培养良好的编程习惯,编写规范、可读性强的代码。

3. 提高问题分析能力,能够针对实际问题设计合适的算法和数据结构。

情感态度价值观目标:1. 培养学生对编程的兴趣和热情,激发自主学习动力。

2. 培养学生面对困难和挑战时,保持积极心态,勇于尝试,善于合作,克服困难。

3. 增强学生的创新意识,鼓励学生敢于发表自己的观点,尊重他人的意见。

课程性质:本课程为C语言课程设计大作业,旨在巩固和拓展学生所学知识,提高实际编程能力。

学生特点:学生已具备一定的C语言基础,对编程有一定兴趣,但在实际应用中可能存在编程思路不清晰、代码规范意识不足等问题。

教学要求:结合学生特点,注重实践,引导学生从实际问题出发,培养解决复杂问题的能力。

教学过程中,注重激发学生兴趣,培养良好的编程习惯,提高团队协作能力。

通过本课程的学习,使学生在知识、技能和情感态度价值观等方面取得具体的学习成果。

二、教学内容1. 复习C语言基础知识:数组、函数、指针、控制结构等。

教材章节:第二章、第三章、第四章内容:数组的应用、函数的定义与调用、指针的概念与用法、程序流程控制。

2. C语言高级特性学习:结构体、文件操作、动态内存分配等。

教材章节:第六章、第七章、第十章内容:结构体的定义与使用、文件读写操作、动态内存分配与释放。

3. 程序设计与实现:根据实际需求,设计并实现具有实用价值的C语言程序。

教材章节:全书内容:综合运用所学知识,进行程序设计、编写代码、调试与优化。

4. 编程规范与调试技巧:培养良好的编程习惯,提高代码质量。

教材章节:附录内容:代码规范、调试方法、性能优化。

c语言程序设计大作业

c语言程序设计大作业

C语言程序设计大作业一、引言C语言是一种高级编程语言,广泛应用于计算机科学和软件开发领域。

在C语言程序设计大作业中,学生需要设计和实现一个完整的C语言程序,以展示对C语言的理解和掌握程度。

本文将深入探讨C语言程序设计大作业的要求和技巧,帮助读者更好地完成这一任务。

二、任务要求C语言程序设计大作业有以下要求:1.设计和实现一个功能完整的C语言程序。

2.程序应具备良好的用户交互性。

3.程序应包括错误处理和异常处理机制。

4.程序代码应遵循良好的编程规范和代码风格。

三、程序设计思路完成C语言程序设计大作业需要进行以下步骤:1. 确定程序主题首先,需要确定程序的主题和功能。

可以根据个人兴趣和实际需求选择一个合适的主题,如学生管理系统、图书管理系统等。

2. 分析需求在确定程序主题后,需要详细分析程序的需求,包括功能需求和性能需求。

功能需求指程序需要实现的功能,性能需求指程序需要满足的性能指标,如响应时间、并发处理等。

3. 设计程序架构在分析需求后,需要设计程序的架构。

程序架构应包括模块组织结构、数据结构和算法等。

可以使用面向对象的方法进行设计,将程序拆分为多个模块,并建立模块之间的关联关系。

4. 实现程序根据程序设计思路,开始编写程序代码。

编写过程中应注意代码的可读性和可维护性,遵循良好的编程规范和代码风格。

5. 测试和调试完成程序编写后,需要进行测试和调试工作。

通过测试,确保程序能够正常运行,并满足需求。

四、关键技巧完成C语言程序设计大作业需要掌握以下关键技巧:1. 理解C语言基础知识在C语言程序设计中,需要掌握C语言的基础知识,包括数据类型、流程控制、函数等。

只有理解这些基础知识,才能进行程序设计和实现。

2. 熟悉常用库函数C语言提供了丰富的库函数,如输入输出函数、字符串处理函数等。

熟悉常用库函数的使用方法,可以提高程序的开发效率。

3. 错误处理和异常处理在程序设计过程中,要考虑错误处理和异常处理机制。

《C语言实训》大作业2

《C语言实训》大作业2

大连海事大学本科课程实验、实践教学大纲
1.基于链表的“学生信息管理系统”
实验内容:编写并调试程序,实现学校各专业班级学生信息的管理。

定义学生信息的链表结点类型,包括:学号、姓名、班级、专业、3门成绩。

实验要求:
(1)main函数:以菜单形式将各项功能提供给用户,根据用户的选择,调用相应的函数。

(2)定义函数CreateList:按学号由小到大,建立有序的链表。

逆序输入n 个学生信息(调用n
次input),学号大的先输入,建立带头结点的单链表。

(3)定义函数Output:以指向某个学生结点的指针为参数,将学生信息格式化输出。

(4)定义函数Save:将某个学生信息存入文件。

(5)定义函数Fetch:从文件中随机读取某个学生的信息。

(6)定义函数Search_num:查找指定学号的学生,返回指向该学生结点的指针。

(7)定义函数InsertList:在函数中输入一个学生的信息,将该学生信息插入到链表中的相应位
置,并保持此链表按学号的有序性。

(8)定义函数Delete_num:从链表中删除指定学号的学生。

(9)定义函数Search_major _subject_score:查找某个专业的、某门课程的成绩小于某个分数的
学生,返回指向该学生结点的指针。

(10)定义函数Delete_ major _subject:从链表中删除某个专业的、某门课程的成绩小于某个分数
的学生。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

石家庄学院课程设计报告课程名称: C 语言程序设计设计题目:自制万年历院系:计算机系专业:计算机科学与技术班级:2011级设计者:马淑娟马晓春张聪聪学号:20111303015 2011130301620111303017指导教师:滑斌杰2012 年 6 月17 日一、题目分析:自制万年历主要功能有四个:显示当前时间;显示某年日历;显示某年某月某日为星期几;显示某年某月某日的农历。

可以通过查找年、月、日来确认此时的具体信息。

二、项目详解:(1)本项目使用的头文件有stdio.h,stdlib.h,string.h,time.h(使用见下面详解)。

(2)主函数main()用于显示清单主菜单1 显示当前时间2 显示某年日历3 显示某年某月某日是星期几4 显示农历5 退出用户可根据自己想查询的内容来选择功能号。

总体来说,主函数的结构为循环着的分支结构。

(3)本项目的四大功能模块:功能一:在该模块中实现的是显示当前时间,引用文件time中的时间转换函数asctime 得到以ASCII码表示的时间,char *asctime (const struct tm *tp);还用到了函数localtime把从1970-1-1零点零分到当前时间系统所偏移的秒数时间转换为日历时间。

此函数获得的tm结构体的时间,是已经进行过时区转化为本地时间。

struct tm *localtime(const time_t *clock);功能二:本模块主要实现了获得某年日历情况,主要用到了求取某年第一天是星期几的函数firstday,int firstday(int y);该年某月的天数函数daysofmonth,int daysofmonth(int m);判断概念是否为闰年的函数isleap, int isleap(int y) ;并显示该年的天干地支。

功能三:本模块用于实现输出某天是星期几,主要用到了蔡勒公式推导,逐月输出每月日期,使日期与星期几相对应,其中二月根据int isleap(int y)判断二月是28天还是29天。

公式计算星期数,计算星期数的公式如下: Week=(Day + 2*Month + 3*(Month+1)/5 + Year + Year/4 - Year/100 + Year/400) % 7 (其中的Year是4位数的,如2009。

“%”号是等式除7取余数,该式对应的与蔡勒公式有点区别:“0”为星期一,……,“6”为星期日!利用蔡勒公式推导,根据输入的日期计算得到星期几。

功能四:本模块主要实现了显示某年某月某日的农历,主要用到了函数nongli()。

首先输入要查询的年月日,根据年份求出本年春节的阳历日期,判断输入的月日在春节前还是在春节后,如果在春节前调用函数nianqian(),如果在春节后调用函数nianhou(),再根据所调用函数显示农历日期。

函数nianqian(),根据输入的日期得到输入年份前一年春节的时间差,根据现实情况得到,该日期的农历在十月,十一月,十二月,再根据时间差与这三个月的天数关系,判断在哪个月哪一天。

函数nianhou(),根据输入的日期得到与输入年春节的时间差,再求取闰月,若闰月为零,则将时间差与从一月开始逐月累加的天数和(从1月到12月)比较,当累加天数和大于时间差时,停止累加,经运算获得相应的农历日期。

若闰月不为零,在判断闰月在一月到四月之间还是在五月到十二月之间,若闰月在一月到四月之间,累加天数和根据一月到闰月逐月增加获得,当累加天数和大于时间差时,停止累加,经运算获得相应的农历日期;小于时间差,累加天数和由闰月到四月逐月增加获得,当累加天数和大于时间差时,停止累加,经运算获得相应的农历日期;小于时间差,累加天数和由四月到十二月逐月增加获得,当累加天数和大于时间差时,停止累加,经运算获得相应的农历日期。

若闰月在五月到十二月之间,计算方法同闰月在一月到四月之间,时间段为一月到四月,五月到闰月,闰月到十二月,经计算得到农历日期。

三、流程图:四、源代码:#include<stdio.h>#include<stdlib.h>#include<string.h>#include<time.h>int year,weekday; //定义全局变量/*所用函数的声明*/void printmonth(int m) ; //输出某个月的日期void printhead(int m); //输出某个月第一行int daysofmonth(int m); //输出月的天数int isleap(int y); //判断某年是否为闰年int firstday(int y); //某年的第一天是星期几void shijian(); //显示当前时间void rili(); //显示某年日历void xingqi(); //输入日期输出为星期几void nianhou(int years,int mon,int day ); //春节后的农历void nianqian(int years,int mon,int day); //春节前的农历void nongli(); //综合的农历/*主函数*/void main(){int k;printf(" 主菜单\n");printf("1 显示当前时间\n");printf("2 显示某年日历\n");printf("3 显示某年某月某日是星期几\n"); printf("4 显示农历\n");printf("5 退出\n");do{printf("请选择\n");scanf ("%d",&k);switch(k){case 1:{shijian(); break;}case 2:{rili();break;}case 3:{xingqi(); break;}case 4:{nongli();break;}case 5: {printf("谢谢使用\n");break;}}}while(k!=5);system("pause");}void printmonth(int m) //输出某个月的日期{int i,days;printhead(m);days=daysofmonth(m);for(i=1;i<=days;i++){printf("%5d",i);weekday=(weekday+1)%7;if(weekday==0)printf("\n ");}}void printhead(int m) //输出某个月第一行{int i;printf("-----------------------------------------\n");printf("\n%2d月日一二三四五六\n",m);printf(" ");for(i=0;i<weekday;i++)printf(" ");}int daysofmonth(int m) //输出月的天数{switch(m){case 1:case 3:case 5:case 7:case 8:case 10:case 12:return 31;case 4:case 6:case 9:case 11:return 30;case 2:if(isleap(year))return 29;else return 28;}}int isleap(int y) //判断某年是否为闰年{return((y%4==0&&y%100!=0)||y%400==0); }int firstday(int y) //某年的第一天是星期几{long n=y*365;int i;for(i=1;i<y;i++)n+=isleap(i);return n%7;}void shijian() //显示当前时间{struct tm *newtime;char am_pm[]="AM ";time_t long_time;time(&long_time); /* 取时间作为长整型*/newtime=localtime(&long_time); /* 转化为当前时间*/if(newtime->tm_hour > 12 )strcpy(am_pm, "PM " );if(newtime-> tm_hour > 12 ) /* 将13-24小时转化为1-12 */newtime-> tm_hour-=12;if(newtime-> tm_hour==0 ) /*把午夜设置为12点*/newtime-> tm_hour=12;printf("------------------------------\n");printf("%.19s %s\n ",asctime(newtime),am_pm);}void rili() //显示某年的日历及其天干地支{int year2,i;printf("输入年份(1900-):");scanf("%d",&year2);year=year2;weekday=firstday(year);printf("\n\n");printf(" %d年\n",year);switch(year%10){case 0:printf(" ~庚");break;case 1:printf(" ~辛");break;case 2:printf(" ~壬");break;case 3:printf(" ~癸");break;case 4:printf(" ~甲");break;case 5:printf(" ~乙");break;case 6:printf(" ~丙");break; /*输出对应的天干*/case 7:printf(" ~丁");break;case 8:printf(" ~戊");break;case 9:printf(" ~已");break;}switch(year%12){case 0:printf("申[猴]年~\n");break;case 1:printf("酉[鸡]年~\n");break;case 2:printf("戌[狗]年~\n");break;case 3:printf("亥[猪]年~\n");break;case 4:printf("子[鼠]年~\n");break;case 5:printf("丑[牛]年~\n");break;case 6:printf("寅[虎]年~\n");break; /*输出对应的地支和生肖*/case 7:printf("卯[兔]年~\n");break;case 8:printf("辰[龙]年~\n");break;case 9:printf("巳[蛇]年~\n");break;case 10:printf("午[马]年~\n");break;case 11:printf("未[羊]年~\n");break;}for(i=1;i<=12;i++){printmonth(i);printf("\n");}printf("\n\n");}void xingqi() //显示某年某月某日是星期几{int year3,mon,day,sum;printf("输入年份(1900-):");scanf("%d",&year3);year=year3;printf("输入月份(1-12):");scanf("%d",&mon);while(mon>12||mon<1){printf("输入错误,请重新输入\n");scanf("%d",&mon);}printf("输入日期(1-该月最大天数):");scanf("%d",&day);while(day>daysofmonth(mon)||day<1){printf("输入错误,请重新输入\n");scanf("%d",&day);}if (mon==1||mon==2) // 如果为一月或二月应按十三月和十四月计算{mon=mon+12;sum=(day + 2*mon + 3*(mon+1)/5 + year + year/4 - year/100 + year/400) % 7; //由蔡勒公式变化所得的公式if(sum==0) //当sum==0时为星期日sum=6;elsesum-=1;}elsesum=(day + 2*mon + 3*(mon+1)/5 + year + year/4 - year/100 + year/400) % 7 ;switch(sum){case 0:printf("星期一");break;case 1:printf("星期二");break;case 2:printf("星期三");break;case 3:printf("星期四");break;case 4:printf("星期五");break;case 5:printf("星期六");break;case 6:printf("星期日");break;}printf("\n");}void nianhou(int years,int mon,int day) //年后的农历{int cha1, yue,ri,i,m,n,daxiao,sum=0;int qiuyue=0,runyue,nongri=0,su=0,sun=0;int ye[219]={0x0B,0x54,0x52, //19770x0B,0x6A,0x47, //19780x69,0x6d,0x3C, //19790x09,0x5B,0x50, //19800x04,0x9B,0x45, //19810x4A,0x4B,0xB9, //19820x0A,0x4B,0x4d, //19830xAB,0x25,0xC2, //19840x06,0xA5,0x54, //19850x06,0xd4,0x49, //19860x6A,0xdA,0x3d, //19870x0A,0xB6,0x51, //19880x09,0x37,0x46, //19890x54,0x97,0xBB, //19900x04,0x97,0x4f, //19910x06,0x4B,0x44, //19920x36,0xA5,0x37, //19930x0e,0xA5,0x4A, //19940x86,0xB2,0xBf, //19950x05,0xAC,0x53, //19960x0A,0xB6,0x47, //19970x59,0x36,0xBC, //19980x09,0x2e,0x50, //1999 2940x0C,0x96,0x45, //2000 2970x0d,0x4A,0x4C, //2002 0x0d,0xA5,0x41, //2003 0x25,0xAA,0xB6, //2004 0x05,0x6A,0x49, //2005 0x7A,0xAd,0xBd, //2006 0x02,0x5d,0x52, //2007 0x09,0x2d,0x47, //2008 0x5C,0x95,0xBA, //2009 0x0A,0x95,0x4e, //2010 0x0B,0x4A,0x43, //2011 0x4B,0x55,0x37, //2012 0x0A,0xd5,0x4A, //2013 0x95,0x5A,0xBf, //2014 0x04,0xBA,0x53, //2015 0x0A,0x5B,0x48, //2016 0x65,0x2B,0xBC, //2017 0x05,0x2B,0x50, //2018 0x0A,0x93,0x45, //2019 0x47,0x4A,0xB9, //2020 0x06,0xAA,0x4C, //2021 0x0A,0xd5,0x41, //2022 0x24,0xda,0xB6, //2023 0x04,0xB6,0x4A, //2024 0x69,0x57,0x3d, //2025 0x0A,0x4e,0x51, //2026 0x0d,0x26,0x46, //2027 0x5e,0x93,0x3A, //2028 0x0d,0x53,0x4d, //2029 0x05,0xAA,0x43, //20300x09,0x6d,0x4B, //20320xB4,0xAe,0xBf, //20330x04,0xAd,0x53, //20340x0A,0x4d,0x48, //20350x6d,0x25,0xBC, //20360x0d,0x25,0x4f, //20370x0d,0x52,0x44, //20380x5d,0xAA,0x38, //20390x0B,0x5A,0x4C, //20400x05,0x6d,0x41, //20410x24,0xAd,0xB6, //20420x04,0x9B,0x4A, //20430x7A,0x4B,0xBe, //20440x0A,0x4B,0x51, //20450x0A,0xA5,0x46, //20460x5B,0x52,0xBA, //20470x06,0xd2,0x4e, //20480x0A,0xdA,0x42, //2049};year=years;cha1=years-1977;yue=ye[3*cha1+2]&0x60;yue=yue/32; //求该年chunjie的月份ri=ye[3*cha1+2]&0x1f; //该年第一个月的日期if(mon==yue)sum=day-ri;else{for(i=yue+1;i<=mon-1;i++)sum+=daysofmonth(i);sum+=day;sum+=daysofmonth(yue)-ri; } //输入的日期与该年第一天的差m=0x08;n=0x80;runyue=ye[3*cha1]&0xf0;runyue=runyue/16; //求出该年的闰月if(runyue==0){for(i=1;i<=4;i++){daxiao=ye[cha1*3]&m;if(daxiao!=0) //只要不为零就加三十{ su+=30;sun=30;}else {su+=29;sun=29;}if(su>sum) //累加日期大于日期差也就是找到农历的月份{ qiuyue=i;nongri=sum-(su-sun)+1;break;}if(su==sum){qiuyue=(i+1)%12;nongri=sum-su+1;break;}m=m/2;}if(qiuyue==0) //前四个月累加日期小于日期差未找到农历月份{for(i=5;i<=12;i++){daxiao=ye[cha1*3+1]&n;if(daxiao!=0){su+=30;sun=30;}else {su+=29;sun=29;}if(su>sum) //找到月份{qiuyue=i;nongri=sum-(su-sun)+1;break;}if(su==sum){qiuyue=(i+1)%12;nongri=sum-su+1;break;}n=n/2;}}} //runyue=0 ifelse{ //闰月不为零if((runyue>=1)&&(runyue<=4)){ for(i=1;i<=runyue;i++){daxiao=ye[cha1*3]&m;if(daxiao!=0){su+=30;sun=30;}else {su+=29;sun=29;}if(su>sum) //找到月份{qiuyue=i;nongri=sum-(su-sun)+1;break;}if(su==sum){qiuyue=(i+1)%12;nongri=sum-su+1;break;}m=m/2;}if(qiuyue==0) //累加日期小于日期差{for(i=runyue;i<=4;i++){daxiao=ye[cha1*3]&m;if(daxiao!=0){su+=30;sun=30;}else {su+=29;sun=29;}if(su>sum){qiuyue=i;nongri=sum-(su-sun)+1;break;}if(su==sum){qiuyue=(i+1)%12;nongri=sum-su+1;break;}m=m/2;}if(qiuyue==0) //累加日期小于日期差{for(i=5;i<=12;i++){daxiao=ye[cha1*3+1]&n;if(daxiao!=0){su+=30;sun=30;}else {su+=29;sun=29;}if(su>sum) //找到月份{qiuyue=i;nongri=sum-(su-sun)+1;break;}if(su==sum){qiuyue=(i+1)%12;nongri=sum-su+1;break;}n=n/2;}} //jinde qiuyue==0} //qiuyue==0 if} //if((runyue>=1)&&(runyue<=4))if((runyue>=5)&&(runyue<=12)) //闰月大于等于五月{for(i=1;i<=4;i++){daxiao=ye[cha1*3]&m;if(daxiao!=0){su+=30;sun=30;}else {su+=29;sun=29;}if(su>sum){qiuyue=i;nongri=sum-(su-sun)+1;break;}if(su==sum){qiuyue=(i+1)%12;nongri=sum-su+1;break;}m=m/2;}if(qiuyue==0) //累计日期小于日期差未找到{for(i=5;i<=runyue;i++){daxiao=ye[cha1*3+1]&n;if(daxiao!=0){su+=30;sun=30;}else {su+=29;sun=29;}if(su>sum) //找到月份{qiuyue=i;nongri=sum-(su-sun)+1;break;}if(su==sum){qiuyue=(i+1)%12;nongri=sum-su+1;break;}n=n/2;}if(qiuyue==0) //累计日期小于日期差未找到{ for(i=runyue;i<=12;i++){daxiao=ye[cha1*3+1]&n;if(daxiao!=0){su+=30;sun=30;}else {su+=29;sun=29;}if(su>sum) //找到月份{qiuyue=i;nongri=sum-(su-sun)+1;break;}if(su==sum){qiuyue=(i+1)%12;nongri=sum-su+1;break;}n=n/2;} //for} //if qiuyue==0 jinde} //if(qiuyue==0)} //if} //else//输出找到的月份switch(qiuyue){case 1:printf("正月");break;case 2:printf("二月份");break;case 3:printf("三月份");break;case 4:printf("四月份");break;case 5:printf("五月份");break;case 6:printf("六月份");break;case 7:printf("七月份");break;case 8:printf("八月份");break;case 9:printf("九月份");break;case 10:printf("十月份");break;case 11:printf("十一月份");break;default:printf("十二月份");}switch(nongri){case 1: printf("初一\n");break;case 2: printf("初二\n");break;case 3: printf("初三\n");break;case 4: printf("初四\n");break;case 5: printf("初五\n");break;case 6: printf("初六\n");break;case 7: printf("初七\n");break;case 8: printf("初八\n");break;case 9: printf("初九\n");break;case 10: printf("初十\n");break;case 11: printf("十一\n");break;case 12: printf("十二\n");break;case 13: printf("十三\n");break;case 14: printf("十四\n");break;case 15: printf("十五\n");break;case 16: printf("十六\n");break;case 17: printf("十七\n");break;case 18: printf("十八\n");break;case 19: printf("十九\n");break;case 20: printf("二十\n");break;case 21: printf("二十一\n");break;case 22: printf("二十二\n");break;case 23: printf("二十三\n");break;case 24: printf("二十四\n");break;case 25: printf("二十五\n");break;case 26: printf("二十六\n");break;case 27: printf("二十七\n");break;case 28: printf("二十八\n");break;case 29: printf("二十九\n");break;case 0: printf("三十\n");break;default: printf("错误");}}void nianqian(int years,int mon,int day){int yue,ri,cha2,shier,shiyi,shiyue,runyue,i,nongri,daxiao1,daxiao2,daxiao3,sum=0;int ye[219]={0x0B,0x54,0x52, //19770x0B,0x6A,0x47, //19780x69,0x6d,0x3C, //19790x09,0x5B,0x50, //19800x04,0x9B,0x45, //19810x4A,0x4B,0xB9, //19820x0A,0x4B,0x4d, //19830xAB,0x25,0xC2, //19840x06,0xA5,0x54, //19850x06,0xd4,0x49, //19860x6A,0xdA,0x3d, //19870x0A,0xB6,0x51, //19880x54,0x97,0xBB, //19900x04,0x97,0x4f, //19910x06,0x4B,0x44, //19920x36,0xA5,0x37, //19930x0e,0xA5,0x4A, //19940x86,0xB2,0xBf, //19950x05,0xAC,0x53, //19960x0A,0xB6,0x47, //19970x59,0x36,0xBC, //19980x09,0x2e,0x50, //1999 294 0x0C,0x96,0x45, //2000 297 0x4d,0x4A,0xB8, //20010x0d,0x4A,0x4C, //20020x0d,0xA5,0x41, //20030x25,0xAA,0xB6, //20040x05,0x6A,0x49, //20050x7A,0xAd,0xBd, //20060x02,0x5d,0x52, //20070x09,0x2d,0x47, //20080x5C,0x95,0xBA, //20090x0A,0x95,0x4e, //20100x0B,0x4A,0x43, //20110x4B,0x55,0x37, //20120x0A,0xd5,0x4A, //20130x95,0x5A,0xBf, //20140x04,0xBA,0x53, //20150x0A,0x5B,0x48, //20160x65,0x2B,0xBC, //20170x05,0x2B,0x50, //20180x47,0x4A,0xB9, //2020 0x06,0xAA,0x4C, //2021 0x0A,0xd5,0x41, //2022 0x24,0xda,0xB6, //2023 0x04,0xB6,0x4A, //2024 0x69,0x57,0x3d, //2025 0x0A,0x4e,0x51, //2026 0x0d,0x26,0x46, //2027 0x5e,0x93,0x3A, //2028 0x0d,0x53,0x4d, //2029 0x05,0xAA,0x43, //2030 0x36,0xB5,0x37, //2031 0x09,0x6d,0x4B, //2032 0xB4,0xAe,0xBf, //2033 0x04,0xAd,0x53, //2034 0x0A,0x4d,0x48, //2035 0x6d,0x25,0xBC, //2036 0x0d,0x25,0x4f, //2037 0x0d,0x52,0x44, //2038 0x5d,0xAA,0x38, //2039 0x0B,0x5A,0x4C, //2040 0x05,0x6d,0x41, //2041 0x24,0xAd,0xB6, //2042 0x04,0x9B,0x4A, //2043 0x7A,0x4B,0xBe, //2044 0x0A,0x4B,0x51, //2045 0x0A,0xA5,0x46, //2046 0x5B,0x52,0xBA, //2047 0x06,0xd2,0x4e, //2048};year=years;cha2=years-1977;yue=ye[3*cha2+2]&0x60;yue=yue/32; //求该年第一天月份ri=ye[3*cha2+2]&0x1f; //该年第一个天的日期if(mon==yue)sum=ri-day;else{for(i=mon+1;i<=yue-1;i++)sum+=daysofmonth(i);sum+=ri;sum+=daysofmonth(mon)-day;} //输入的日期与上一年第一天的差cha2-=1;daxiao1=ye[cha2*3+1]&0x01;runyue=ye[3*cha2]&0xf0;runyue=runyue/16;if(daxiao1!=0)shier=30;else shier=29;daxiao2=ye[cha2*3+1]&0x02;if(daxiao2!=0)shiyi=30;else shiyi=29;daxiao3=ye[cha2*3+1]&0x04;if(daxiao3!=0)shiyue=30;else shiyue=29;if(sum<=shier){printf("十二月");nongri=shier-sum+1;}else if(sum<=shier+shiyi){printf("十一月");nongri=shiyi-(sum-shier)+1;}elseif(runyue==11){printf("十一月");nongri=shiyi-(sum-shier-shiyi)+1;}else{ printf("十月");nongri=shiyue-(sum-shier-shiyi)+1;}switch(nongri){ case 1: printf("初一\n");break;case 2: printf("初二\n");break;case 3: printf("初三\n");break;case 4: printf("初四\n");break;case 5: printf("初五\n");break;case 6: printf("初六\n");break;case 7: printf("初七\n");break;case 8: printf("初八\n");break;case 9: printf("初九\n");break;case 10: printf("初十\n");break;case 11: printf("十一\n");break;case 12: printf("十二\n");break;case 13: printf("十三\n");break;case 14: printf("十四\n");break;case 15: printf("十五\n");break;case 16: printf("十六\n");break;case 17: printf("十七\n");break;case 18: printf("十八\n");break;case 19: printf("十九\n");break;case 20: printf("二十\n");break;case 21: printf("二十一\n");break;case 22: printf("二十二\n");break;case 23: printf("二十三\n");break;case 24: printf("二十四\n");break;case 25: printf("二十五\n");break;case 26: printf("二十六\n");break;case 27: printf("二十七\n");break;case 28: printf("二十八\n");break;case 29: printf("二十九\n");break;case 0: printf("三十\n");break;default: printf("错误");}}void nongli() //某年某月某日的农历{int years,mon,day,yue,ri,cha,t;int ye[219]={0x0B,0x54,0x52, //19770x0B,0x6A,0x47, //19780x69,0x6d,0x3C, //19790x09,0x5B,0x50, //19800x04,0x9B,0x45, //19810x4A,0x4B,0xB9, //19820x0A,0x4B,0x4d, //19830xAB,0x25,0xC2, //19840x06,0xA5,0x54, //19850x06,0xd4,0x49, //19860x6A,0xdA,0x3d, //19870x0A,0xB6,0x51, //19880x09,0x37,0x46, //19890x54,0x97,0xBB, //19900x04,0x97,0x4f, //19910x06,0x4B,0x44, //19920x36,0xA5,0x37, //19930x0e,0xA5,0x4A, //19940x86,0xB2,0xBf, //19950x05,0xAC,0x53, //19960x0A,0xB6,0x47, //19970x59,0x36,0xBC, //19980x09,0x2e,0x50, //1999 294 0x0C,0x96,0x45, //2000 297 0x4d,0x4A,0xB8, //20010x0d,0x4A,0x4C, //20020x0d,0xA5,0x41, //20030x25,0xAA,0xB6, //20040x05,0x6A,0x49, //20050x02,0x5d,0x52, //2007 0x09,0x2d,0x47, //2008 0x5C,0x95,0xBA, //2009 0x0A,0x95,0x4e, //2010 0x0B,0x4A,0x43, //2011 0x4B,0x55,0x37, //2012 0x0A,0xd5,0x4A, //2013 0x95,0x5A,0xBf, //2014 0x04,0xBA,0x53, //2015 0x0A,0x5B,0x48, //2016 0x65,0x2B,0xBC, //2017 0x05,0x2B,0x50, //2018 0x0A,0x93,0x45, //2019 0x47,0x4A,0xB9, //2020 0x06,0xAA,0x4C, //2021 0x0A,0xd5,0x41, //2022 0x24,0xda,0xB6, //2023 0x04,0xB6,0x4A, //2024 0x69,0x57,0x3d, //2025 0x0A,0x4e,0x51, //2026 0x0d,0x26,0x46, //2027 0x5e,0x93,0x3A, //2028 0x0d,0x53,0x4d, //2029 0x05,0xAA,0x43, //2030 0x36,0xB5,0x37, //2031 0x09,0x6d,0x4B, //2032 0xB4,0xAe,0xBf, //2033 0x04,0xAd,0x53, //2034 0x0A,0x4d,0x48, //20350x0d,0x25,0x4f, //20370x0d,0x52,0x44, //20380x5d,0xAA,0x38, //20390x0B,0x5A,0x4C, //20400x05,0x6d,0x41, //20410x24,0xAd,0xB6, //20420x04,0x9B,0x4A, //20430x7A,0x4B,0xBe, //20440x0A,0x4B,0x51, //20450x0A,0xA5,0x46, //20460x5B,0x52,0xBA, //20470x06,0xd2,0x4e, //20480x0A,0xdA,0x42, //2049};printf("输入年份(1977-2049):");scanf("%d",&years);year=years;printf("输入月份(1-12):");scanf("%d",&mon);while(mon>12||mon<1){printf("输入错误,请重新输入\n");scanf("%d",&mon);}printf("输入日期(1-该月最大天数):"); scanf("%d",&day);while(day>daysofmonth(mon)||day<1) {printf("输入错误,请重新输入\n");scanf("%d",&day);}cha=years-1977;t=3*cha+2;yue=ye[t]&0x60;yue=yue/32; //求春节阳历月份ri=ye[3*cha+2]&0x1f;if(mon<yue||((mon==yue)&&(day<ri)))nianqian( years, mon, day );elsenianhou( years, mon, day );}五、实践操作:六、调试分析:上机过程中出现的问题及其解决方案。

相关文档
最新文档