c++课程设计实验报告.

合集下载

C语言课程设计实验报告1

C语言课程设计实验报告1

课程设计报告题目:景点查询系统课程名称:C语言课程设计专业班级:信息安全二班任务书⑴主要内容建立国内景点信息系统,提供创建、编辑和综合查询等基本业务管理和服务。

⑵任务要求收集与阅读相关文献资料,确定系统目标与范围,分析系统需求,确定系统功能;设计系统方案,完成系统实现;提交《课程设计报告》。

⑶参考文献[1]曹计昌,卢萍,李开. C语言程序设计,北京:科学出版社,2008[2]张引. C程序设计基础课程设计, 杭州: 浙江大学出版社,2007[3]黄明,梁旭,万洪莉. C语言课程设计,北京: 电子工业出版社,2006目录1 绪言 (1)1.1 课题背景 (1)1.2 课题目的及意义 (1)1.3 课题应解决的主要问题及应达到的技术要求 (1)1.4 研究与发展概况及存在的问题 (2)1.5 设计的指导思想 (2)2 方案论证 (3)2.1 菜单的选择 (3)2.2 链表的选择 (3)2.3 主菜单和子菜单的设定 (3)3 课设过程论述 (5)3.1 系统数据 (5)3.2 系统各模块功能 (6)3.3 数据结构设计及用法说明 (8)3.4 程序结构 (9)4 结果分析 (10)5 课程设计总结 (13)6 参考文献 (14)附录程序清单 (15)1 绪言本章阐述课程设计课题的背景、目的与意义、应解决的主要问题及应达到的技术要求;简述研究与发展概况及存在的问题,本设计的指导思想。

1.1 课题背景随着社会的发展,旅游成为一个越来越热门的话题,很多人都会以旅游的方式度过自己的假期、生日、结婚纪念日等等,但是要想充分享受旅游带来的快乐,前期的准备就显得非常重要,只有前期的准备做好了,才能充分规划自己的旅游,才能充分享受自己的旅游。

前期的准备很大一方面是要查询自己要去的地方的一些基本信息,比如景区地点,景区门票。

城市中所含有的景区等等,如果有一个系统能够快速的查询景点信息,那么这就为人们出去旅游提供了很多的信息,帮助人们为旅游做好充分的准备!1.2 课题目的及意义课题目的:本课题主要是通过景点查询系统向人们提供景点,景区,城市等方面信息的查询,修改,统计等服务,让人们快速获得有关旅游景点、景区、城市方面的信息,帮助人们充分规划自己的出行方案。

c 课程设计实验报告

c  课程设计实验报告

c 课程设计实验报告课程设计实验报告引言:在大学学习过程中,课程设计实验是一项重要的任务。

通过课程设计实验,学生能够将所学的理论知识应用于实际问题的解决上,提高自己的实践能力和创新思维。

本文将介绍我参与的一次课程设计实验,并分享其中的经验和收获。

实验目的:本次课程设计实验的目的是设计一个能够实现学生选课、成绩管理和教师评价等功能的学生信息管理系统。

通过该实验,旨在加深学生对数据库设计和编程的理解,提高其实际操作能力。

实验过程:首先,我们小组成员进行了需求分析和系统设计。

我们与老师和同学们进行了深入的讨论,明确了系统所需要实现的功能和用户的需求。

然后,我们开始了数据库设计,确定了数据库表的结构和关系。

接着,我们使用MySQL数据库管理系统创建了数据库,并编写了相应的SQL语句来建立表和定义表之间的关系。

在数据库设计完成后,我们开始了系统的编程工作。

我们选择了Java作为主要的编程语言,并使用了Eclipse开发环境。

我们按照需求分析的结果,逐步实现了学生选课、成绩管理和教师评价等功能。

我们使用了面向对象的编程思想,将系统分为不同的模块,并为每个模块编写了相应的代码。

在编程过程中,我们遇到了许多问题,但通过查阅资料和与同学的讨论,我们都成功地解决了这些问题。

在系统编程完成后,我们进行了测试和调试工作。

我们编写了一系列的测试用例,对系统的各个功能进行了全面的测试。

通过测试,我们发现了一些潜在的问题,并及时进行了修复。

最终,我们成功地完成了一个功能完善、稳定可靠的学生信息管理系统。

实验结果:通过这次课程设计实验,我深刻地理解了数据库设计和编程的重要性。

在实验中,我学会了如何进行需求分析和系统设计,如何使用数据库管理系统进行数据库设计,以及如何使用编程语言实现系统的各个功能。

通过实验,我不仅提高了自己的实践能力,还培养了自己的创新思维和解决问题的能力。

同时,我还学到了团队合作的重要性。

在实验过程中,我们小组成员相互协作,共同解决问题,共同完成任务。

c程序课程设计实验报告

c程序课程设计实验报告

c程序课程设计实验报告一、教学目标本课程的教学目标是使学生掌握C程序设计的基本概念、语法和编程技巧,培养学生具备基本的程序设计能力和良好的编程习惯。

具体分解为以下三个方面的目标:1.知识目标:使学生了解C程序设计的基本概念,掌握C语言的基本语法和编程方法,包括变量、数据类型、运算符、控制结构、函数等。

2.技能目标:培养学生具备编写和调试C程序的能力,能运用C语言解决简单的实际问题,培养学生的创新能力和实践能力。

3.情感态度价值观目标:培养学生对计算机科学的兴趣和热情,培养学生良好的编程习惯和团队协作精神,提高学生的自主学习和问题解决能力。

二、教学内容本课程的教学内容主要包括C程序设计的基本概念、语法和编程方法。

具体安排如下:1.C程序设计基本概念:介绍计算机编程的基本概念,使学生了解C语言的特点和应用领域。

2.C语言语法:讲解C语言的基本语法,包括变量、数据类型、运算符、控制结构等。

3.C程序设计方法:教授编程方法,包括函数、数组、指针等,并通过实例使学生掌握编程技巧。

4.编程实践:安排一定的实验课时,使学生动手实践,培养学生的编程能力和问题解决能力。

三、教学方法本课程采用多种教学方法,以激发学生的学习兴趣和主动性,提高教学效果。

具体方法如下:1.讲授法:讲解C程序设计的基本概念、语法和编程方法,使学生掌握理论知识。

2.案例分析法:通过分析典型案例,使学生了解编程技巧和方法,提高学生的实践能力。

3.实验法:安排实验课,使学生动手实践,培养学生的编程能力和问题解决能力。

4.讨论法:学生进行小组讨论,分享学习心得和经验,提高学生的团队协作能力。

四、教学资源本课程的教学资源包括教材、参考书、多媒体资料和实验设备。

具体如下:1.教材:选用权威、实用的教材,为学生提供系统的学习资源。

2.参考书:推荐学生阅读适量的参考书,丰富学生的知识体系。

3.多媒体资料:制作课件、教学视频等多媒体资料,提高教学的趣味性和直观性。

c课程设计实验报告

c课程设计实验报告

c课程设计实验报告C课程设计实验报告引言C语言是一门广泛应用于计算机科学领域的编程语言,被广泛用于开发各种软件和系统。

本次课程设计实验旨在通过实践来巩固和应用C语言的基础知识,提高学生的编程能力和解决问题的能力。

实验目的本次实验的主要目的是让学生熟悉C语言的基本语法和编程规范,掌握C语言的常用数据类型、运算符和控制结构。

通过实践,学生将能够编写简单的C程序,实现基本的输入输出、逻辑判断和循环控制等功能。

实验内容本次实验的内容包括以下几个方面:1. C语言基础知识在实验开始前,学生需要通过自学或课堂学习掌握C语言的基础知识,包括数据类型、运算符、控制结构等。

这些知识将为后续的实验内容打下基础。

2. 实验环境的搭建学生需要在自己的计算机上安装C语言的编译器和开发环境,如Dev-C++或Code::Blocks等。

这些工具将帮助学生编写、调试和运行C程序。

3. 实验任务的设计根据学生的编程能力和实践目标,实验任务可以分为不同的难度级别。

例如,初级任务可以是编写一个简单的计算器程序,实现两个数的加减乘除运算;中级任务可以是编写一个学生成绩管理系统,实现成绩的录入、查询和统计功能;高级任务可以是编写一个简单的图形界面程序,实现用户的交互和数据展示。

4. 实验报告的撰写学生需要按照规定的格式和要求撰写实验报告。

报告应包括实验目的、实验内容、实验过程和实验结果等部分。

学生还可以在报告中附上自己的思考和总结,分享自己在实验中的收获和体会。

实验过程在实验过程中,学生需要按照实验任务的要求,编写C程序并进行调试和测试。

在编写过程中,学生可以参考教材、课堂讲义和网络资源,积极解决遇到的问题和困惑。

通过不断的尝试和实践,学生将逐渐掌握C语言的编程技巧和调试技巧。

实验结果实验结果是评价学生实验成果的重要指标。

学生需要将编写的C程序进行测试,并记录测试结果。

测试结果应包括输入数据、期望输出和实际输出等信息。

通过对比实际输出和期望输出,学生可以判断程序的正确性和性能。

c语言课程设计实验报告

c语言课程设计实验报告

c语言课程设计实验报告一、教学目标本课程的目标是让学生掌握C语言的基本语法、数据结构、算法和编程技巧,培养学生独立编程和解决问题的能力。

具体目标如下:1.知识目标:–掌握C语言的基本语法和关键字。

–理解数据类型、变量、常量的概念及使用。

–熟悉运算符、表达式、语句的结构。

–学习函数的定义、声明和调用。

–掌握数组、指针、字符串的基本操作。

–了解结构体、共用体、枚举类型等数据结构。

–学习基本算法和排序、查找等常用算法。

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

–熟练使用集成开发环境(IDE)进行程序调试和运行。

–掌握编程规范和代码注释,编写可读性强的代码。

–学会使用函数模块化编程,提高代码重用性。

3.情感态度价值观目标:–培养学生对计算机科学的兴趣,激发创新意识。

–培养学生的团队合作精神和自主学习能力。

–强化学生的编程实践能力,提高解决实际问题的能力。

二、教学内容根据课程目标,本课程的教学内容主要包括以下几个部分:1.C语言基本语法和关键字。

2.数据类型、变量、常量的使用和声明。

3.运算符、表达式、语句的结构和用法。

4.函数的定义、声明和调用。

5.数组、指针、字符串的基本操作和应用。

6.结构体、共用体、枚举类型等数据结构的概念和使用。

7.基本算法和排序、查找等常用算法。

8.第一周:C语言基本语法和关键字。

9.第二周:数据类型、变量、常量的使用和声明。

10.第三周:运算符、表达式、语句的结构和用法。

11.第四周:函数的定义、声明和调用。

12.第五周:数组、指针、字符串的基本操作和应用。

13.第六周:结构体、共用体、枚举类型等数据结构的概念和使用。

14.第七周:基本算法和排序、查找等常用算法。

三、教学方法为了提高教学效果,本课程将采用多种教学方法相结合的方式,包括:1.讲授法:教师通过讲解、示例等方式,向学生传授C语言的基本知识和编程技巧。

2.讨论法:教师引导学生进行问题讨论,培养学生的编程思维和解决问题的能力。

c语言程序设计_实验一实验报告

c语言程序设计_实验一实验报告

实验项目名称:实验一C 语言的运行环境的使用实验目的及要求:1. 了解 Windows 系统下 C 语言的运行环境,熟悉 C 程序编辑、调试、运行的基本操作方法。

2. 熟练掌握编辑、编译、连接和运行 C 程序的方法。

3. 通过运行简单的 C 程序,初步了解 C 源程序的特点。

4. 初步理解 C 语言的数据类型,了解变量定义、变量赋值以及简单运算方法,了解程序运行结果的基本输出方法。

实验内容(方法和步骤):1、编程实现在屏幕上显示如下三行文字Hello, world !Wolcome to the C language world!Everyone has been waiting for程序代码:#include <stdio.h>int main(){printf("Hello,World!\n");printf("Welcome to the C language world!\n");printf(Everyone has been waiting for.\n");return 0;}运行结果:2、编写程序,将两个整数相加,并输出结果。

程序代码:#include <stdio.h>int main(){int a,b,c;a=12;b=26;c=a+b;printf("c=%d\n",c);return 0";}运行结果:3. 编写程序,要求从键盘输入2 个整数,输出其中较大的数程序代码:#include <stdio.h>int main(){int max(int x,int y);int a,b,c;scanf("%d,%d",&a,&b);c=max(a,b);pintf("max=%d",c);return 0;}int max(int x,int y){ int z;if (x>y) z=x;else z=y;return(z);}运行结果:4.输入并运行下程序,观察运行结果。

C语言程序课程设计实验报告(用一个字符数组保存一个英文句子)

C语言程序课程设计实验报告(用一个字符数组保存一个英文句子)

河南城建学院《高级语言程序设计》课程设计报告设计题目:用一个字符数组保存一个英文句子专业:计算机科学与技术班级:设计人员:指导教师:计算机科学与工程学院2015年06 月25日一、课程设计题目13.用一个字符数组保存一个英文句子。

二、设计要求1)删除该英文句子中的前导空格,后导空格,并删除句子中多余的空格(单词之间只留一个空格);2)统计该句子中,单词出现的频率;3)查找并替换某个单词。

三、程序介绍1.去除字符组中间空格。

void zhongjian(char a[]){int i,j,k; /*定义整形变量i,j,k。

i,j 作为函数内循环的控制变量。

定义k用于字符组长度存放。

*/ k=strlen(a); /*将字符组a的长度存放于k 中。

(字符组a即待处理的字符组)*/for(i=0;i<k;) /*循环控制,从第一位循环到字符组结束。

*/if(a[i]!=' 'i++; /*条件控制,若当前字符不为空格,跳到下一位再进行循环。

*/else if(a[i]==' ')if(a[i+1]==' ') /*当连续出现两个空格,需要去除一个空格*/{k=k-1; /*字符串总长度减一。

*/ for(j=i;j<k;j++)a[j]=a[j+1]; /*从第一个空格开始,后续所有字符前提一位,即去除第一个空格。

*/a[k]='\0'; /*去除空格后字符组长度减一,原字符组最后一位需要变为\0。

*/continue; /*去除空格后,继续从该位检测,直至不符合该循环条件。

*/}elsei++; /*若不是连续两个空格,则跳到下个字符再进行循环。

*/printf("%s\n",a); /*输出处理后的字符组。

*/ }2.导入及导出函数void daoru(){FILE *p; /*定义一个指针函数,用于指向需要打开的文件。

(完整版)c实验报告

(完整版)c实验报告

(完整版)c实验报告实验名称: C语言实验报告实验内容:本次实验主要针对C语言编程进行实验。

通过实验的设计和完成,检验和加深对C语言的理解和应用能力。

实验步骤:1. 实验准备在开始实验之前,需要准备好以下必要的工具和材料:- 计算机- C语言编译器(比如GCC、Clang等)- 文本编辑器(比如Notepad++、Sublime Text等)2. 实验环境搭建在计算机上安装C语言编译器,并配置好相应的环境变量。

这样可以在终端或命令提示符中执行相关的C程序。

3. 编写实验代码根据实验要求,使用文本编辑器编写C语言代码。

根据实验的要求和功能需求,合理设计和组织代码结构,包括头文件的引用、变量的定义、函数的声明和定义等。

4. 编译和运行代码在命令行或终端中使用编译器对编写好的C语言代码进行编译,并生成可执行文件。

编译命令的具体格式根据不同的编译器而有所差异,但一般形式如下:```gcc -o output_file input_file.c```其中,"output_file"表示生成的可执行文件名,"input_file.c"表示待编译的C源代码文件名。

编译成功后,通过命令行或终端执行生成的可执行文件,检查程序的运行结果是否符合预期。

5. 实验结果分析根据实际运行结果,对实验数据进行分析和归纳。

可以通过输出结果、打印特定信息或观察程序的行为来判断程序是否正确地实现了预期的功能。

6. 实验总结在实验报告中对本次实验的过程、方法、结果进行总结,并提出实验中遇到的问题和解决方法。

同时,对所学习的C语言相关知识点进行总结和归纳,以加深对相关知识的理解和记忆。

实验结果:通过本次实验的设计和实现,我成功完成了对C语言编程的实验,达到了预期的目标。

通过编写实际的代码,我巩固了对C语言语法和基本概念的理解。

在实验过程中,我遇到了一些问题,通过查阅资料和与同学的讨论,我成功解决了这些问题。

C语言程序设计课程设计报告

C语言程序设计课程设计报告

C语言程序设计课程设计实验报告一、设计名称:学生成绩治理查询系统实验项目性质:综合性所涉及课程:C语言程序设计打算学时:实验学时12二、设计目的:1.通过本课程设计,培育上机动手能力,使学生巩固《C语言程序设计》课程学习的内容,把握工程软件设计的大体方式,强化上机动手能力,闯过编程关;2.为后续各门运算机课程的学习打下坚实基础。

3.明白得程序设计的思路,把握结构化程序设计的方式,综合利用C语言进行程序编写,巩固常常利用的C语言概念,如数组、指针、结构体、链表、文件操作等,注意良好的程序设计风格的培育。

提高编写程序解决实际问题的能力、调试程序的技术。

三、设计环境(软件、硬件及条件)1.硬件:PC机2.软件:Turbo C++四、设计说明:程序系统的结构:用一系列图表列出本程序系统内的每一个程序(包括每一个模块和子程序)的名称、标识符和它们之间的层次结构关系。

主程序:新建:输入记录(遇#号时停止输入)。

插入:在指定位置插入记录。

显示:列出所有记录。

查询:一、按学号查询;二、按名字排序。

删除:一、按学号删除;二、按名字删除;3、删除所有记录。

排序:一、按语文成绩排序;二、按英语成绩排序;3、按数学成绩排序。

保留:保留为任意名字,系统自动加后缀名为.txt。

读取:读取程序目录下的后缀名为.txt的文件。

退出:退出程序。

五、各功能模块的具体实现,用图表表示。

输入记录显示开始:输入学号输入的学号是否为#Y N 结束,返回主菜单输入记录循环输入结束开始p=hp!=NULL输出学生信息;p=p->next结束按学号(姓名)查询信息Y N读取文件六、各模块(函数)的功能介绍,数据结构设计描述,参数说明等。

STUDENT *init(); /*初始化链表*/STUDENT *create(); /*新建链表*/STUDENT *del_no(STUDENT *h);/*按学号删除信息*/STUDENT *del_name(STUDENT *h); /*按姓名删除信息*/void print(STUDENT *h); /*显示信息函数*/void search_no(STUDENT *h); /*按学号搜索*/void search_name(STUDENT *h); /*按姓名搜索*/STUDENT *insert(STUDENT *h); /*插入信息函数*/void sort(STUDENT *h);/* 排序函数*/void save(STUDENT *h);/*保留数据到文件*/void load(STUDENT *h); /*从文件读取数据*/int menu_main(); /*菜单函数*/void inputs(char *prompt,char *s,int count);/*输出信息*/七、程序代码:Enter records\n");printf(" 2. Add records\n");printf(" 3. List records\n");printf(" 4. Search records\n");printf(" 5. Delete records\n");printf(" 6. Sort records\n");printf(" 9. Quit\n\n");printf("*****************************************\n");do{ printf("\n Enter you choice(1~9):"); /*提示输入选项*/ scanf("%s",s); /*输入选择项*/c=atoi(s); /*将输入的字符串转化为整型数*/}while(c<1||c>9); /*选择项不在1~9之间重输*/return c; /*返回选择项,主程序依照该数挪用相应的函数*/}Search records on number\n");printf(" 2. Search records on name\n");printf(" 3. Back\n\n");printf("*****************************************\n");do{ printf("\n Enter you choice(1~3):"); /*提示输入选项*/ scanf("%s",s); /*输入选择项*/c=atoi(s); /*将输入的字符串转化为整型数*/}while(c<1||c>3);return c; /*返回选择项,主程序依照该数挪用相应的函数*/}Chinese\n");printf(" 2. English\n");printf(" 3. Math\n");printf(" 4. Back\n\n");printf("*****************************************\n");do{ printf("\n Enter you choice(1~4):"); /*提示输入选项*/ scanf("%s",s); /*输入选择项*/c=atoi(s); /*将输入的字符串转化为整型数*/}while(c<1||c>4);return c; /*返回选择项,主程序依照该数挪用相应的函数*/}Delete records on number\n");printf(" 2. Delete records on name\n");printf(" 3. Delete all records\n");printf(" 4. Back\n\n");printf("*****************************************\n");do{ printf("\n Enter you choice(1~4):"); /*提示输入选项*/ scanf("%s",s); /*输入选择项*/c=atoi(s); /*将输入的字符串转化为整型数*/}while(c<1||c>4);return c; /*返回选择项,主程序依照该数挪用相应的函数*/}.");/*提示*/getch(); /*读入任意字符*/}.\n");getch(); /*读入任意字符*/if(p==h)h=p->next;elseq->next=p->next;free(p); /*释放*/printf("\n%s had been deleted\n",s); }printf("\nPress any key to continue..."); getch(); /*读入任意字符*/return h;}.\n");getch();if(p==h)h=p->next;else q->next=p->next;free(p); /*释放*/printf("\n%s had been deleted\n",s);}printf("\nPress any key to continue...");getch(); /*读入任意字符*/return h;}.");getch(); /*读入任意字符*/}.");getch(); /*读入任意字符*/}xt"};STUDENT *p;FILE *fp; /*指向文件的指针*/printf("\n Input the filename:");scanf("%s",outfile);strcat(outfile,last);if((fp=fopen(outfile,"wb"))==NULL) /*打开文件,并判定打开是不是正常*/ {printf("\nCannot open file!\n");exit(1); /*退出*/}p=h;while(p!=NULL){if(fwrite(p,sizeof(STUDENT)-sizeof(p->next),1,fp)!=1){printf("Error!\n");exit(1);} /*写入*/p=p->next;}fclose(fp); /*关闭文件*/printf("\n------OK------\n");printf("Press any key to continue...");getch(); /*读入任意字符*/}xt"};STUDENT *p,*a1=NULL,*a2=NULL;FILE *fp;/*概念文件指针*/printf("\n Input the filename:");scanf("%s",outfile);strcat(outfile,last);if((fp=fopen(outfile,"rb"))==NULL)/*打开文件*/{printf("\nCannot open file!\n");exit(1); /*退出*/}p=h;a1=a2=(STUDENT *)malloc(LEN);fread(a1,sizeof(STUDENT)-sizeof(a1->next),1,fp); while(!feof(fp)){n++;if(n==1)h=a1;else a2->next=a1;a1=(STUDENT *)malloc(LEN);fread(a1,sizeof(STUDENT)-sizeof(a1->next),1,fp);}a2->next=NULL;printf("\n------OK------\n");printf("Press any key to continue...");getch(p); /*读入任意字符*/}///////////////////////////////////////////void sort(STUDENT *h) /*排序函数*/{int i=0,j;STUDENT *p,*q,*t,*h1,*z;clrscr(); /*清屏*/printf("Enter you choice :\n");scanf("%d",&j);z=h;h1=h->next;h->next=NULL;while(h1!=NULL){t=h1;h1=h1->next;q=h;while(t->score[--j]<p->score[--j]&&p!=NULL){q=p;p=p->next;}if(p==q){t->next=p;h=t;}else{t->next=p;q->next=t;}}p=h;while(p!=NULL){i++;p=p->next;}h=z;printf("------OK------\n");}//////////////////////////////////////////////////九、体会、总结本课程设计完成了设计一个学生成绩治理系统,学生的学习成绩进行治理,具有查询和检索功能,而且能够对指定文件操作。

c 课程设计实验报告

c 课程设计实验报告

c 课程设计实验报告C 课程设计实验报告一、引言计算机科学与技术领域的学习和实践是现代社会中不可或缺的一部分。

在计算机科学专业的学习过程中,课程设计实验是培养学生实际动手能力和解决问题能力的重要环节。

本文将对我在C 课程设计实验中的学习和实践进行报告和总结。

二、实验目的C 课程设计实验的主要目的是让学生掌握C语言的基本语法和程序设计方法,培养学生独立设计和实现小型程序的能力。

通过实验,学生能够理解并应用C语言的各种数据类型、运算符、控制语句和函数等基础知识,进一步提高编程能力和解决实际问题的能力。

三、实验内容及过程1. 实验一:C语言基本语法的学习和应用在实验一中,我通过学习C语言的基本语法,掌握了变量的声明与定义、数据类型的使用、输入输出函数的运用等基础知识。

通过编写简单的程序,如计算两个数的和、差、积和商等,我逐渐熟悉了C语言的语法和编程风格。

2. 实验二:C语言的控制语句和循环结构实验二主要涉及C语言的控制语句和循环结构的学习和应用。

通过编写程序,如判断一个数的正负性、计算一个数的阶乘、求两个数的最大公约数等,我深入理解了C语言中的条件语句和循环结构,并能够熟练运用它们解决实际问题。

3. 实验三:C语言的函数和数组实验三主要介绍C语言中函数和数组的使用。

我通过编写程序,如计算一个数列的和、找出一个数组中的最大值和最小值等,加深了对函数和数组的理解和应用。

同时,我也学会了如何使用函数和数组提高程序的模块化和代码的重用性。

四、实验结果与分析通过完成以上三个实验,我对C语言的基本语法和程序设计方法有了更深入的了解。

我能够独立设计和实现简单的C程序,并能够解决一些实际问题。

在实验中,我遇到了一些困难和挑战,如程序逻辑的设计、语法错误的排查等,但通过不断的实践和调试,我逐渐克服了这些问题。

实验结果的分析表明,我在C语言的学习和实践中取得了一定的进步。

我能够熟练运用C语言的各种语法和编程技巧,具备了一定的程序设计能力。

c课程设计的实验报告

c课程设计的实验报告

c课程设计的实验报告C课程设计的实验报告引言:在计算机科学领域,C语言是一门广泛应用的编程语言,被广泛用于软件开发、嵌入式系统和操作系统等领域。

为了更好地掌握C语言的应用,我们进行了一项C课程设计的实验。

本实验报告旨在总结实验过程中的设计思路、方法和结果,并对实验的意义进行探讨。

实验目的:本次实验的目的是通过设计一个简单的学生成绩管理系统,来加深对C语言的理解和掌握。

通过实践,我们可以更好地熟悉C语言的语法和编程技巧,提高问题解决和代码调试的能力。

实验过程:1. 需求分析在开始编写代码之前,我们首先进行了需求分析。

我们需要设计一个学生成绩管理系统,能够实现学生信息录入、成绩查询、成绩统计和成绩排序等功能。

根据这些需求,我们确定了系统的基本功能和界面设计。

2. 系统设计在系统设计阶段,我们使用了结构化程序设计的方法。

我们将整个系统划分为多个模块,每个模块负责不同的功能。

我们使用了结构体来定义学生的信息,使用数组来存储多个学生的信息。

通过函数的调用和参数传递,实现了不同模块之间的交互。

3. 编码实现在编码实现阶段,我们按照设计的思路,逐步编写代码。

我们使用了C语言提供的基本语法和库函数,如输入输出函数、数组操作函数等。

我们注重代码的可读性和可维护性,使用了有意义的变量名和注释,使代码更易于理解和修改。

4. 调试测试在编写完代码后,我们进行了调试和测试。

我们逐行检查代码的逻辑,查找潜在的错误和漏洞。

我们使用了测试用例来验证代码的正确性,包括正常输入和异常输入的情况。

通过不断调试和修改,我们最终得到了一个稳定可靠的学生成绩管理系统。

实验结果:通过本次实验,我们成功地设计并实现了一个学生成绩管理系统。

该系统能够实现学生信息的录入、成绩查询、成绩统计和成绩排序等功能。

我们通过测试用例的验证,确保系统的正确性和稳定性。

该系统具有良好的用户界面和友好的交互方式,能够满足用户的基本需求。

实验总结:本次实验为我们提供了一个宝贵的机会,通过实践来巩固和拓展我们在C语言方面的知识和技能。

C语言课程设计实验报告

C语言课程设计实验报告

C语言课程设计实验报告1前言........................................................................................................ 错误!未定义书签。

2需求分析.. (1)2.1要求 (1)2.2任务 (1)2.1运行环境 (1)2.1开发工具 (1)3系统分析3系统分析 (1)2.1要求 (1)2.1要求 (1)2.1要求 (1)4总体设计2.1要求 (1)2.1流程图 (1)2.1要求 (1)1 前言用C语言编写一个约为两千行的程序来实现图形化界面下的海空模拟作战系统。

建立简单的海军与空军交战场景,有较好的舰船、地空导弹、飞机、炸弹等图形模型,可人人对战或人机对战,具有计分、判胜负等具体功能。

首先,通过C语言中图形化操作的函数画出比较逼真的战舰群与飞机群,并将画图的程序写成模块,将画出战舰与飞机的程序模块分开分别存入不同个文件;其次,在各自的文件中用C语言中定位屏幕坐标与图形动画的函数实现发射导弹或投弹的功能,并通过参数的变化控制其发动攻击;再者,编程实现战舰与飞机接受攻击的次数并设定其被击沉或击落的状态,即将其从屏幕上清除掉,在此环节中设定接受攻击次数最多的战舰或飞机为指挥中心,并实现战舰或飞机的移动;在模式一下,随着指挥中心前进,指挥中心的移动随操作者用鼠标而动,这一功能通过C语言中移动屏幕的程序完成;模式二下,舰队或机队可分为两或三部分,这一功能可由调用画图的模块完成,主机所在的队仍由操作者通过鼠标指挥,其他两部分可在战斗前先设定行进路线,在行进过程中用按键控制其攻击,也可在战斗过程中按键暂停请入指挥模式,对其攻击路线尽心临时设置,但暂停次数有限;最后,编写程序对系统进行总体控制,包括进入战斗模式,选择模式(人人,人机),并调用各个模块通过各个模块之间的参数传递时整个系统可以有效的运行,战斗状态用一个循环来实现,并记录战斗双方的损失,最后根据哪一方的指挥中心先被击毁来判断输赢,任一方指挥中心被毁战斗就结束,即程序跳出循环,最后输出双方损失。

C语言课程设计实验报告

C语言课程设计实验报告

实验报告课程名称:C语言课程设计实验项目:五子棋游戏设计专业班级:计专1502姓名:孙奇学号:248150203 实验室号:实验组号:实验时间:批阅时间:指导教师:成绩:沈阳工业大学实验报告(适用计算机程序设计类)专业班级:计专1502 学号:248150203 姓名:孙奇实验名称:五子棋游戏设计4.程序运行结果(1)规则界面(2)对弈界面(3)获胜界面5.出现的问题及解决方法(1)游戏开始时,棋子原来初始在棋盘中央,一旦中央落子后,初始棋子与已有棋子重叠,为了解决问题将初始棋子移动到棋盘左上方棋盘以外。

(2)棋子都为空心圆,在棋盘不好区分正在控制的棋子,改为已确定落子的棋子为实心圆,正在控制的棋子为空心圆。

附件A 沈阳工业大学实验报告(适用计算机程序设计类)专业班级:计专1502 学号:248150203 姓名:孙奇实验程序:本程序在Windows XP SP3操作系统及Turbo C 2.0开发环境下调试通过。

#include<stdio.h>#include<stdlib.h>#include<graphics.h>#include<bios.h>#include<conio.h>int judgeresult(int x,int y);void attention(){char ch;window(1,1,80,25);textbackground(LIGHTBLUE);textcolor(YELLOW);clrscr();gotoxy(15,4);printf("Play Rules:");gotoxy(15,8);printf("1.Press Left,Right,Up,Down Key to move Piece");gotoxy(15,12);printf("2.Press Space to place the Piece");gotoxy(15,16);printf("3.DO NOT press Space outside of the chessboard");gotoxy(15,20);printf("Do you accept the above Playing Rules? [Y/N]:");while(1){printf("Left, Right, Up, Down KEY to move, Space to put, ESC-quit.");for(x1=1,y1=1,y2=18;x1<=18;x1++)line((x1+JZ)*BILI,(y1+JS)*BILI,(x1+JZ)*BILI,(y2+JS)*BILI);for(x1=1,y1=1,x2=18;y1<=18;y1++)line((x1+JZ)*BILI,(y1+JS)*BILI,(x2+JZ)*BILI,(y1+JS)*BILI);for(x1=1;x1<=18;x1++)for(y1=1;y1<=18;y1++)box[x1][y1]=0;}void draw_circle(int x,int y,int color){setcolor(color);setlinestyle(SOLID_LINE,0,1);x=(x+JZ)*BILI;y=(y+JS)*BILI;circle(x,y,8);}void draw_slice(int x,int y,int color){for(i=step_x-1,j=step_y;i>=1;i--)if(box[i][j]==0){draw_circle(step_x,step_y,LIGHTBLUE);break;}if (i<1) break;step_x=i;judgewho(step_x,step_y);break;}case RIGHT:if(step_x+1>18)break;else{for(i=step_x+1,j=step_y;i<=18;i++)if(box[i][j]==0){draw_circle(step_x,step_y,LIGHTBLUE);break;if((step_y-1)<0)break;else{for(i=step_x,j=step_y-1;j>=1;j--)if(box[i][j]==0){draw_circle(step_x,step_y,LIGHTBLUE);break;}if(j<1)break;step_y=j;judgewho(step_x,step_y);break;}case ESC :break;case SPACE :if(step_x>=1 && step_x<=18 && step_y>=1 && step_y<=18) {if(box[step_x][step_y]==0)setcolor(YELLOW);rectangle(0,0,439,279);floodfill(50,50,14);setcolor(12);settextstyle(1,0,5);outtextxy(20,20,"The Black Win !");setcolor(14);settextstyle(3,0,5);outtextxy(120,120,"The Black Win !");setcolor(14);settextstyle(2,0,8);getch();closegraph();exit(0);}if(flag==2){setbkcolor(BLUE);cleardevice();setviewport(100,100,540,380,1);}}void change(){if(flag==1)flag=2;elseflag=1;}void judgewho(int x,int y){if(flag==1)draw_circle(x,y,BLUE);if(flag==2)draw_circle(x,y,WHITE); }int judgeresult(int x,int y){break;}if(n1+n2-1>=5){return(1);break;}/*垂直向上数*/n1=0;n2=0;for(j=x,k=y;k>=1;k--){if(box[j][k]==flag)n1++;elsebreak;}/*垂直向下数break;}/*向右下方数*/for(j=x,k=y;j<=18,k<=18;j++,k++) {if(box[j][k]==flag)n2++;elsebreak;}if(n1+n2-1>=5){return(1);break;}/*向右上方数*/n1=0;return(0);break;}}void main(){int gdriver=VGA,gmode=VGAHI;clrscr();attention();initgraph(&gdriver,&gmode,"c:\\tc\\bgi"); flag=1;draw_box();do{step_x=0;step_y=0;judgewho(step_x-1,step_y-1);do{while(bioskey(1)==0);。

C语言课程设计实验报告(万年历)

C语言课程设计实验报告(万年历)

C语言课程设计一、题目及功能描述题目:万年历的设计利用C语言设计出万年历,使其实现如下要求1、输入一个年份,在屏幕上输出该年的年历(包括每月的天数和所对应的星期几),并且在每月的左上角或右上角打印出相应的年份和月份,要求输出界面尽可能整齐、美观,符合年历显示规范。

假定输入的年份在1-9999年之间。

2、输入年月,输出该月的月历。

3、输入年月日,输出距今天还有多少天,是星期几,是否是公历节日。

:4、指定键盘的某些键,用于控制变换不同年、月、日的显示。

即:当前若正在显示2011年的年历,按下键盘“←”方向键后,年历变为2010年的。

二、使用的所有变量的说明变量说明:(以下均为整型变量)year 表示年份的变量month 表示月份的变量day 表示日期的变量select 表示菜单选择的变量i 表示月份的变量j 表示一个月中的某一天的变量sum 判断某天是一年中的第几天的变量number判断某天离公元1年1月1日还有几天的变量a[] 表示每月天数的数组变量year1 系统时间年份的变量month1 系统时间月份的变量day1 系统时间日期的变量三、程序清单及其说明#include "time.h" /*包含的头文件*/#include "stdio.h"#include "math.h"#include "windows.h"#include "conio.h"#define KEYNUMUp 0x48 /*宏定义*/#define KEYNUMDown 0x50#define KEYNUMLeft 0x4b#define KEYNUMRight 0x4d#define KEYNUMPageUp 0x49int eachyeartotal(int year,int month,int day); /*函数声明*/int counterdays(int year,int month,int day);int nowtime(int year,int month,int day);int week(int year,int month,int day);int maxDay(int year,int month);int isleap(int year);void whatweek(int year,int month,int day);void display(int year ,int month);void display2(int year,int month);void display3(int year,int month,int day) ;void setDay1(int year,int month,int day);void setDay2(int year,int month,int day);void setDay3(int year,int month,int day);void jieri(int month,int day);void display1(int year);void getmenu();void main() /*主函数*/{int year,month,day,select;while(1){getmenu();printf(" 请输入相应数字:"); /*菜单选择*/scanf("%d",&select);system("cls");switch(select){case 1: /*当选择为1时显示年历*/printf(" 年历显示:输入年(如2011):");scanf("%d",&year);if(year>0&&year<10000) /*显示年份从0-10000 */{display1(year); /*调用函数*/printf(" 提示按↑:上一年按↓:下一年按其他键:返回菜单\n\n");setDay1( year,month, day);}elsesystem("cls");printf(" 输入无效,重新输入!\n");break;case 2: /*当选择为2显示月历*/printf(" 月历显示:输入年月(如2011,6):");if(year>0&&year<10000&&month>=1&&month<=12){display2(year,month);printf(" 提示按←:上个月按→:下个月按其他键:返回菜单\n\n");setDay2( year,month, day);}elsesystem("cls");printf(" 输入无效,重新输入!\n");break;case 3: /*当选择为3时显示日期*/printf(" 日期显示:输入年月日(比如2011,6,23):");scanf("%d,%d,%d",&year,&month,&day);if(year>0&&year<10000&&month>=1&&month<=12&&day>=1&&day<=maxDay(year,month) ){display3(year,month,day);printf(" 提示按PageUp:前一天按PageDown:后一天按其他键:返回菜单\n\n");setDay3( year,month, day);}elsesystem("cls");printf(" 输入无效,重新输入!\n");break;case 4:exit(0);default: /*当输入其他数字时,输入无效,重新输入*/system("cls");printf(" 输入无效,重新输入!\n");}}}int isleap(int year) /*判断是否为闰年*/{if(year%4==0&&year%100!=0||year%400==0)return 1;elsereturn 0;int maxDay(int year,int month) /*每月的天数*/{int a[]={31,28,31,30,31,30,31,31,30,31,30,31}; /*每个月中的天数*/ if(isleap( year))a[1]=29; /*闰年2月份有29天*/ return a[month-1];}int eachyeartotal(int year,int month,int day) /*判断某天是一年中的第几天*/ {int i,sum=0;for(i=1;i<month;i++)sum+=maxDay(year,i);sum+=day;return sum;}int week(int year,int month,int day) /*对天数进行判断确定是星期几*/ {int number=(year-1)+(year-1)/4-(year-1)/100+(year-1)/400+eachyeartotal(year,month,day);number=number%7 ;return number;}void display(int year ,int month) /*输出年月*/{int max,number,i,j=1;max=maxDay(year,month);number=week(year,month,1);printf(" %4s %4s %4s %4s %4s %4s %4s\n","Sun","Mon","Tue","Wed", "Thu","Fri","sat");for(i=0;i<number;i++)printf(" "); /*1号前的星期补空格*/ while(j<=max){printf("%6d",j);if (i%7==6)printf("\n"); /* 每7格换一行*/i++;j++;printf("\n\n");}void display1(int year) /*输出年历*/{int i;printf("\n");for(i=1;i<=12;i++){printf("%d 年%d 月\n\n ",year,i);display(year,i);}}void display2(int year,int month) /*输出月历*/{printf("\n%d 年%d 月\n ",year,month);display(year,month);}void display3(int year,int month,int day) /*输出日历*/{whatweek( year,month,day);jieri(month,day);counterdays(year,month, day);}int counterdays(int year,int month,int day) /*判断今天距特定日期的天数*/{int year1, days0,days1,month1,days, day1;time_t timep;struct tm *p;time(&timep);p=gmtime(&timep);year1=(1900+p->tm_year) ;month1=(1+p->tm_mon) ;day1=(p->tm_mday); /*获取系统时间year1、month1、day1分别为年、月、日*/days0=(year-1)*365+(year-1)/4-(year-1)/100+(year-1)/400+eachyeartotal(year,month,day);days1=(year1-1)*365+(year1-1)/4-(year1-1)/100+(year1-1)/400+eachyeartotal(year1,month1,daydays=days0-days1; /*计算出两个日期之间的时间差*/printf("\n 今天距%d年%d月%d日还有%d天\n\n",year,month,day,days);return days;}void whatweek(int year,int month,int day) /*判断是星期几*/{int number;number=(year-1)+(year-1)/4-(year-1)/100+(year-1)/400+eachyeartotal(year,month,day); number=number%7 ;switch( number){case 0:printf( "\n %d年%d月%d日是星期日",year,month,day);break;case 1:printf( "\n %d年%d月%d日是星期一",year,month,day);break;case 2:printf( "\n %d年%d月%d日是星期二",year,month,day);break;case 3:printf( "\n %d年%d月%d日是星期三",year,month,day);break;case 4:printf( "\n %d年%d月%d日是星期四",year,month,day);break;case 5:printf( "\n %d年%d月%d日是星期五",year,month,day);break;case 6:printf( "\n %d年%d月%d日是星期六",year,month,day);break;default:system("cls");printf(" 出现错误!\n" );}}void jieri(int month,int day) /*判断是否公历节日*/{if(month==1)switch(day){case 1:printf(",这天是元旦");}if(month==2)switch(day){case 14:}if(month==3)switch(day){case 8:printf(",这天是妇女节");break;case 12:printf(",这天是植树节");}if(month==4)switch(day){case 1:printf(",这天是愚人节");}if(month==5)switch(day){case 1:printf(",这天是劳动节");break;case 4:printf(",这天是青年节");}if(month==6)switch(day){case 1:printf(",这天是儿童节");}if(month==7)switch(day){case 1:printf(",这天是建党节");}if(month==8)switch(day){case 1:printf(",这天是建军节");}if(month==9)switch(day){printf(",这天是教师节");}if(month==10)switch(day){case 1:printf(",这天是国庆节");}}void setDay1(int year,int month,int day) /*通过键盘“↑”“↓”控制年历的变换*/ { char k;getch();k=getch();switch(k){case KEYNUMUp: /*“↑”年份减小*/ if(year<2){system("cls");printf(" 警告!超出范围!\n");break;}year--;display1(year);setDay1(year,month,day);break;case KEYNUMDown:/*“↓”年份变大*/ year++;display1(year);setDay1(year,month,day);break;default:system("cls");}}void setDay2(int year,int month,int day) /*通过键盘“←”“→”控制月历的变换*/char k;getch();k=getch();switch(k){case KEYNUMLeft: /*“←”月份变小*/if(month<2){month+=12;year--;}if(year<1){system("cls");printf(" 警告!超出范围!\n");break;}month--;display2(year , month);setDay2(year,month,day);break;case KEYNUMRight:/*“→”月份变小*/if(month>11){month-=12;year++;}if(year<9999);month++;display2(year , month);setDay2(year,month,day);break;default:system("cls");;}}void setDay3(int year,int month,int day) /*通过键盘“PageUp”“PageDown”控制日期的变换*/{char k;getch();switch(k){case KEYNUMPageUp: /*“PageUp”日期变小*/ if(day<2){month--;day=maxDay(year,month);}if(month<1){month+=12;year--;}if(year<1){system("cls");printf(" 警告!超出范围!\n");break;}day--;display3(year , month,day);setDay3(year,month,day);break;case KEYNUMPageDown: /*“PageDown”日期变大*/ day++;if(day>maxDay(year,month)){day=1;month++;}if(month>12){month-=12;year++;}if(year<10000);display3(year , month,day);setDay3(year,month,day);break;default:system("cls");;}}{printf(" ************主菜单************\n\n");printf(" * 欢迎进入万年历系统*\n\n");printf(" * 1、年历显示*\n\n");printf(" * 2、月历查询*\n\n");printf(" * 3、日期查询*\n\n");printf(" * 4、退出系统*\n\n");printf(" ******************************\n\n"); }四、运行结果清单打开软件,进入如下菜单界面,输入数字进行选择1年历的显示(1)输入数字1进入年历的显示(2)输入年份2011,显示2011年的年历如下(3)按↑键盘显示上一年(2010年)的年历,显示如下(4)按↓键盘显示上一年(2012年)的年历,显示如下2、月历的显示(1)在菜单中选择2,进入月历的显示,输入2011,6,显示2011年6月份的月历,显示效果如下(2)按←键盘显示上一个月(5月)的月历,显示效果如下(3)按→键盘显示上上个月(7月)的月历,显示效果如下3、日历的显示(1)输入选择3进入日历的显示,如图输入2011,10,1显示这天的星期,是否为公历节日,距离现在还有多少天(2)按PagDown显示前一天的日历,显示如下(3)按PagUp显示后一天的日历,显示如下4 退出程序输入选择4,显示如下界面,按任意键退出程序五、总结和体会。

c语言课程设计报告书3篇

c语言课程设计报告书3篇

c语言课程设计报告书3篇c语言课程设计报告书1我们学习它,有助于我们更好的了解计算机,与计算机进行交流,因此,c语言的学习对我们尤其重要。

在这个星期里,我们专业的学生在专业老师的带领下进行了c语言程序实践学习。

在这之前,我们已经对c语言这门课程学习了一个学期,对其有了一定的了解,但是也仅仅是停留在了解的范围,对里面的好多东西还是很陌生,的在运用起来的时候还是感到很棘手,毕竟,万事开头难嘛。

由于时间的关系,我们的这次实践课程老师并没有给我们详细的介绍,只是给我们简单的介绍了几个比较重要的实际操作。

包括了程序模块处理。

简单界面程序。

高级界面程序。

程序的添加修改。

用程序做一元线性回归处理以及用c语言程序来画粒度分布图等这几样比较重要的时间操作。

上机实验是学习程序设计语言必不可少的实践环节,特别是c语言灵活、简洁,更需要通过编程的实践来真正掌握它。

对于程序设计语言的学习目的,可以概括为学习语法规定、掌握程序设计方法、提高程序开发能力,这些都必须通过充分的实际上机操作才能完成。

学习c程序设计语言除了课堂讲授以外,必须保证有不少于课堂讲授学时的上机时间。

因为学时所限,课程不能安排过多的上机实验,所以希望学生有效地利用课程上机实验的机会,尽快掌握用c语言开发程序的能力,为今后的继续学习打下一个良好的基础。

为此,我们结合课堂讲授的内容和进度,安排了12次上机实验。

课程上机实验的目的,不仅仅是验证教材和讲课的内容、检查自己所编的程序是否正确,课程安排的上机实验的目的可以概括为如下几个方面:1、加深对课堂讲授内容的理解课堂上要讲授许多关于c语言的.语法规则,听起来十分枯燥无味,也不容易记住,死记硬背是不可取的。

然而要使用c语言这个工具解决实际问题,又必须掌握它。

通过多次上机练习,对于语法知识有了感性的认识,加深对它的理解,在理解的基础上就会自然而然地掌握c语言的语法规定。

对于一些内容自己认为在课堂上听懂了,但上机实践中会发现原来理解的偏差,这是由于大部分学生是初次接触程序设计,缺乏程序设计的实践所致。

c语言课程设计实验报告

c语言课程设计实验报告

c语言课程设计实验报告c语言课程设计实验报告c语言是一门通用计算机编程语言,应用广泛。

下面就随小编一起去阅读c语言课程设计实验报告,相信能带给大家帮助。

第一章基础掌握1.1 实验目的掌握C程序设计编程环境Visual C++,掌握运行一个C程序的基本步骤,包括编辑、编译、链接和运行。

(]1.2 实验要求在报告中记录建立、保存C程序实习过程。

1.3 实验基本内容编写程序,在屏幕上显示一个短句“Hello World”(1)程序:1)编译如下程序:#includeVoid main(){printf (“Hello World! ”);}2)链接。

执行Build-命令。

3)运行。

执行Build Execute 命令。

显示结果。

4)关闭程序工作区。

(2)运行结果:输出结果:Hello World!总结:掌握C语言程序设计的基本框架,能够编写简单的程序。

第二章数据类型2.1 实验目的(1)掌握C语言的运算符和表达式的正确使用以及C语言的几种基本数据类型和基本输入输出函数的使用方法。

()(2)通过编程进一步理解和掌握运算符的确切含义和功能。

2.2 实验要求(1)在报告中记录建立、保存C程序实习过程。

(2)完成典型题目,分析遇到的困难和实验中的收获。

2.3 实验基本内容输入程序,观察输出结果 1>./*test2.1c*/1)编译如下程序: #includevoid main() {char ch; int k;ch='a',k='b';printf("%d,%x,%c",ch,ch,ch,ch,k); printf("k=%%d ",k) }2)链接。

执行Build-命令。

3)运行。

执行Build Execute 命令。

显示结果。

4)关闭程序工作区。

2>./*test2.2c*/1)编译如下程序: #includevoid main() {float a1,a2; double b1,b2; a1=1234.12; a2=0.000001; b1=1234.12;b2=0.000001;printf("%f,%l f ",a1+a2,b1+b2);}2)链接。

C语言课程设计实验报告-学生成绩统计软件

C语言课程设计实验报告-学生成绩统计软件

C 语言课程设计实验报告一 问题描述:编辑一个学生成绩统计软件 二 基本要求:1) 每条记录由学号、姓名、若干门课程的成绩组成; 2) 能计算每个学生的总分和平均分并显示;3) 能按平均分统计各分数段的人数,并以分布图显示,如右图所示。

4) 在此基础上,可进行文件操作。

三 系统分析和设计函数的设计,其最终目的是要实现所需要的功能。

本例中,是用main 函数调用两个子函数来实现的! 1)文件的建立:要想实现对学生成绩的统计,首先要建立一个文件用来存放学生信息,要用到FILE 文件指针。

fp1=fopen("c:\\turboc2\\file1.rec","w+"); 2)程序的设计:学生的信息放在结构体数组struct student_score s[N]中。

通过for 循环,调用子函数getdata ,从键盘接收学生信息(num ,name ,score[0],score[1],score[2],score[3]),并计算总分与平均分,返回学生信息return st 到调用处。

用fprintf 函数向文件中逐一写入学生的信息,通过rewend(fp1)函数使文件指针回到文件头,用fscanf 读学生信息,并显示在屏幕上。

同时根据所读学生信息,统计各分数段的人数s1++,s2++,s3++,s4++,s5++,然后调用一个子函数putsgraph 用来输出图表!四 结构图主函数五 流程图:(背面)具体程序如下:#define N 5#include"stdio.h"#include"stdlib.h"struct student_score{long num;char name[20];float score[4];float total;float aver;}s[N];main(){FILE *fp1;struct student_score getdata(struct student_score st,int x);int putsgraph(int sa, int sb,int sc,int sd,int se);int i=0,s1=0,s2=0,s3=0,s4=0,s5=0;fp1=fopen("c:\\turboc2\\file1.rec","w+");for(i=0;i<N;i++)s[i]=getdata(s[i],i);for(i=0;i<N;i++)fprintf(fp1,"%-7ld%-10s%10.1f%10.1f%10.1f%10.1f%10.1f%10.1f\n",s[i].num,s[i].name,s[i].score[0],s[i].score[1],s[i].score[2],s[i].score[3],s[i].total,s[i].aver);rewind(fp1);{long num;char name[20];float e,f,g,h,total,aver;for(i=0;i<N;i++){fscanf(fp1,"%ld%s%f%f%f%f%f%f\n",&num,name,&e,&f,&g,&h,&total,&aver);printf("%-7ld%-20s%10.1f%10.1f\n",num,name,total,aver);if(aver<60) s1++;else if(aver<70) s2++;else if(aver<80) s3++;else if(aver<90) s4++;else if(aver<=100) s5++;}}fclose(fp1);putsgraph(s1,s2,s3,s4,s5);}struct student_score getdata(struct student_score st,int x){int y;printf("\nEnter student%d\'s num:\n",x+1);scanf("%ld",&st.num); getchar();printf("\nEnter name:\n");gets();st.total=0;printf("\nEnter 4 scores:\n");for(y=0;y<4;y++){scanf("%f",&st.score[y]);getchar();st.total+=st.score[y];}st.aver=st.total/4;return st;}int putsgraph(int sa, int sb,int sc,int sd,int se){int i,j;char graph[16][80];for(i=0;i<16;i++){for(j=0;j<79;j++) graph[i][j]=' ';graph[i][79]='\0';}for(j=0;j<79;j++) graph[11][j]='-';for(j=3;j<=15;j+=4){ graph[12][j]='<'; graph[12][j+2]='0'; }graph[12][4]='6';graph[12][8]='7';graph[12][12]='8';graph[12][16]='9';graph[12][19]='<'; graph[12][20]='=';graph[12][21]='1';graph[12][22]='0'; graph[12][23]='0';for(i=10;i>(10-sa);i--) graph[i][4]='o';for(i=10;i>(10-sb);i--) graph[i][8]='o';for(i=10;i>(10-sc);i--) graph[i][12]='o';for(i=10;i>(10-sd);i--) graph[i][16]='o';for(i=10;i>(10-se);i--) graph[i][20]='o';for(i=0;i<16;i++) puts(graph[i]);}六测试数据Entrer student1’ num:7879366Enter name:wuhaoEnter 4 scores:66778894Entrer student2’ num:7879343Enter name:JiapanEnter 4 scores:87547683Entrer student3’ num:7879343Enter name:huboEnter 4 scores:85907061Entrer student4’ num:7879422Enter name:jinleiEnter 4 scores:72846578Entrer student5’ num:7879222Enter name:yananEnter 4 scores:37728975结果:7879366 wuhao 325.0 81.2 7879343 jiapan 300.0 75.07879456 hubo 306.0 76.57879422 jinlei 299.0 74.87879222 yanan 273.0 68.2ooo o o-----------------------------------------<60 <70 <80 <90 <=100七软件说明:本程序采用宏定义方式定义学生人数,增加程序的通用性,文件的路径为c:\\turboc2\\file1.rec,当运行结束后,可在dos状态下,输入命令行:type file1.rec打开此文件以检验文件的建立是否正确,并且可以查看学生的全部信息。

c课程设计实验报告

c课程设计实验报告

c课程设计实验报告一、教学目标本课程的教学目标是让学生掌握C语言的基本语法、数据类型、运算符、控制结构、函数等基本知识,培养学生编写简单的C程序的能力。

具体分为以下三个部分:1.知识目标:(1)了解C语言的发展历史和特点;(2)掌握C语言的基本语法和编程规范;(3)理解数据类型、运算符、控制结构、函数等基本概念。

2.技能目标:(1)能够使用C语言编写简单的程序;(2)能够阅读和理解C语言程序代码;(3)能够对C语言程序进行调试和优化。

3.情感态度价值观目标:(1)培养学生对计算机编程的兴趣和热情;(2)培养学生独立思考、解决问题的能力;(3)培养学生团队协作、沟通交流的能力。

二、教学内容本课程的教学内容主要包括C语言的基本语法、数据类型、运算符、控制结构、函数等基本知识。

具体安排如下:1.C语言概述:介绍C语言的发展历史、特点及应用领域。

2.数据类型和运算符:介绍整型、浮点型、字符型等数据类型,以及算术运算符、关系运算符、逻辑运算符等。

3.控制结构:介绍顺序结构、选择结构、循环结构等。

4.函数:介绍函数的定义、声明、调用,以及函数的参数传递和返回值。

5.编程实践:通过编写简单的C程序,巩固所学知识,培养编程能力。

三、教学方法本课程采用讲授法、讨论法、案例分析法、实验法等多种教学方法,以激发学生的学习兴趣和主动性。

1.讲授法:教师讲解C语言的基本语法、数据类型、运算符、控制结构、函数等基本知识。

2.讨论法:教师引导学生就编程实践中的问题进行讨论,培养学生的独立思考和解决问题的能力。

3.案例分析法:教师通过分析典型程序案例,引导学生理解程序设计的方法和技巧。

4.实验法:学生动手编写C程序,进行调试和优化,培养实际编程能力。

四、教学资源本课程所需教学资源包括教材、参考书、多媒体资料、实验设备等。

1.教材:选用权威、实用的C语言教材作为主要教学资源。

2.参考书:提供丰富的参考书籍,方便学生课后自学。

3.多媒体资料:制作课件、教学视频等多媒体资料,辅助课堂教学。

最新《C语言程序设计》综合性实验实验报告

最新《C语言程序设计》综合性实验实验报告

最新《C语言程序设计》综合性实验实验报告实验目的:1. 巩固和加深对C语言程序设计基础知识的理解。

2. 掌握C语言的基本编程技巧和程序调试方法。

3. 提高解决实际问题的编程能力,培养综合运用C语言进行程序设计的能力。

实验内容:1. 实现一个基本的学生信息管理系统,包括学生信息的录入、查询、修改和删除功能。

2. 设计并编写一个简单的文本编辑器,支持文本的增删改查操作。

3. 开发一个计算器程序,能够进行基本的四则运算以及复杂运算如指数、开方等。

4. 利用C语言的文件操作功能,实现文件的读写操作,并对文件内容进行处理。

实验环境:- 操作系统:Windows 10- 编程工具:Code::Blocks IDE- 编译器:GCC 9.3.0实验步骤:1. 学生信息管理系统:- 设计学生信息的数据结构,包括学号、姓名、年龄、成绩等。

- 使用数组或链表存储学生信息。

- 实现用户界面,提供简单的文本菜单供用户选择操作。

- 对学生信息进行增删改查的函数实现。

- 测试程序,确保所有功能正常运行。

2. 简单文本编辑器:- 设计文本编辑器的基本功能,如打开文件、保存文件、文本输入输出等。

- 实现文本的插入、删除、查找和替换功能。

- 提供友好的用户界面,支持命令行操作。

- 对程序进行单元测试,确保文本编辑的准确性和稳定性。

3. 计算器程序:- 设计计算器的用户界面,支持用户输入运算表达式。

- 实现基本的四则运算功能。

- 扩展支持指数、开方等复杂运算。

- 对计算器进行测试,验证计算结果的准确性。

4. 文件处理程序:- 实现文件的打开、读取、写入和关闭功能。

- 设计文件内容处理功能,如统计文件中的单词数量、查找特定字符串等。

- 编写用户友好的命令行界面,方便用户操作。

- 对文件处理程序进行全面测试,确保文件操作的安全性和可靠性。

实验结果:通过本次综合性实验,成功实现了学生信息管理系统、文本编辑器、计算器和文件处理程序。

所有程序均通过了功能测试和性能测试,满足了实验的基本要求。

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

目录PART I1 需求分析.......................................................................................................................................................2 算法基本原理...............................................................................................................................................3 类设计............................................................................................................................................................4 详细设计........................................................................................................................................................4.1 类的接口设计.........................................................................................................................................4.2 类的实现................................................................................................................................................4.3 主函数设计............................................................................................................................................5 运行结果与分析...........................................................................................................................................5.1 程序运行结果.........................................................................................................................................5.2运行结果分析.........................................................................................................................................6 参考文献....................................................................................................................................................... PART II1 问题描述.......................................................................................................................................................2 功能描述.......................................................................................................................................................3 需求分析.......................................................................................................................................................4 概要设计.......................................................................................................................................................5 详细设计.......................................................................................................................................................6 设计和调试分析............................................................................................................................................7 用户手册.......................................................................................................................................................8 测试结果.......................................................................................................................................................9 参考文献.......................................................................................................................................................PART I大整数类的设计与实现1 需求分析(1)大整数运算在科学计算中有着很重要的位置,所谓的大整数运算,是指参与运算的数(加数,减数,因子等)范围大大超出了标准数据类型(整型,实型)能表示的范围的运算。

(2)“大整数”运算在数学验证方面有重要的应用价值。

数学中的大整数运算验证工作如果靠手工计算完成,从时间上看几乎是不可能,而借助于计算机,由于传统编程方法精确度远远达不到要求,所以也无法完成。

有了大整数运算程序,这些工作才能得以进行。

(3)大整数运算在密码学中具有实用价值。

随着计算机发展,密码运算对整数运算长度、速度等要求越来越高,因而对大整数运算的精准精度也越来越高,高效的大整数运算系统不仅可用于密码学的实践教学环节,也可用于实际的密码处理工作中。

(4)大整数运算在微观模拟(如生物信息、基因工程、数量遗传)中的应用前景广泛。

微观世界中的许多对象的活动可以进行数字化模拟,而且其活动变化也可以通过大整数的运算来表示,其表达与处理就非常方便了。

2 算法基本原理(1)大整数的概念“大整数”一般指位数达到十几或成百上千甚至更多的整数,而更准确地说,应该是指普通程序设计语言中的整数类型值集范围以上的整数。

如标准的C的Unsigned long 型整数所能处理的整数范围最大,有效数位也最多,为4294967295(错误!未找到引用源。

占据32 位(4 个字节)存贮空间,此时,大整数就是指十位以上的十进制整数了。

(2)“大整数”运算是指“大整数”之间的加减乘除等运算结果依然保持其数学理论上准确和精确的结果。

(3)我们采用数组存储的方式存储,并且存储的位数不能大于256位,否则会发生溢出错误而导致大整数处理错误。

对于负数,程序将不能处理,可以输入,计算结果输出为整数。

所以程序需要满足如下几点要求:(1)建立一维数组a[500] 用以存放大整数的位数,长整数用一维字符型数组来存储,数组的每一个元素顺序存储长整数的一位数字。

设有k位长整数m,用数组a[]存储:m=a[k]*10^(k-1)+a[k-1]*10^(k-2)+...+a[2]*10^1+a[1]*10^0并用a[0]存储长整数m的位数,即a[0]=k。

(2)构造函数的建立Longint();(3)运算符重载函数的建立建立重载运算符+ Longint operator + (Longint &longint2);建立重载运算符-Longint operator - (Longint &longint2);建立重载运算符*Longint operator * (Longint &longint2);3 类设计类模板就是设计一种类的框架,可以适用不同的数据类型,只是一种类的抽象,因此,利用类模板可以针对不同的数据类型定义出具有共性的一组类。

定义形式如下:template <类型名参数名1,类型名参数名2,…>class 类名{类声明体;};与函数模板类似,通过使用类模板可以使得所定义的类中的某些数据成员某些成员函数的参数某些成员函数的返回值都可以是任意的数据类型(包括基本类型和自定义类型)。

所以,可以通过类模板将程序所处理的对象的类型参数化,从而使得同一段程序可用于处理多种不同类型的对象,提高了程序的抽象层次和可重用性。

相关文档
最新文档