C语言程序大作业.doc

合集下载

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程序设计大作业(范例)

课程设计说明书《C 程序设计大作业》 ——学生成绩管理系统班 级: 电信2009级集成班 学 生: 陈颖宏 学 号: ************ 序 号: 提交日期: 2010 年 3 月 27 日成绩评定:分 任课教师签名: 年月 日前言本课程设计题目是“学生成绩管理系统设计”,其内容是设计一个使用二进制文件方式存储数据,并且以菜单方式工作的管理系统。

设计目的是设计一个能够方便、直观地管理学生相关信息的系统。

该系统可以实现以下功能:○1能按学期、按班级完成对学生成绩的录入、修改;○2能按班级统计显示的成绩,计算学生的总分及平均分;○3能查询学生的成绩,不及格科目及学生名单;○4能按班级输出学生的成绩单。

正文1.需求分析:本程序主要用于输入、查询、统计、导入以及导出学生的成绩。

主要的输入方式是利用键盘输入,且输入的字符最好是英文及数字,输入中文时有时会出现错误。

程序的有效窗口大小一般为半个屏幕,以至于有些功能的版面出现显示方面的错误。

经测试,程序基本可以正常工作:当在主菜单输入“1”时,可以正常初始化,输入余下的菜单选项时也能按要求跳转到指定画面;各子菜单选项也都能正常运行;但是输入班级、姓名等字符时,有时会显示错误的字符。

2概要设计○1抽象数据类型的定义:学生结构体定义为struct stu,变量为student;学期数组定义为char term[7]; 班别数组定义为char banbie[20]; 学号数组定义为char no[15]; 姓名数组定义为char name[20]; 科目数组定义为int score[MAXSUB]; 总成绩变量定义为int sum; 平均成绩变量定义为float average。

○2抽象函数类型的定义:菜单选择程序“menu_select()”为int型; 初始化函数“initialize(student * [])”为void型;数据输入函数“input(student * [])”为void型;数据编辑函数“editmenu(student * [])”为void型; 数据查询查询函数“searchmenu(student * [])”为void型; 数据统计函数“total(student * [])”为void型; 数据导出函数“save(student * [])”为void型;数据导入函数“load(student * [])”为void型; 数据导出函数“output(student * [])”为void型;添加学生记录函数“add_record(student * [])”为void型;删除学生记录“delete_record(student * [])”为void型;修改学生记录函数“student * edit_record(student * [])”为void型;按学号查询函数“student * no_search(student * [])”为void型; 按姓名查询函数“student * name_search(student * [])”为void型。

C语言课程设计大作业

C语言课程设计大作业

郑州大学课程报告课程名称: C语言程序设计专业班级:(15)班学生姓名:谢*学号:***任课教师:赵**学期: 2012-2013-2课程报告任务书成绩评定教师:一. 需求分析1,具有数据的插入、修改、删除、显示和查询功能的电话簿管理程序。

2,数据包括:人名、工作单位、电话号码和E-MAIL地址。

3,可对记录中的姓名和电话号码进行修改。

4,可增加和删除记录。

5,可显示所有的保存记录。

6,可按人名或电话号码进行查询。

分析建议采用结构体数组和文件系统实现。

结构体成员包括人名、工作单位、电话号码和E-MAIL地址。

根据题目的要求程序应该采用结构体数组和文件系统实现。

应该有文件的操作功能;在程序中应该包括输入、显示、删除、查询、添加、修改、保存、加载和退出的功能。

二、概要设计(1).程序的模块组成及各个函数的功能:程序的模块组成:主函数:main();输出数据函数:printf();读取数据函数:scanf();显示记录函数:Display();删除记录函数:shanchu();查找记录函数:chaxun();自定义清屏函数:system(“cls”);自定义输入函数:input();字符输入函数:getchar();修改数据函数:xiugai();保存数据函数:baocun();排序数据函数:paixu();各函数的主要功能:输出数据函数:随时输出数据;读取数据函数:读取输入的数据信息;显示菜单函数:显示可供选择的主菜单;显示记录函数:显示通讯录所有输入的信息;删除记录函数:显示要删除的通讯录所有输入的信息;查找记录函数:显示要查询的通讯录所有输入的信息;自定义清屏函数:清除前面运行留下的信息;自定义输入函数:输入通讯录的成员;;字符输入函数:从终端输入一个字符,遇回车键返回;修改数据函数:修改通讯录的成员信息;保存数据函数:保存通讯录的成员信息;排序数据函数:排序通讯录的成员信息;(2)程序中的抽象数据类型的定义:用户的状态结构用户{姓名:电话;年龄;邮箱:地址;(3)总体流程图根据上面的分析,可以将程序系统的设计分为如下几个模块:插入、显示、删除、查询、修改、保存和退出。

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语言程序100例(word文档版)

经典C语言程序100例(word文档版)

【程序1】题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?1.程序分析:可填在百位、十位、个位的数字都是1、2、3、4。

组成所有的排列后再去掉不满足条件的排列。

2.程序源代码:main(){int i,j,k;printf("\n");for(i=1;i<5;i++) /*以下为三重循环*/for(j=1;j<5;j++)for (k=1;k<5;k++){if (i!=k&&i!=j&&j!=k) /*确保i、j、k三位互不相同*/printf("%d,%d,%d\n",i,j,k);}}=========================================================== 【程序2】题目:企业发放的奖金根据利润提成。

利润(I)低于或等于10万元时,奖金可提10%;利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可可提成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,高于100万元时,超过100万元的部分按1%提成,从键盘输入当月利润I,求应发放奖金总数?1.程序分析:请利用数轴来分界,定位。

注意定义时需把奖金定义成长整型。

2.程序源代码:main(){long int i;int bonus1,bonus2,bonus4,bonus6,bonus10,bonus;scanf("%ld",&i);bonus1=*0.1;bonus2=bonus1+*0.75;bonus4=bonus2+*0.5;bonus6=bonus4+*0.3;bonus10=bonus6+*0.15;if(i<=)bonus=i*0.1;else if(i<=)bonus=bonus1+(i-)*0.075;else if(i<=)bonus=bonus2+(i-)*0.05;else if(i<=)bonus=bonus4+(i-)*0.03;else if(i<=)bonus=bonus6+(i-)*0.015;elsebonus=bonus10+(i-)*0.01;printf("bonus=%d",bonus);}=========================================================== 【程序3】题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?1.程序分析:在10万以内判断,先将该数加上100后再开方,再将该数加上268后再开方,如果开方后的结果满足如下条件,即是结果。

程序设计大作业(C)

程序设计大作业(C)

学院电子信息学院点,考虑到算法的时间复杂度,采用折半查找算法,最后将程序的运行结果写入对应的文件中。

目录1 摘要 (3)1.1设计题目 (3)1.2设计内容 (3)1.3开发工具 (3)1.4应用平台 (3)2 详细设计 (4)2.1程序结构 (4)2.2主要功能 (4)2.3函数实现 (4)2.4开发日志 (4)3 程序调试及运行 (5)3.1程序运行结果 (5)3.2程序使用说明 (6)3.3程序开发总结 (6)1 摘要1.1 设计题目算法型大作业:编写查找算法的演示程序1.2 设计内容编写程序实现某班期末考试成绩及有关学生信息的查找并将查询结果写入某文件中。

其中输入可来自某文件(比如***.xls)。

注意:编写的程序必须实现以下查找功能:1.输入某同学的学号或姓名(无重名),若存在,则输出该同学的成绩;否则输出“不存在”。

2.统计不及格人数并输出不及格学生的学号和姓名。

3.统计各分数段的人数并将结果输出。

4.插入某位新同学的成绩并查询该同学的序号数,序号数的排列规则是女生在前,男生在后;按姓名汉语拼音的英文顺序(a—z)排列。

5.计算平均分并查询高于平均分和低于平均分的人数,最后输出。

6.删除某同学的信息后,查询成绩排名前5的学生学号和姓名并输出。

7.修改某同学的成绩后,查询该同学的成绩排名并输出。

(以上查询结果不仅要在屏幕上输出,而且要写入文件中保存。

)1.3 开发工具Visual C++ 6.01.4 应用平台Windows 2000/XP/Vista 32位2 详细设计2.1 程序结构2.2 主要功能/*一;借书问题:本问题是一个排列问题,使用穷举的方法求出小明对三人不同的借书方案的总数二;绘制杨辉三角:从杨辉三角形的特点出发而绘制出杨辉三角。

*/2.3 函数实现/*一:借书方案:从5个中取3个进行排列的方法的总数。

首先对五本书从1至5进行编号,然后使用穷举的方法假设三个人分别借这五本书中的一本,当三个人所借的书的编号都不相同时,就是满足题意的一种借阅方法。

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大作业 Microsoft Word 文档

C大作业 Microsoft Word 文档

学生成绩管理系统每位学生至少包括学号,姓名,班级和四门课程的成绩和奖惩程序功能:1统计每个班每门课程平均成绩,最高分,最低分2对该专业所有学生进行排名,排名原则:按所有成绩之和进行排名同时要求参与排名的学生每门功课都及格若有不及格的不参与排名3评出专业优秀者与班级优秀者。

专业优秀者评选条件:专业总成绩排名前十,并且所有科目不低于85。

班级优秀者评选条件:所有课程不低于85或者有两门(包括两门)以上单科成绩是班级第一,并且在奖惩栏备注。

备注:编写程序时要有备注信息,即每个模块实现功能,以及引用变量的作用也可以在C++下完成,再此环境下注释采用中文所有结果均以文件形式保存。

#include<stdio.h>#include<math.h>#include<string.h>#include<stdlib.h>#define N 75 /*专业学生总数*/struct student{int cl;char xh[20];char name[20];float mark[4]; /*四门成绩:数学成绩:mark[0] ,英语成绩:mark[1],计算机成绩:mark[2],物理成绩:mark[3]*/}stu[N];struct rank{char name[20];float mark;}gread[100];FILE *fp;float high[3][4]={0};void menu(){printf("********************************\n");printf("**提示:请输入的总人数不超过100人**\n");printf("1.输入学生成绩\n");printf("2.统计每个班每门课程平均成绩,最高分,最低分\n");printf("3.学生成绩的专业排名(不含有不及格科目的学生)\n");printf("4.专业评选结果\n");printf("5.班级评选结果\n");printf("0.退出程序\n");printf(" 请选择0-5:");printf("********************************\n");}void input() /*学生信息输入函数*/{int i;for(i=0;i<N;i++){ printf("请输入学生信息\n");printf("请输入班级(1,2,3),学号,姓名,数学成绩,英语成绩,计算机成绩,物理成绩:\n");scanf("%d%s%s%f%f%f%f",&stu[i].cl,stu[i].xh,stu[i].name,&stu[i].mark[0],&stu[i].mark[1],&st u[i].mark[2],&stu[i].mark[3]);}}void statistics() /*统计每个班每门课程平均成绩,最高分,最低分*/{ float sum[3][4]={0},low[3][4]={100,100,100,100,100,100,100,100,100,100,100,100};float ave[3][4];int i,j;int num[3]={0};for(i=0;i<N;i++){switch(stu[i].cl){ case 1: sum[0][0]+=stu[i].mark[0]; /*一班数学成绩总和*/sum[0][1]+=stu[i].mark[1];/*一班英语成绩总和*/sum[0][2]+=stu[i].mark[2];/*一班计算机成绩总和*/sum[0][3]+=stu[i].mark[3];/*一班物理成绩总和*/if(high[0][0]<stu[i].mark[0]) high[0][0]=stu[i].mark[0];if(high[0][1]<stu[i].mark[1]) high[0][1]=stu[i].mark[1];if(high[0][2]<stu[i].mark[2]) high[0][2]=stu[i].mark[2];if(high[0][3]<stu[i].mark[3]) high[0][3]=stu[i].mark[3];if(low[0][0]>stu[i].mark[0]) low[0][0]=stu[i].mark[0];if(low[0][1]>stu[i].mark[1]) low[0][1]=stu[i].mark[1];if(low[0][2]>stu[i].mark[2]) low[0][2]=stu[i].mark[2];if(low[0][3]>stu[i].mark[3]) low[0][3]=stu[i].mark[3];num[0]++;break;case 2: sum[1][0]+=stu[i].mark[0]; /*二班数学成绩总和*/sum[1][1]+=stu[i].mark[1];/*二班英语成绩总和*/sum[1][2]+=stu[i].mark[2]; /*二班计算机成绩总和*/sum[1][3]+=stu[i].mark[3];/*二班物理成绩总和*/if(high[1][0]<stu[i].mark[0]) high[1][0]=stu[i].mark[0];if(high[1][1]<stu[i].mark[1]) high[1][1]=stu[i].mark[1];if(high[1][2]<stu[i].mark[2]) high[1][2]=stu[i].mark[2];if(high[1][3]<stu[i].mark[3]) high[1][3]=stu[i].mark[3];if(low[1][0]>stu[i].mark[0]) low[1][0]=stu[i].mark[0];if(low[1][1]>stu[i].mark[1]) low[1][1]=stu[i].mark[1];if(low[1][2]>stu[i].mark[2]) low[1][2]=stu[i].mark[2];if(low[1][3]>stu[i].mark[3]) low[1][3]=stu[i].mark[3];num[1]++;break;case 3: sum[2][0]+=stu[i].mark[0];sum[2][1]+=stu[i].mark[1];sum[2][2]+=stu[i].mark[2];sum[2][3]+=stu[i].mark[3];if(high[2][0]<stu[i].mark[0]) high[2][0]=stu[i].mark[0];if(high[2][1]<stu[i].mark[1]) high[2][1]=stu[i].mark[1];if(high[2][2]<stu[i].mark[2]) high[2][2]=stu[i].mark[2];if(high[2][3]<stu[i].mark[3]) high[2][3]=stu[i].mark[3];if(low[2][0]>stu[i].mark[0]) low[2][0]=stu[i].mark[0];if(low[2][1]>stu[i].mark[1]) low[2][1]=stu[i].mark[1];if(low[2][2]>stu[i].mark[2]) low[2][2]=stu[i].mark[2];if(low[2][3]>stu[i].mark[3]) low[2][3]=stu[i].mark[3];num[2]++;break;}}for(i=0;i<3;i++)for(j=0;j<4;j++)ave[i][j]=sum[i][j]/num[i];for(i=0;i<3;i++){ printf("班级:%d \n",i+1);fprintf(fp,"班级:%d \n",i+1);for(j=0;j<4;j++){ ave[i][j]=sum[i][j]/num[i];printf("平均成绩:math\tenglish\tcomputer\tphysics\n");printf("平均成绩:%.2f\t%.2f\t%.2f\t%.2f\n",ave[i][0],ave[i][1],ave[i][2],ave[i][3]);printf("最高分:math\tenglish\tcomputer\tphysics\n");printf("最高分:%.2f\t%.2f\t%.2f\t%.2f\n",high[i][0],high[i][1],high[i][2],high[i][3]);printf("最低分:math\tenglish\tcomputer\tphysics\n");printf("最低分:%.2f\t%.2f\t%.2f\t%.2f\n",low[i][0],low[i][1],low[i][2],low[i][3]);fprintf(fp,"平均成绩:math\tenglish\tcomputer\tphysics\n");fprintf(fp,"平均成绩:%.2f\t%.2f\t%.2f\t%.2f\n",ave[i][0],ave[i][1],ave[i][2],ave[i][3]);fprintf(fp,"最高分:math\tenglish\tcomputer\tphysics\n");fprintf(fp,"最高分:%.2f\t%.2f\t%.2f\t%.2f\n",high[i][0],high[i][1],high[i][2],high[i][3]);fprintf(fp,"最低分:math\tenglish\tcomputer\tphysics\n");fprintf(fp,"最低分:%.2f\t%.2f\t%.2f\t%.2f\n",low[i][0],low[i][1],low[i][2],low[i][3]);}}}void ranking() /*专业学生成绩排名从高到低去(除不及格的)排名*/{int i,j;int t=0;float n;char ch[20];for(i=0;i<N;i++)for(j=0;j<4;j++){ if(stu[i].mark[j]<60) break;else{gread[t++].mark=stu[i].mark[0]+stu[i].mark[1]+stu[i].mark[2]+stu[i].mark[3];strcpy(gread[t].name,stu[i].name);}}for(i=0;i<t-1;i++)for(j=0;j<t-1-i;j++)if(gread[j].mark>gread[j+1].mark){n=gread[i+1].mark;strcpy(ch,gread[i+1].name);gread[i+1].mark=gread[i].mark;strcpy(gread[i+1].name,gread[i].name);gread[i].mark=n;strcpy(gread[i].name,ch);}for(t-1;t>=0;t--){ printf("Performance ranking results(high to low):\n");fprintf(fp,"Performance ranking results(high to low):\n");printf("%s\t%.2f\t%d\n",gread[i].name,gread[i].mark,i+1);fprintf(fp,"%s\t%.2f\t%d\n",gread[i].name,gread[i].mark,i+1);}}void apraised1() /*专业优秀选奖*/{struct reward1{char name[20];float mark[4];int flag;}stu1[10];int i,j,k;for(i=0;i<10;i++)stu1[i].flag=1;for(i=0;i<10;i++){ strcpy(stu1[i].name,gread[i].name);for(j=0;j<N;j++)if(strcmp(stu1[i].name,stu[j].name)==0)for(k=0;k<4;k++)stu1[i].mark[k]=stu[j].mark[k];}for(i=0;i<10;i++)for(j=0;j<4;j++)if(stu1[i].mark[j]<85) stu1[i].flag=0;for(i=0;i<10;i++)if(stu1[i].flag==1){printf("奖励%s\n",stu1[i].name);fprintf(fp,"奖励%s\n",stu1[i].name);}}void apraised2() /*班级优秀评选*/{ int i,m1=0,n1=0,m2=0,n2=0,m3=0,n3=0,l1=0,l2=0,l3=0,k;charreward1[10][20],reward2[10][20],reward3[10][20],reward4[10][20],reward5[10][20],reward6[10] [20];for(i=0;i<N;i++)switch(stu[i].cl){case1:if(stu[i].mark[0]>=85&&stu[i].mark[1]>=85&&stu[i].mark[2]>=85&&stu[i].mark[3]>=85) strcpy(reward1[m1++],stu[i].name);elsefor(k=0;k<4;k++){if(stu[i].mark[k]==high[0][k]) l1++;if(l1>=2) strcpy(reward2[n1++],stu[i].name);}case2:if(stu[i].mark[0]>=85&&stu[i].mark[1]>=85&&stu[i].mark[2]>=85&&stu[i].mark[3]>=85) strcpy(reward3[m2++],stu[i].name);elsefor(k=0;k<4;k++){if(stu[i].mark[k]==high[1][k]) l2++;if(l2>=2) strcpy(reward4[n2++],stu[i].name);}case3:if(stu[i].mark[0]>=85&&stu[i].mark[1]>=85&&stu[i].mark[2]>=85&&stu[i].mark[3]>=85) strcpy(reward5[m3++],stu[i].name);elsefor(k=0;k<4;k++){if(stu[i].mark[k]==high[2][k]) l3++;if(l3>=2) strcpy(reward6[n3++],stu[i].name);}}printf("一班\t");printf("每门成绩不低于85分:");for(i=0;i<m1;i++)printf("%s\n",reward1[i]);printf("至少有两门单科第一:");for(i=0;i<n1;i++)printf("%s\n",reward2[i]);fprintf(fp,"一班\t");fprintf(fp,"每门成绩不低于85分:");for(i=0;i<m1;i++)fprintf(fp,"%s\n",reward1[i]);fprintf(fp,"至少有两门单科第一:");for(i=0;i<n1;i++)fprintf(fp,"%s\n",reward2[i]);printf("二班\t");printf("每门成绩不低于85分:");for(i=0;i<m2;i++)printf("%s\n",reward3[i]);printf("至少有两门单科第一:");for(i=0;i<n2;i++)printf("%s\n",reward4[i]);fprintf(fp,"二班\t");fprintf(fp,"每门成绩不低于85分:");for(i=0;i<m2;i++)fprintf(fp,"%s\n",reward3[i]);fprintf(fp,"至少有两门单科第一:");for(i=0;i<n2;i++)fprintf(fp,"%s\n",reward4[i]);printf("三班\t");printf("每门成绩不低于85分:");for(i=0;i<m3;i++)printf("%s\n",reward5[i]);printf("至少有两门单科第一:");for(i=0;i<n3;i++)printf("%s\n",reward6[i]);fprintf(fp,"三班\t");fprintf(fp,"每门成绩不低于85分:");for(i=0;i<m3;i++)fprintf(fp,"%s\n",reward5[i]);fprintf(fp,"至少有两门单科第一:");for(i=0;i<n3;i++)fprintf(fp,"%s\n",reward6[i]);}void main(){ int choice;fp=fopen("学生信息","w");while(1){ menu();scanf("%d",&choice);switch(choice){ case 1: input(); break;case 2: statistics(); break;case 3: ranking(); break;case 4: apraised1(); break;case 5: apraised2(); break;case 0: exit(0); break;}}fclose(fp);}。

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语言程序设计大作业设计报告一.设计方案本程序旨在用一个C语言程序实现简单的图书馆图书管理系统,程序包含平时的借书,还书,新书录入,查询功能,用简单明了的人机交互界面快速实现图书管理的目的。

二.模块说明及代码分析1.主函数:源代码:void main(){int a;printf("\n");printf("\n");printf(" ( ^_^ ) WELCOME!\n");printf("\n");printf("\n");printf("\n");printf("\n");printf("\n");printf("\t〉〉-------------BJTU图书管理系统--------------〈〈");printf("\n");printf("\n");printf("\n");printf("\n");printf("\n");printf("\n");printf("\n");do {printf("1.借书 2.还书 3.新书录入4.查询 0.退出");printf("\n");printf("\n");printf("\n");printf("\n");printf("请选择序号:");scanf("%d",&a);switch(a){case 1:jieshu();break;case 2:huanshu();break;case 3:xinshu();break;case 4:chaxun();break;case 0:break;default:printf("请选择正确的序号!\n");printf("\n");}}while(a!=0);printf("谢谢使用图书管理系统!\n");}主函数提供人机交互界面,让操作者选择所需的操作项目,并有退出选项。

《C语言程序的设计》大作业

《C语言程序的设计》大作业

南昌大学软件学院C语言程序设计工程实训大作业班级:09软件技术(2)班学号:8001509107姓名:吴承增指导老师:危建国2010年12月10日系统说明书1.问题描述:该程序包内容包括以下的模块,均用子函数完成:(1)主菜单(2)输入若干条记录并保存文件(指学生的信息)(3)学生信息录入、修改、删除、查询、存储。

(4)学生信息的浏览及排序(冒泡排序算法)。

(5)学生成绩的录入、修改。

(6)统计及格和优秀人数(7)退出系统2.程序设计和程序流程图:解决方案:主函数流程图:各部分功能的流程图:录入学生成绩流程图:统计功能流程图如图3所示:图3 统计模块流程图冒泡排序流程图:排序学生信息流程图:删除学生成绩信息流程图:3.系统的基本功能(主要数据和函数功能描述):char xh[15]; //以字符串数组形式存储学生学号char name[25]// 以字符串数组形式存储学生姓名char sex[5]; //性别float sxcj; //数学成绩float yycj; //英语成绩float Cyycj; //C语言成绩float ave; //平均成绩float sum; //总成绩#define N 4 //宏定义学生#define MAX 60 //学生最大个数int nCOUNT=0; //记录当前学生个数struct student //定义结构体学生int ScoreNew() //录入学生成绩int average() //求平均数int xsxscj() //显示输入学生信息、将学生打印到屏幕上int xsxsxx() //显示学生信息int xhcjpx() //按学生学号排序学生信息int sxcjpx()按数学成绩排序学生信息int yycjpx()按英语成绩排序学生信息int Cyypx() //按C语言成绩排序学生信息int zcjpx()按总成绩排序学生信息int pxxsxx()//排序学生信息int axhcx() //按学号查询int axmcx() //按姓名查询int SearchStud() //查询学生成绩信息int zjxsxx() //增加学生信息int xgxsxx() //修改学生信息int scxsxx() //删除学生信息int gxxscj() //更新学生信息int tjxscj() //统计学生成绩int save() //保存到文件((fp=fopen("stu_list.txt","wb"))==NULL) //以只读方式打开文件stu_list.txt (fwrite(&str[i],sizeof(struct student),1,fp)!=1) //创建文件并以二进制形式打开int xswj() //显示文件信息int main() //主函数mainmemu4.拟采用开发平台:Visual C++,Borland C++等。

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语言进行程序设计的能力和创新思维。

具体分解为以下三个方面的目标:1.知识目标:学生需要掌握C程序设计的基本语法、数据类型、运算符、控制结构、函数、数组、指针等基本概念,了解结构体、共用体、位字段、文件操作等高级内容。

2.技能目标:学生需要能够运用C语言编写解决实际问题的程序,具备调试和优化程序的能力,掌握基本的算法设计和分析方法。

3.情感态度价值观目标:培养学生对计算机科学的兴趣和热情,增强学生的自主学习能力和团队合作意识,培养学生勇于探索、创新的精神。

二、教学内容教学内容以教材《C程序设计语言》为基础,结合我国教育部门制定的教学大纲,系统地介绍C程序设计的基本概念、原理和方法。

教学大纲如下:1.C程序设计基本语法:数据类型、运算符、控制结构、函数等。

2.数据结构:数组、指针、结构体、共用体、位字段等。

3.高级编程:文件操作、动态内存分配、预处理指令等。

4.算法设计与分析:基本算法、排序算法、查找算法等。

5.编程实践:培养学生的实际编程能力,完成多个实际项目的开发。

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

1.讲授法:用于讲解基本概念、原理和方法,使学生掌握理论知识。

2.讨论法:学生进行课堂讨论,培养学生的思考能力和表达能力。

3.案例分析法:分析实际案例,使学生学会将理论知识应用于实际问题。

4.实验法:安排实验课,让学生动手实践,培养实际编程能力。

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

1.教材:《C程序设计语言》作为主要教材,辅以相关参考书供学生自主学习。

2.多媒体资料:制作课件、教学视频等,以直观展示课程内容。

3.实验设备:提供计算机实验室,让学生进行实际编程和调试。

4.在线资源:推荐在线编程平台,让学生随时随地练习编程。

C语言编程大作业

C语言编程大作业

利用main函数的参数选择是对整数进行操作还是对字符串进行操作:Handle int ---→一、整数操作Handle string ---→二、字符串操作一、整数操作(含有50个正整数(<=3位)的文件:int_input,输入1,2,3,4分别选择不同的操作)1.排序(结果存到文件int_output1)2.求中间两个数的最大公因数和最小公倍数3.统计素数的个数4.统计同构数的个数(同构数是指:它出现在它的平方数的右边),如5是其平方数25的尾数,76是其平方数5776的尾部二、字符串操作(含有50个字符串的文件:string_input,输入1,2,3,4分别选择不同的操作)1.排序(结果存到文件string_output1)2.实现每个字符串的逆置,前25个用递归,后25个用非递归(结果存到文件string_output2)3.统计单词”hello”出现的次数。

如某一行:ghhello32he,该行次数为14.在最小串中出现,而未在最大串中出现的字符形成一个新的串放在u中,u中字符按原字符串中字符顺序排列,不去掉重复字符。

例如: 当min = "", max = "2467"时, u中的字符串为"1135"。

源代码:#include<stdio.h>#include<string.h>#include<stdlib.h>#include<time.h>#define N 50int ReadFile_Num(int*);void WriteFile_Num(char* FileName,int*,int);void sort_Num(int*,int);int CommonDivisor(int,int);int CommonMultiple(int,int);int PrimeNumber(int*,int);int TongGouShu(int*,int);int ReadFile_Str(char*,char* str[]);void WriteFile_Str(char*,char* str[],int,char* mode);void sort_Str(char* str[],int);void reverse(char* str[],int);void reverse_recursion(char* str);int SearchHello(char* str[],int);void FindMaxMin(char* str[],int,char* r[]);void ProcessString(char* r[]);int main(int argc,char* argv[]){char choice;if(2==argc){if(strcmp(argv[1],"Handle int")==0){int Data_Num[N];int len;printf("**************************整数操作**************************\n\n");len=ReadFile_Num(Data_Num);printf("请选择要进行的操作:");printf("\n1、排序\n");printf("2、求中间两个数的最大公约数和最小公倍数\n");printf("3、统计素数\n");printf("4、统计同构数\n");fflush(NULL);scanf("%c",&choice);switch(choice){case '1':{sort_Num(Data_Num,len);WriteFile_Num("int_output1.txt",Data_Num,len);printf("排序完成!!\n排序结果已存至int_output1.txt文件中...\n");break;}case '2':{int m1,m2;m1=Data_Num[(len+1)/2];m2=Data_Num[(len+1)/2+1];printf( "中间两数为: %d,%d\n",m1,m2 );printf("最大公约数为: %d\n",CommonDivisor(m1,m2));printf("最小公倍数为: %d\n",CommonMultiple(m1,m2));break;}case '3':{printf("数据中共有%d个素数\n",PrimeNumber(Data_Num,len));break;}case '4':{printf("数据文件中共有%d个同构数\n",TongGouShu(Data_Num,len));break;}default:printf("输入错误\n");}}else if(strcmp(argv[1],"Handle string")==0){char* Data_String[N];int i;int n;char choice;for(i=0;i<N;i++)Data_String[i]=(char*)malloc(sizeof(char)*256);printf("**********************字符串操作**************************\n\n");printf("1、排序\n");printf("2、字符串逆置\n");printf("3、统计hello出现的次数\n");printf("4、去除最小串中在最大串里出现过的字符\n");n=ReadFile_Str("string_input.txt",Data_String);scanf("%c",&choice);switch(choice){case '1':{sort_Str(Data_String,n);WriteFile_Str("string_output1.txt",Data_String,n,"w");break;}case '2':{char*p;int i;reverse(Data_String,n/2);for(i=0;i<n/2;i++){p=Data_String[n/2+i];reverse_recursion(p);}break;}case '3':{printf("\"hello\ 出现%d次\n",SearchHello(Data_String,n));break;}case '4':{char* r[2];FindMaxMin(Data_String,n,r);printf("最小串: %s\n",r[0]);printf("最大串: %s",r[1]);ProcessString(r);puts(r[0]);}}}else{printf("指令格式错误\n");exit(0);}}else{printf("指令格式错误\n");exit(0);}return 0;}int ReadFile_Num(int* Data_Num){int i=0;FILE* fp=NULL;if( (fp=fopen("int_input.txt","r"))==NULL ){printf("数据文件不存在\n",N);exit(0);}while(!feof(fp)){fscanf(fp,"%d",&Data_Num[i++]);fclose(fp);printf("数据文件读取完成\n");return i-1;}void WriteFile_Num(char* FileName,int* Data_Num,int n) {FILE* fp;int i;fp=fopen(FileName,"w");for(i=0;i<n;i++){fprintf(fp,"%d\n",Data_Num[i]);}fclose(fp);}void sort_Num(int* Data_Num,int len){int i,j;int t;for(i=1;i<len;i++){j=i;t=Data_Num[j];while(j!=0 && Data_Num[j-1]>t){Data_Num[j]=Data_Num[j-1];j--;}Data_Num[j]=t;}}int CommonDivisor(int a,int b){int t;while(b!=0){t=a;a=b;b=t%b;}return a;}int CommonMultiple(int a,int b){int t;if(a<b){t=a;a=b;b=t;}t=a;while(a%b!=0)a+=t;return a;}int PrimeNumber(int* Data_Num,int len)int i,j;int flag=0;int count=0;int PrimeNum[N];for(i=0;i<len;i++){flag=1;for(j=2;j<Data_Num[i];j++)if(Data_Num[i]%j==0){flag=0;break;}if(flag)PrimeNum[count++]=Data_Num[i]; }return count;}int TongGouShu(int* Data_Num,int len) {int i;int t;int end;int wei;int s;int count=0;int r[N];for(i=0;i<len;i++){end=0;wei=0;s=1;t=Data_Num[i];while(t!=0){t/=10;wei++;}t=Data_Num[i]*Data_Num[i];while(wei--!=0){end+=(t%10)*s;t/=10;s*=10;}if(end==Data_Num[i])r[count++]=Data_Num[i];}return count;}int ReadFile_Str(char* name,char* str[]) {FILE* fp;int i=0;if( (fp=fopen(name,"r") )!=NULL){while(!feof(fp))fgets(str[i++],100,fp);}elseprintf("文件%s不存在",name);fclose(fp);return i-1;}void sort_Str(char* str[],int len){int i,j;char* t;for(i=1;i<len;i++){j=i;t=str[j];while(j!=0 && strcmp(str[j-1],t) >0 ){str[j]=str[j-1];j--;}str[j]=t;}}void WriteFile_Str(char* name,char* str[],int n,char* mode){FILE* fp;int i;fp=fopen(name,mode);for(i=0;i<n;i++)fprintf(fp,"%s",str[i]);fclose(fp);}void reverse(char* str[],int n){char* buf=(char*)malloc(sizeof(char)*256);char* end;int i;int j;int len;WriteFile_Str("string_output2.txt",&buf,0,"w");for(i=0;i<n;i++){len=strlen(str[i]);end=str[i]+len-1;for(j=0;j<len;j++)buf[j]=*end--;buf[j]='\0';WriteFile_Str("string_output2.txt",&buf,1,"a");}free(buf);printf("操作完成!!\n逆置后的数据已保存至string_output2.txt文件中\n"); }void reverse_recursion(char* str){FILE* fp=fopen("string_putput2.txt","a");if(*str!='\0'){reverse_recursion(str+1);fputc(*str,fp);}fclose(fp);}int SearchHello(char* str[],int n){int i,j,k;char buf[6];char* p;int len;int count=0;for(i=0;i<n;i++){len=strlen(str[i]);if(len>=5){for(j=0;j<=len-5;j++){p=str[i]+j;for(k=0;k<5;k++)buf[k]=*p++;buf[k]='\0';if( strcmp(buf,"hello")==0 )count++;}}}return count;}void FindMaxMin(char* str[],int n,char* r[]) {int i;char* max=str[0];char* min=str[0];for(i=1;i<n;i++){if( strcmp(max,str[i])<0 )max=str[i];else if( strcmp(min,str[i])>0 )min=str[i];}r[0]=(char*)malloc(sizeof(min));r[1]=(char*)malloc(sizeof(max));strcpy(r[0],min);strcpy(r[1],max);}void ProcessString(char* r[]){char*p=r[0];char*q=r[1];char*t;int flag=1;while(*q!='\0'){flag=1;p=r[0];while(*p!='\0'){if(*p==*q){flag=0;t=p;while(*(t+1)!='\0'){*t=*(t+1);t++;}*t='\0';}elsep++;}if(flag==1)q++;}}。

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语言程序设计期末大作业(3-4-5)

二级C语言程序设计期末大作业(3-4-5)

二级C语言程序设计期末大作业(3-4-5)一、单选题1. C 语言程序中可以对程序进行注释,注释部分必须用符号__C___括起来。

A. { 和 }B. [ 和 ]C. /* 和 */D. */ 和 /*2. 设要定义n为整型变量,定义x为浮点型变量,正确的语句是:_B____ 。

A. int n, float x,B. int n, float x;C. int n; float x,D. int n; float x;3. 设有int n; 从键盘上输入整数给变量n,正确的语句是:__D___ 。

A. scanf( n );B. scanf( "n" );C. scanf( "%d", n );D. scanf( "%d", &n );4. 程序段int x=3, y=2;printf("%d", x*=y+8/5);的输出结果为__D___ 。

A. 1B. 5C. 7D. 95. 要判断char型变量m是否是数字,可以使用表达式_____B_____。

A. 0<=m && m<=9B. m>='0' && m<='9'C. "0"<=m && m<="9"D. '0'<=m <='9'6. 执行以下代码段后,a的值为___A__。

int a=1,b=2,c=3;if(a>b) a=b;if(a>c) a=c;A. 1B. 2C. 3D. 不确定7. 下面的for 语句执行时,____B___将形成无限循环。

A. for(s=j=0; j<100; j+=1) s+=j;B. for(s=j=0; j<100; j+1) s+=j;C. for(s=j=0; j<100; ++j) s+=j-1;D. for(s=j=0; j<100; j++) s+= j;8. 循环语句中,break的作用是____B___。

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

大连理工大学C程序设计(大作业)总结报告学生成绩录入处理系统
学生姓名:罗
专业班级:
学号:
联系电话:
Email :
完成日期:2015年 5 月29日
一、设计任务
我的程序设计是一个学生成绩录入及处理的程序,该程序包括多种功能,能够满足大多数的学生成绩管理处理。

主要能够实现的目的主要有:
第一.学生姓名学号既包括三门成绩等信息的录入,并保存到文件d://score.txt。

第二.对每个学生的成绩进行求平均分及按平均分排序的数字处理。

第三.对输入错误的学生信息加以修改重新排序保存。

第四.增加学生信息,重新排序,加以保存。

第五.按每个学生的平均分进行表格化和图形化处理。

第六.实现某位同学的信息查找,包括姓名,学号,每科成绩及平均分。

以上功能全都可以实现,但是注意录入信息的要求,下面会有注释。

二、程序设计与实现
1.结构框图
下图描述预期实现题目的设计方案或功能设计的组成结构。

绘制成框图,如图所示是我设计的成绩信息管理程序设计的结构图示:
2.功能模块设计及其流程图
(1) 数据描述与存储
该学生信息统计系统设计一个全局结构体变量,将学生的姓名,学号,各科成绩及平均分保存在结构体,然后供设计各种程序调用,以完成修改,增加,排序和数据显示的功能。

学生成绩数据以二进制存储在d://score.txt文件,可以利用程序随时进行增加和修改,同时它会自动排序。

的描述题目所使用的核心数据,如;结构体类型定义及结构体成员含义说明。

并说明所使用的数据存储方法,指定文件的路径和文件名,保存数据的格式和读数据的目的。

(2) 结构体定义及介绍
typedef struct rec /*定义一个结构体类型*/
{ char name[20]; /*第一个元素为学生姓名,20个字节*/
short number; /*第一个元素为学生学号,2个字节(输入注意不要超出)*/
short score[M]; /*(M为全局3)依次定义三门科目分数:数,英,机*/
float average; /*定义浮点型平均数,保留2位小数,有函数计算赋值*/ }score;
score stu[N]; /*(N为全局100)定义全局总数100个学生信息以录入*/
(3)对于该程序的一点说明
1.学号在0~32768之间,请录入前对学号做好数据处理。

2.该系统的成绩满分为一百分制,如有某科成绩不符合应提前处理。

3.录入退出后,同样的数据不需两次输入,可直接运行程序处理及查看。

4.保存退出后请勿删除文件,数据会丢失。

5.柱状图的分辨率在十位数。

(4) 主要函数功能基变量说明
(4) 主要函数及其流程图
此处描述所有自定义函数的函数名,函数功能,参数说明及算法描述。

画出主要函数规范流程图。

例如,将每个函数按如下方式的说明(strcom()流程图如图2所示)。

函数原型1
void correct() /*针对输错的学生信息进行重新输入*/
假如某位学生信息输入错误,用此功能函数就可以用正确信息将错误信息覆盖,从而获得正确信息。

没有参数传递,在函数中利用循环全部信息中查找出该学生,直接利用全局变量,将该学生新信息重输以达目的。

函数原型2
void add() /*增加信息*/
如有想要输入新的学生或漏输,用此功能可以将某些学生的信息录入,当然,增加后总数不得超过100。

没有参数的传递,直接在以前的数据后面增加,然后对所有学生排序,做到所有数据同等处理。

函数原型3
void loadscore() /*加载学生信息*/
这儿之所以提起这个函数,是因为我在刚开始理解利用过程中,有点赘余出错。

该函数是加载函数,如果你是输入后不关闭用时是可以不用这个函数的,因为在你关闭之前所有的信息依然保存在全局结构体内。

然而,当你关闭以后再利用时必须要用这个函数将你写在文件中的信息读入结构体,再从结构体打印到屏幕。

函数原型4 ……….
(5) 个性化设计
该函数不难,但方法思维较好,进行介绍和结构图示:
函数原型void histograma_all() /*以排序后的平均成绩按柱状图查看*/
利用*的连续输入模拟柱状图,求十位数,按每增加1输出两个**,连续输入则组成柱状图。

最后在柱状图后面打印学生平均成绩。

三、设计效果
下图是录入12个学生后显示的排名结果:
下图是柱状图显示排名结果:
下图是查找界面:
四、结束语
该系统能改顺利完成学生成绩录入,学生成绩排名,学生增修后重新排名,在以表格和柱状图显示,和某同学的信息查询,能够以较好的界面和提示完成录入及数据处理,显示等。

在录入,修改,增加,排名,保存,加载,浏览等一系列部分的小问题,但通过多次修改还是能找到错误所在,最终完善整个程序。

但该程序也存在卓多局限,例如分数制,输入负数无错误提醒,平均分相同排序相同等,但是,只要继续修改,相信我能突破这些局限。

12周课很快,程序这门课,应该以概念加实践平衡学习。

最深的感触就是每次找到错误后的顿悟和你作业的成就感。

相关文档
最新文档