编程语言:课程设计学生成绩管理(用结构体输入学生信息)说明及要求:向计算机输入某班n(n<=100)个学生学号,姓名,

  摘要:学生成绩的管理与使用是教学系统中的重要组成部分,论文重点研究学生成绩管理系统的设计与实现,并在C语言程序设计及其" />
免费阅读期刊
论文发表、论文指导
周一至周五
9:00&22:00
基于C语言的学生成绩管理系统的设计与实现
2017年4期目录
&&&&&&本期共收录文章20篇
  摘要:学生成绩的管理与使用是教学系统中的重要组成部分,论文重点研究学生成绩管理系统的设计与实现,并在C语言程序设计及其开发环境的基础上,以河海大学文天学院为例,设计出了一个简单的学生成绩管理系统,便于各高校使用。 中国论文网 /8/view-8222641.htm  关键词:C语言;学生成绩管理系统;程序设计   中图分类号:TP311 文献标识码:A 文章编号:(9-04   1 背景   如今各大高校均需要一个完整的系统来管理和保存学生的各门课成绩信息,以便后期使用,论文以河海大学文天学院的工科专业学生成绩为例,运用C语言程序设计和程序运行的环境,设计了一个简单的学生成绩管理系统,下面就来介绍该系统是如何构建的。   2 系统需求分析   2.1 系统功能划分   该系统主要功能如下:   1)学生基本信息和成绩的录入;   2)学生成绩的管理,如计算总分、排序、统计等功能。   2.2 系统功能结构设计   这个学生成绩管理系统中包含的学生信息有:学生的学号、姓名、性别、高数成绩、英语成绩、计算机成绩、三门功课总分,主要的功能模块如下:   1)输出学生基本信息并算出总分;   2)按照学号进行排序;   3)按照总分进行排序;   4)统计各门课程平均分;   5)统计男女学生人数;   6)按照姓名进行排序;   7)统计高数成绩优秀(大于等于80分)的人数,并输出符合条件的记录;   8)统计每门功课成绩都在80分以上,或总分在240分以上的人数,并输出符合条件的记录。   C语言中系统的每个功能由一个函数来实现,其系统功能模块层次结构图如下:      图1 学生成绩管理系统功能模块层次结构图   因为函数就是功能,所以对于图1的功能模块层次结构图,每个模块就对应C语言中的一个函数,该系统中所涉及的函?导捌涔δ苋缦拢?   1)int Menu();   主控菜单函数,有返回值,无参数。用菜单形式显示该系统能实现的所有功能,以供用户查看和使用。函数中的返回值为用户输入的序号code,为局部整型变量。   2)void Read(struct student stud[],int *n);   读入数据函数,无返回值,有参数。形式参数stud为结构体数组,由于调用此函数时实际参数为数组名,因此此处用数组接收;形式参数n为指针变量,由于实际参数为存放学生人数的整型变量的地址,因此n指向存放学生人数的整型变量,这样可以在读入学生信息的同时,还可以统计出学生的人数。   3)void Print(struct student *pstud,int n);   输出数据函数,无返回值,有参数。形式参数pstud为指针变量,指向存放学生信息的结构体数组,这样可以将相关变动信息返回给主调函数;形式参数n为整型变量,存放学生的人数。   4)void total_order(struct student *pstud,int n);   按总分排序函数,无返回值,有参数。形式参数同上。   5)void num_order(struct student *pstud,int n);   按学号排序函数,无返回值,有参数。形式参数同上。   6)void ave_count(struct student *pstud, int n);   统计各门课平均分函数,无返回值,有参数。形式参数同上。   7)void nn_count(struct student *pstud,int n);   统计男女学生人数函数,无返回值,有参数。形式参数同上。   8)void name_order(struct student *pstud,int n);   按姓名排序函数,无返回值,有参数。形式参数同上。   9)void gxyx(struct student *pstud,int n);   统计高数成绩优秀人数函数,无返回值,有参数。形式参数同上。   10)void mm(struct student *pstud,int n);   统计每门课分数不小于80分或总分在240分以上人数函数 ,无返回值,有参数。形式参数同上。   3 C语言程序设计   一个C语言源程序由若干个函数构成,且有且仅有一个主函数,主函数的名字只能是main,其他函数名字由用户自己定义,只要满足标识符的四大规则即可。一个程序总是从主函数开始执行,无论主函数在前还是在后,该系统中除了主函数外,还有十个函数,下面针对其中几个重要的函数进行程序设计。   3.1 主函数程序设计   为了方便读者更好地读懂该程序,部分地方加了注释,以上程序中/* */为注释,计算机并不执行。其中第四行的N为符号常量,表示该系统记录了10个学生信息,每个学生信息用结构体类型的数组来保存,该结构体类型包含4个子成员,每个成员又是另一种类型的数据,其中学号、姓名、性别均由字符数组存储,成绩由整型数组存储,这样就构成了struct student结构体类型,主函数中的第一条语句就是用这种类型定义了结构体数组stud,用来存放十个学生信息。接下来就在主函数中调用各个函数,实现相对应的功能。   3.2 用户自定义函数程序设计
  3.2.1 主控菜单函数的设计   在屏幕中显示主控菜单,scanf为输入函数,需要输入一个整数,通过输入相对应的数字序号,可以实现相应的功能,例如输入1,即显示学生全部信息。   3.2.2 读入数据函数的设计   该系统是从文件中读取数据,10名学生的信息存储在文本文件studfile.txt中,如果想修改学生信息,直接在文件中修改即可,不用修改程序,这样既方便又快速,大大节省了时间。   3.2.3 按姓名排序函数的设计   以上程序使用冒泡的排序方法按姓名从小到大排序,系统直接将排序的结果输出到屏幕中,以供用户查看和使用。   4 系统界面   将以上程序输入到计算机C语言开发环境Microsoft Visual C++6.0中,经过编辑、编译、连接以后就可以运行了,运行界面如下:   1)系统菜单界面   当按下回车键,系统进入菜单模式,按照序号选择需要显示的信息。   2)?@示学生信息界面   当按下序号1,系统进入显示全体学生信息界面,显示的同时计算出了3门课总分。   3)按学号排序界面   按下回车键继续进入菜单进行选择,当按下序号3,系统进入按学号从小到大排序的界面。   4)统计高数优秀的学生人数和记录   按下回车键继续进入菜单进行选择,当按下序号7,系统进入统计高数不低于80分的人数和记录。   5 结束语   论文主要介绍了学生成绩管理系统的设计与实现过程,分别从系统需求分析、系统程序设计和系统界面设计三个方面展示了系统的设计与实现,其中系统需求分析包括大体功能划分和具体功能结构设计,并设计了功能结构图,描述了各项功能,系统程序设计包括主函数和其他自定义函数的设计。该系统总共实现了八项功能,学生信息来源于文本文件,这样大大方便了学生信息的增删改查等功能。系统中所有功能使用到的方法,还可以实现更多的功能,拓展性能良好,便于各高校各专业使用。   参考文献:   [1] 胡枫. 《C语言程序设计》的案例式教学的设计[J]. 青海师范大学学报, 2010(4).   [2] 谭浩强. C程序设计[M]. 4版.北京: 清华大学出版社, 2010.   [3] 宫业芹. C语言程序设计网上教学系统的设计与实现[D]. 济南: 山东大学, 2012.   [4] 陈婷. C语言程序设计实验教学改革探究[J].实验技术与管理, 2010(10): 182-184.   [5] 钱言玉, 谢超. 《C语言程序设计》课程实验教学研究[J]. 合肥师范学院学报, 2014(5).
转载请注明来源。原文地址:
【xzbu】郑重声明:本网站资源、信息来源于网络,完全免费共享,仅供学习和研究使用,版权和著作权归原作者所有,如有不愿意被转载的情况,请通知我们删除已转载的信息。
xzbu发布此信息目的在于传播更多信息,与本网站立场无关。xzbu不保证该信息(包括但不限于文字、数据及图表)准确性、真实性、完整性等。写一个学生信息结构体,写出函数分别对应五个学生信息的输入与输出(共7篇)
写一个学生信息结构体,写出函数分别对应五个学生信息的输入与输出(共7篇)
【分别作文】 池锝网
本文已影响 人
篇一:C++习题答案 4-2 编写一个程序,要求从键盘上输入两个整数,并输出这两个数中的大数。 4-3 编写一个程序,实现根据输入的x值,可求出y的值,并输出x和y的值。计算y值的数学公式为: y= {1.5x+7.5x&=2.5 9.32x-34.2 x&2.5 4-4 设计一个程序,输入实行变量x和y的值。若x&y,则输出x-y的值;否则输出y-x的值 4-5 设计一个程序,求出下列一元二次方程的根: ax^2+bx+c=0 系数a、b、c的值从键盘上输入。求方程根的计算公式为: s=(-b+根号(b^2-4ac))/2a 当平方根小于0时,输出“No solutons!”;否则,输出x的两个根。 4-6 设计一个程序,将从键盘上输入的百分制成绩转换成对应的五分制成绩并输出。90分以上为A,80~89分为B,70~79为C,60~69为D,60分以下为E。分别用条件语句和开关语句实现。 4-7 从键盘输入10个实数,并求出这10个数之和及平均值。用循环语句实现,写出完整的程序。 4-8 从键盘输入一个整数n的值,按下式求出y的值,并输出n和y的值(y用实数表示): y=1!+2!+3!+.....n! 4-9 设计一个程序,输出所有的水仙花数。所谓水仙化数是一个三为数,其各位数字的立方和等于该数本身。列如: 153=1^3+5^3+3^3 因此153是一个水仙化数。 4-10 设计一个程序,求出100~200之间的所有素数。 4-11 用循环语句实现输出如下的图形: * * * * * * * * * * * * * * * 4-12 设计一个程序,按以下公式求出数列的20项并输出。计算公式为: y=0
n=0;y=1 n=1;y=2 n=2;y=Y(n-1)+Y(n-2)+Y(n-3) n&2 4-13 设计一个程序,输入一个四位数(整数,求出各位数之和。 4-14 从键盘输入若干个实数,以输入0为结束。设计一个程序,分别统计出正数的个数和负数的个数。并求出正数之和、负数之和及总的平均值。 4-15 设计一个程序,输入一个四位整数。将各位数字分开,并按其反序输出。列如:输入1234,则输出4321,要求必须用循环语句实现。 4-16 设计一个程序,求出满足以下条件的最小的n值和s值: s=1+2+3+.....+n,且x&=600 4-17
求pi/2的近似值的公式为: pi/2=2/1*2/3*4/3*4/5*....*2n/(2n-1)*2n/(2n+1).... 其中,n=1、2、3....设计一个程序,求出当n=100是pi的值 4-18 求出1~599中能被3整除,且至少有一位数字为5的所有整数。如15、51、513均是满足条件的整数。 4-19 求满足以下条件的三为数n,它除以11所得的商等于n的各位数字的平方和,且其中至少有两位数字相同。列如,131除以11的商为11,各位数字的平方和为11,所以它是满足条件的三位数。 5-2 设计一程序,计算组合数:C(m,r)=m!/(r!*(m-r)!),其中m,r为正整数,且m&r.分别求出C(4,2).C(6,4).C(8,7)的组合数。求阶乘和组合数须用函数来实现。 5-3 设计一个程序,输入一个十进制整数,输出相应的十六进制数。设计一个函数实现数制转换。 5-4 设计一个程序,求出5~100之间的所有素数,要求每行输出5个素数。判断一个整数是否为素数用一个函数来实现。 5-5设计一个程序,输入两个整数,求出这两个整数的最小公倍数。求两个数的最小公倍数用一个函数来实现。 5-6设计一个程序,输入两个整数,求出这两个整数的最大公约数。求两个数的最大公约数用一个函数来实现。5-7设计一个程序,通过重载求两个数中大数的函数max(x,y),分别实现求两个实数和两个整数的大数。 5-8设计一个程序,用内联函数实现求出三个实数中的最大数,并输出最大数。 5-9 定义一个求n!的函数,n的缺省值为10。 5-10 设计一参数数目可变的函数,第一个参数n为参数的个数。求出这n个实蚕之和并输出。 5-11 设计一参数数目可变的函数,第一个参数n为参数的个数。调用该函数时,若n=3,则求出后三个实参之积并返回该值;若n=则求出后四个实参的平均值并返回该值 5-12 用递归函数实现Fibonnaci数列的前n项,n作为函数的参数 5-13 当x&1时,Hermite多项式定义为:H(x)={1 n=0 ,2x
,??..,当输入实数x 和整数n后,求出Hermite多项式的前n项的值。分别用递归函数和非递归函数来实现。 5-14阿克曼函数定义如下:??????..,其中m、n为正整数,设计一个程序,分别求出Acm(5,3)的值 5-15 设计一个程序,要求输入一个整数,并能逐位正序和反序输出,如输入一个整数3456,则输出,分别设计两个函数,一个实现正序输出,另一个实现反序输出 5-16 设计一个程序,将求两个实数的最大值函数放在头文件mufun.h中,在源程序文件mypro.cpp中包含该头文件,并实现输入三个实数,求出最大值 5-17 设计一个程序,定义带参数的宏MAX(A,B)和MIN(A,B),分别求出两个数中的大数和小数,在主函数中输入三个数,并求出这三个数中的最大数和最小数 5-18 已知三角形的三条边a,b,c,则三角形的面积为:area=sqrt[s(s-a)(s-b)(s-c)求出其中s =(a+b+c)/2。编写程序,分别用带参数的宏和函数求三角形的的面积 5-19 设计一个程序,使用条件编译输出调试信息 6-1 读入一组整数到一维数组中,设计一程序,找出其中最大的偶数和最大的奇数(若设有奇数时,输出“没有奇数!“)并输入 6-2 输入一组非0整数(以输入0作为输入结束标志)到一维数组中,设计一程序,求出这一组数的平均数,并分别统计出这正数和负数的个数 6-3 输入10个数到一维数组中,按升序排序后输出。分别用3个函数实现数据的输入,排序和输出 6-4 输入N个数到一维数组中,求均方差: D= 其中M= 6-5 设计一程序,求一个4*4距阵对角线元素和 6-6 先输入一个4*4的距阵,转置后输出结果, 6-7 用一个2维数组float cla[50][2]来存放一个班级的2门课程(c++和计算机应用基础)的成绩 6-8 用cin.getline()将一个字符串出入到字符数组S(char S[200])中,删除字符串中的所有空格后输出 6-9 用cin.getline()将一个字符串出入到字符数组中,按反序输出 6-10 设计一个函数int strlen(char s[])。求出字符串S中包含的字符个数,并作为函数的返回值 6-11 设计一个函数void strcpy(char a[],char b[]),将b中的字符串拷贝到数组a中 6-12 设计一个函数void strcat(char a[],charb[])。将b中的字符串拼接到数组a中的字符串的后面,构成一个字符串 6-13 用筛选法求出2到200之间的所有的素数 7-1 定义描述一个人出生日期的结构体类型变量,包括年,月,日 7-2 定义描述通讯录的结构体类型变量,包括姓名,地址,电话号码和邮编 7-5 为全班同学建立一个通讯录(结构体数组),完成数据的输入和输出 7-6 定义描述复数的结构体类型变量,并实现复数的输入和输出。设计三个函数分别完成复数的加法,减法和乘法运算 7-7 定义描述三维坐标点(x,y,z)的结构体类型变量,完成坐标点的输入/输出,并求两左边点之间的距离 7-8一个元素包括:姓名,学号,C++成绩,英语成绩,数学成绩和这三门功课的平均成绩。设计四个函数:全班成绩的输入,求出每个同学的平均成绩,按平均成绩的升序排序,输出全班成绩表 7-9 定义一个描述一周日程的枚举类型,完成这种枚举类型变量的输入和输出 7-10 定义一个描述三种颜色的每举类型,输出这三种颜色的全排列结果8-2 用指针作为函数的参数,设计一个实现两个参数交换的函数.输入三个实数,按升序排列后输出. 8-3 定义一个而维的字符串数组,输入若干个字符串,按升序排列后输出,要求设计一个通用的排列函数,输入参数作为字符串数组 和要排列的字符串的个数. 8-4 设计一个通用的插入排列函数,参数为指向实数的指针(指向一个已经排好序的数组)和一个实数,将该实数插入到已经排好序的数组中. 主函数完成输入若干个实数,没输入一个实数,调用一次插入排序的函数完成数据的排序,最后输出已经排好的数据. 8-5 设计一个函数,求字符串的长度(指向字符串的指针作为函数的参数).在主函数中输入一个字符串,并输出该字符串及其长度. 8-6 设计一个函数,将一个字符串并接到一个字符串的尾部,并接后构成一个新的字符串,主函数完成输入该字符串,输出该字符串和并接后的 新的字符串的功能. 8-7 设计一个函数,将一个字符串拷贝到另一个参数所指向的字符树组中.主函数完成输入一个字符串,输出拷贝后的字符串的功能. 8-8 输入一个二维数组A[6][6].设计一个函数,用指向一维数组的指针变量和二维数组的行数作为函数的参数,求出平均值,最大元素值,和最小元素值,并输出. 8-9 设计一个用矩形法求积分的通用函数,被积函数的指针,积分的上限,积分的下限和积分区间的等分数作为函数的参数.分别求出下列定积分的值;() 8-10 定义一个指向字符串的指针数组,用一个函数完成N个不等长字符串的输入,-根据实际输入的字符串长度用NEW运算符分配存储空间,依次使指针数组中的元素指向每一个输入的字符串,设计一个完成N个字符串排序的函数,在主函数中实现将排序后的字符串输出. 8-11输入一个字符串,串内有数字和非数字字符.例如ABC.......将其中连续的数字作为一个整数依次存放到另一个整数数组B中..... 8-12建立一个无序链表,没一个节点包括:学号,姓名,年龄...由一个函数完成建立链表工作,另一个函数完成输出链表上各结点值...... 8-14建立一个有序链表,每一个节点包括:学号,姓名,... 求出总分最高和最低的同学并输出 8-15建立一条无序链表,用一个函数实现将这条链表构成一条新的逆序链表,即将链表头当链表尾,链表尾当链表头,输出这两条链表上各个节点的植 9-1 定义一个描述复数的类,数据成员包括实部和虚部;成员函数包括:输出复数,置实部,置虚部。 9-2 定义一个描述学生基本情况的类,数据成员包括姓名,学号,数学,英语,物理和C++成绩,成员函数包括输出数据,置姓名和学号,置四们课的成绩和平均成绩。 9-4 三维坐标中的一条直线的两端点的坐标(x1,y1,z1)和(x2,y2,z2)来描述。定义一个类,实现坐标数据的设置,输出端点的坐标和直线的长度。构成一个完整的程序,完成测试工作。 10-2 定义一个描述复数的类,数据成员包括实部和虚部;成员函数包括输出复数以及构造函数完成数据的初始化。 10-3 定义一个描述学生基本情况的类,数据成员包括姓名,学号,数学,英语,物理和C++成绩;成员函数包括输出数据,构造函数可完成所有数据的初始化,修改每一个数据成员的函数,求出总成绩和平均成绩的函数。 11-1 把定义直角坐标系上的一个点的类作为基类,派生出描述一条直线的类,再派生出三角形类。要求成员函数能求出两点间的距离、三角形的周长和面积等。 11-7 设计一个大学的类系统,大学中有学生、教师、干部和工人。学生的任务是学习;教师的任务是上课和科研;干部的任务是管理;工人的任务是定额生产产品。提取共性作为基类,并派生出满足要求的各个类及每一个类上的必要操作。 11-8 设计一个描述儿童、成人和老人的类系统,儿童分为学龄前和学龄期儿童,成人有工作,老人已经退休。提取共性作为类基,并派生出满足要求的各个类及每一个类上的必要操作。 12-7 建立一条双向无叙链表,节点数据包括:姓名、地址和工资。 12-8 建立一条双向有序链表,节点数据包括:姓名、地址和工资。按工资从小到大的顺序排列。 13-5 定义一个复数类,通过重载运算符:=、+=、-=、+、-、*、/、==、!=,直接实现两个复数之间的各种运算。编写一个完整的程序13-6 定义一个学生类,数据成员包括:姓名,学号,C++、数学和物理的成绩。重载运算符“&&”和“&&”,实现学生类对象的直接输入和输出。增加转换函数,实现姓名和总成绩的转换设计一个程序,验证成员函数和重载运算符的正确性。 13-7 定义描述平面上一个带内的类point,重载“++”和“--”运算符,并区分这种运算符的前置和后置运算。构成一个完整的程序。 13-8定义一个指向字符串的指针数组,重载下标运算符,实现下标是否出界的检查。 13-9通过重载函数调用运算符,完成三维数组小标的合法性检查。三维数组的类型可为整性或实型。 13-10完善字符串类,增加以下运算符的重载:+=、-=、==、!=。在主函数中侧重检测重载运算符的正确性。 第4章 4-2 #include &iostream.h& void main(){ int x,y,t; cout&&&请输入两个整数:&; cin&&x; cin&&y; if(x&=y)t=x; else t=y; cout&&t&&'\n'; }
4-3 #include &iostream.h& void main(){ float x,y; cout&&&请输入一个实数:&; cin&&x; if(x&=2.5)y=1.5*x+7.5; else y=9.32*x-34.2; cout&&x&&'\t'&&y&&'\n'; }
4-4 #include &iostream.h& void main(){ float x,y; cout&&&请输入两个实数:&; cin&&x; cin&&y; if(x&y)cout&&x-y&&'\n'; else cout&&y-x&&'\n'; }
4-5 #include &iostream.h&#include &math.h& void main(){ float a,b,c,delta,x1,x2; cout&&&请输入方程的三个系数a,b,c:&; cin&&a; cin&&b; cin&&c; delta=b*b-4*a*c; if(delta&=0){ delta=sqrt(delta); if(delta&0){ x1=(-b+delta)/2/a; x2=(-b-delta)/2/a; cout&&&方程有两个不等实根:&; cout&&&x1=&&&x1&&'\t'&&&x2=&&&x2&&'\n';} else{ cout&&&方程有两个相等实根:&; cout&&&x1=x2=&&&(-b)/2/a&&'\n'; } } else cout&&&No solutions!\n&; }
4-6 #include &iostream.h& void main(){
while(1){ cout&&&请输入百分制分数:&; cin&&s; if(s&=0) else if(s&=90) cout&&&五分制分数为A\n&; else if(s&=80) cout&&&五分制分数为B\n&; else if(s&=70) cout&&&五分制分数为C\n&;else if(s&=60) cout&&&五分制分数为D\n&; else cout&&&五分制分数为E\n&;
} } 用开关语句实现,程序如下:篇二:C语言信息安全上机实验报告模版5-函数与结构体 北京信息科技大学 信息管理学院 (课程上机)实验报告 实验课程名称: C语言程序设计 专业: 信息安全12
5 篇三:学生信息(结构体)
一、实验目的 1.熟悉c语言编译环境,掌握c程序的编写、编译、运行的调试过程。 2.能够熟练的将c程序存储到指定的位置。 二、实验环境 1.硬件:每个学生需配备计算机一台。 2.软件:windows操作系统+Turbo C。 三、实验要求 1.将实验中的每个功能用一个函数实现。 2.每个输入前要有输入提示(如:请输入2个整数当中用空格分割:),每个输出数据都要求内容说明(如:280和100的和是:380。) 3.函数名和变量名称等要用英文或英文简写(每个单词第一个字母大写)形式说明。 四、实验内容 1.在自己的U盘中建立“姓名+学号”文件夹,并在该文件夹中创建“实验一”文件夹(以后每次实验分创建对应的文件夹),本次实验的所有程序和数据都要求存储到本文件夹中(以后实验都按照本次要求)。 2.编写一个输入某学生3门课程成的函数(3门课程成绩放在结构体数组中,结构体包括:课程编号,课程名称,课程成绩)。 3.编写一个求3门成绩中最高成绩的函数、输出最高成绩和对就的课程名称,如果有多个最高成绩,则每个最高成绩均输出。 4.编写一个求3门成绩平均输出的函数。 5.编写一个函数求出平均成绩的所有课程及成绩。
代码如下: #include &stdio.h& #define N 3 struct subject {
char name[20]; }; void main() { void sc_input(struct subject sub[]);
void sc_max(struct subject sub[]);
void sc_aver(struct subject sub[]);
void sc_print(struct subject sub[]);
struct subject sub[N],*p=
sc_input(p); sc_print(p);
sc_max(p);
sc_aver(p); } void sc_input(struct subject sub[]) {
printf(&*************** 孙 超 *****************\n&);
printf(&***********输入学生信息***************\n&);
for(i=0;i&N;i++)
{printf(&输入学号:&);scanf(&%d&,&sub[i].num);printf(&输入姓名:&);scanf(&%s&,sub[i].name);printf(&输入成绩:&);scanf(&%f&,&sub[i].score); } } void sc_max(struct subject sub[])
运行结果截图:
{ int i,m=0;
for (i=1;i&N;i++) if (sub[i].score &sub[m].score )
m=i;for (i=0;i&N;i++) if(sub[m].score ==sub[i].score )
printf(&最 高 成 绩 信 息:%s %f\n&,sub[i].name ,sub[i].score); } void sc_aver(struct subject sub[]) {
float m=0;
for(i=0;i&N;i++)
{ m=m+sub[i].} sub[0].aver =m/N; printf(&平均成绩:%f\n&,sub[0].aver); printf(&高于平均成绩的信息\n&);
for(i=0;i&N;i++) if(sub[i].score &sub[0].aver) printf(&%s %f\n&,sub[i].name ,sub[i].score ); } void sc_print(struct subject sub[]) {
printf(&课程编号 课程名称课程成 绩:\n&); for(i=0;i&N;i++)
printf(&%d\t\t%s\t
%f\n&,sub[i].num,sub[i].name,sub[i].score);
} }五、实验总结: 通过在本次实验C程序的编写、编译、运行和调试过程中,让我熟悉了编程环境,想起了我们老师以前说过这样一句话,程序就是在不断地编写、调试和修改中才能使它更精练完美。篇四:结构体练习题 算并输出每个人的学号和平均成绩。 2. 已知链表结点结(转 载 于: 池锝
网:[标签:biaoti])构如下,假设动态链表已经建立,请编写删除给定学号的结点的函 数。(只编写删除子函数即可) 3. 编写函数实现动态链表的建立。链表结点结构如下,要求在主函数中将你所建立的链 表输出到屏幕上。 4. 有10个学生,每个学生的信息包括学号、姓名、3门课的成绩,从键盘输入10个学 生数据存入结构体数组中,要求输出个人总分最高的学生的信息(包括学号、姓名、3门课成绩、总分)。 5. 链表的结点数据类型如下: struct node{
struct node * }; 链表的建立和输出函数如下,编写将第i个结点删除的函数,并完善主函数,调试运行整个程序。 struct node *creat() { struct node
*h,*s,*r; h=(struct node *)malloc(sizeof(struct node)); r=h; scanf(&%d&,&x); while(x!=-1) {
s=(struct node*)malloc(sizeof(struct node)); s-&data=x; r-&next=s; r=s; scanf(&%d&,&x); } r-&next=NULL;
} void print(struct node *h)
//打印函数 {
struct node *p; p=h-& if(p==NULL) printf(&list is empty!&); else {
while(p!=NULL) {
printf(&%4d&,p-&data); p=p-& } } }并输出其平均成绩。
7. 试利用指向结构体的指针编制一程序,实现输入三个学生的学号、数学期中和期末成 绩,然后计算其平均成绩并输出成绩表。
8. 有一个unsigned long型整数,现要分别将其前2个字节和后2个字节作为两个 unsigned int型整数输出(设一个int型数据占2个字节),试编一函数partition实现上述要求。要求在主函数中输入该long型整数,在函数partition中输出结果。 9. 编写一个函数print,打印一个学生的成绩数组,该数组中有5个学生的数据记录,每个 记录包括num、name、score[3],用主函数输入这些记录,用print函数输出这些记录。用结构体共用体来实现。
10. 有10个学生,每个学生的数据包括学号、姓名、3门课的成绩,从键盘输入10个学生 数据,要求打印出3门课总平均成绩(指全体学生所有成绩的平均值),以及最高分的学生的数据(包括学号、姓名、3门课成绩、平均分数)。用结构体来实现。
11. 有一个结构体变量stu,内含学生学号、姓名和3门课的成绩。要求在main函数中赋 以值,在另一函数print中将它们打印输出。用结构体变量作函数参数。
12. 对候选人得票的统计程序。设有3个候选人,有20个人对其进行投票,每次输入一个 得票的候选人的名字,要求最后输出各人得票结果。用结构体的方法实现。 13. 定义一个结构体变量(包括年、月、日)。计算该日在本年中是第几天?注意闰年问 题。 14. 请删除已知链表中的指定结点。要求删除的结点数据从键盘输入。 #define NULL
0 struct student{
struct student * }; main(){ struct student a,b,c,*head,*p; a.num=99101; a.score=89.5; b.num=99103; b.score=90; c.num=99107; c.score=85; head=&a; a.next=&b; b.next=&c; c.next=NULL;p= do{ printf(&%ld %5.1f\n&,p-&num,p-&score); p=p-& }while(p!=NULL); del();/*请完成此函数来删除某一结点*/ } 答案:略 15. 请在已知链表中插入某一指定结点。要求插入的结点数据从键盘输入,顺序按学号 升序插入。 #define NULL
0 struct student{
struct student * }; main(){ struct student a,b,c,*head,*p; a.num=99101; a.score=89; b.num=99103; b.score=90; c.num=99107; c.score=85; head=&a; a.next=&b; b.next=&c; c.next=NULL; p= do{ printf(&%ld %5d\n&,p-&num,p-&score); p=p-& }while(p!=NULL); insert();/*请完成此函数来插入某一结点*/ } 答案:略 16. 请编写程序动态生成一个链表。要求结点数据从键盘输入。并将建立好的链表输出 到屏幕上。结点数据类型如下: struct student{
struct student * };
答案:略 17. 定义一个结构体变量(包括年、月、日)。计算该日在本年中是第几天?注意闰年问 题。请写一函数days来完成此功能。要求由主函数将年、月、日传递给days函数,计算后将日子数传回主函数输出。 答案:略 18. 有两个链表a和b。设结点中包含学号、姓名。从a链表中删去与b链表中有相同 学号的那些结点。 链表a的数据:{&101&,&wang&},{&102&,&li&},{&105&,&zhang&},{&106&,&wei&} 链表b的数据:{&103&,&chang&},{&104&,&ma&},{&105&,&zhang&},{&107&,&guo&},{&108&,&liu&} 19. 建立一个链表,每个结点包括:学号、姓名、性别、年龄。输入一个年龄,如果链 表中的结点所包括的年龄等于此年龄,将此结点删去。请完善程序。 #include &malloc.h& #define NULL 0 #define LEN sizeof(struct student) struct student {char num[8]; char name[10]; char sex[2];
struct student * }stu[10]; main() { struct student *p,*pt.* int i,length,iage,flag=1; int find=1; while(flag==1) {printf(&input list's length (&10):\n&); scanf(&%d&,&length); if(length&10) flag=0; } /*请完成建立链表*/
/*输出*/ p= printf(&\n numnamesex
age\n&); while(p!=NULL) {printf(&%8s%8s8s%8d\n&,p-&num,p-&name,p-&sex,p-&age); p=p-& }
/*请完成删除*/ /*输出*/ p= printf(&\n numnamesex
age\n&); while(p!=NULL) {printf(&%8s%8s8s%8d\n&,p-&num,p-&name,p-&sex,p-&age); p=p-& } }
20. 以下为有3名学生数据的单向动态链表的综合操作。今给出main函数、建立链表函 数creat、链表输出函数print。建立链表时输入各结点的数据按学号增序排列,使建立的链表有序。请完善程序,要求编写按学号顺序插入结点的函数insert。 #include &malloc.h& #define NULL 0 #define LEN sizeof(struct student) struct student {
struct student * };
struct student *creat(void)
/*要求按学号递增顺序输入*/ { struct student * struct student *p1,*p2; n=0; p1=p2=(struct student*) malloc(LEN); scanf(&%ld,%d&,&p1-&num,&p1-&score); head=NULL; while(p1-&num!=0) { n=n+1; if(n==1) head=p1; else p2-&next=p1; p2=p1; p1=(struct student*)malloc(LEN); scanf(&%ld,%d&,&p1-&num,&p1-&score); } p2-&next=NULL; return(head); } void print(struct student *head) { struct student *p;篇五:第九章作业
第九章作业 1. 定义一个结构体变量(包括年、月、日)。计算该日在本年中是第几天,注意闰年 问题。 2. 写一个函数days,实现第1题的计算。由主函数将年、月、日传递给days函数, 计算后将日子数传回主函数输出。 3. 编写一个函数print,打印一个学生的成绩数组,该数组中有5个学生的数据记录, 每个记录包括num,name,score[3],用主函数输入这些记录,用print函数输出这 些记录。 4. 在第3题的基础上,编写一个函数input,用来输入5个学生的数据记录。 5. 有10个学生,每个学生的数据包括学号、姓名、3门课程的成绩,从键盘输入10 个学生数据,要求输入3门课程总平均成绩,以及最高分的学生的数据(包括学 号、姓名、3门课程成绩、平均分数)。 6. 有13个人围成一圈,从第1个人开始顺序报号1,2,3。凡报到3者退出圈子。找出 最后留在圈子中的人原来的序号。 7. 编写一个函数new,对n个字符开辟连续的存储空间,此函数应返回一个指针(地 址),指向字符串开始的空间。new(n)表示分配n个字节的内存空间,见图9-24。 图 9-24 8. 写一函数free,将第7题用new函数占用的空间释放。free(p)表示将p(地址)指向 的单元以后的内存释放。 9. 在例9.9的基础上,写一个函数del,用来删除动态链表中指定的结点。 10. 写一个函数insert,用来向一个动态链表插入接点。 11. 综合教材第9章例9.8(建立链表的函数creat)、例9.9(输出链表的函数print)和习题 第9题(删除接点的函数del)。第10题(插入结点的函数insert)组成一个程序,编 写一个主程序先后调用这些函数,实现链表的建立、输出、删除和插入,在主程 序中指定需要删除和插入的结点。 12. 已有a,b两个链表,每个链表中的结点包括学号、成绩。要求把两个链表合并,按 学号升序排序。 13. 有两个链表a和b,设接结点中包括学号、姓名。从a链表中删去与b链表中有相 同学号的那些结点。 14. 建立一个链表,每个结点包括:学号、姓名。性别、年龄。输入一个年龄,如果 链表中的结点所包含的年龄等于此年龄,则将此结点删去。篇六:C++上机题目及答案1 第一周上机题 以下语句描述了包含数学成绩的学生信息结构体及其数组a: struct
student{ char name[20]; }; studenta[10] = {{&张三&, 90},{&李四&,85},{&王五&,73}}; intcount=3;
// 数组中包含的学生数 编写两个函数分别实现在a数组中添加和删除学生信息。 要求: 1) 原数组已按数学成绩排序(降序),添加和删除学生信息后数组应仍为降序; 2)以下数据用于添加:{&赵二&, 96},
{&钱六&,65},{&孙七&,80} 3) 注意:添加,删除后count数据要相应变化。
#include&iostream.h& #include&string.h&
student{ char name[20];
}; int count=3;
void add(student a[10]); void dele(student a[10]); void print(student a[]);
void main(){ studenta[10] = {{&张三&, 90},{&李四&,85},{&王五&,73}}; int n=0; do{ cout&&&.................学生信息处理系统..................& &&&\n1-删除& &&&\n2-增加& &&&\n3-结束\n& &&&\n请选择:
&; cin&&n; if(n==1) dele(a); else if(n==2) add(a) ; else cout&&&谢谢使用本系统!\n&; }while(n!=3); }
1.void add(student a[10]){
int i=0,n= cout&&&请输入需增加的学生信息(姓名,成绩):
&; cin&&stu.name&&stu. while(stu.math&a[i].math && i&n) i++;//找插入的位置 for(;n&i;n--) a[n]=a[n-1]; //腾位置 a[i]=//插入 count++; print(a);
} void dele(student a[10]){ char name[20]; int i=0,n= print(a); cout&&&请输入需删除学生的姓名:
&; cin&& while(strcmp(name,a[i].name)!=0 && i&n) i++;//找人 if(i&=n) cout&&&查无此人!\n&; else { for(;i&n-1;i++) a[i]=a[i+1];//删除 count--; print(a); } }
void print(student a[]){ cout&&&\n最新学生信息: \n&; for(int i=0;i&i++) cout&&a[i].name&&'\t'&&a[i].math&&'\n'; } 2. 定义描述三维坐标点(x,y,z)的结构体类型变量,完成坐标点的输入和输出,并求两坐标 点之间的距离。 要求: 编写函数求两坐标点之间的距离。 #include&iostream.h& #include&math.h&
struct point{ double x,y,z; }; double distance(point a,point b);
void main(){ point a,b; cout&&&请分别输入两个点的坐标(x,y,z):\n&; cin&&a.x&&a.y&&a.z; cin&&b.x&&b.y&&b.z; cout&&&a点的坐标:&&&a.x&&','&&a.y&&','&&a.z&&'\n'; cout&&&b点的坐标:&&&b.x&&','&&b.y&&','&&b.z&&'\n'; cout&&&a,b两点的距离是:&&&distance(a,b)&& }
double distance(point a,point b){
d=sqrt((a.x-b.x)*(a.x-b.x) +(a.y-b.y)*(a.y-b.y) +(a.z-b.z)*(a.z-b.z));
} 3. 某市青年歌手大赛聘请7名评委打分,下列程序协助进行评分统计。函数delmaxmin 的功能是对一个选手的得分做以下计算:去掉一个最高分,去掉一个最低分,然后对剩余得分求平均分并保存。函数sort完成对n名选手的得分按平均分从高到低排序。 【测试数据与运行结果】 测试数据:程序中给定的初始化测试数据 运行结果: li: 94 97 98 7.40 zhang: 96 97 98 7.20 zhou:
97 96 9797.00 以下语句描述了包含数学成绩的学生信息结构体及其数组a: struct{ char player_name[20]; double score[7], }PERSON[3]; #include&iostream.h& struct P{ char name[20]; double score[7], }PERSON[3];
double delmaxmin(double a[7]){ double aver=0,sum=0,max, max=min=a[0]; for(int i=0;i&7;i++){ if(a[i]&max) max=a[i];if(a[i]&min) min=a[i]; aver+=a[i]; } aver-=max+ return aver/5; }
void sort(P p[3]){ int i,j; P for(i=0;i&3;i++) for(j=i+1;j&3;j++)
//原程序:for(j=0;j&3;j++) if(p[i].aver&p[j].aver)///原程序: if(p[i].aver&p[i+1].aver) a=p[i],p[i]=p[j],p[j]=a; } void main(){ int i,j; cout&&&请输入比赛选手的比赛数据:&&& for(i=0;i&3;i++){ cin&&PERSON[i]. for(j=0;j&7;j++) cin&&PERSON[i].score[j]; } for(i=0;i&3;i++) PERSON[i].aver=delmaxmin(PERSON[i].score); sort(PERSON); cout&&&比赛成绩如下&&& for(i=0;i&3;i++){ cout&&PERSON[i].name&&'\t'; for(j=0;j&7;j++) cout&&PERSON[i].score[j]&&'\t'; cout&&PERSON[i].aver&& } }
25个人围成一个圈,从第1个人开始顺序报号(1,2,3……),凡报号为3和3的倍数者退出圈子,找出最后留在圈子中的人原来的序号。 要求: 函数void seek( int *a , int n, int *pn) 按上述要求在a数组,找出最后留在圈子中的人原来的序号并返回。 主函数是: void main( ){ int n=3;
int a[25],*p=a; for(int i=0; i&25; i++) p[i]=i+1; seek( a,n ,&num); cout&&” 最后留在圈子中的人原来的序号是: ”&&num && } */ #include&iostream.h& #define NUM 10 #include&iomanip.h&
void seek( int*a,int n,int *pn);
void main( ){ int n=3;
int a[NUM],*p=a; for(int i=0; i# i++) p[i]=i+1; for(i=0;i#i++)cout&&setw(3)&&a[i]; seek( a,n ,&num); cout&&&\n最后留在圈子中的人序号是: &&&num+1 && }
void seek( int*a,int n,int *pn){ int num=NUM; int k=1;
cout&&&\n游戏中.......\n&; while(num&1){ for(i=0;i#i++){ if(a[i]==0) if(k++%3==0){ a[i]=0; num--; } else *pn=i; } for(i=0;i#i++) if(a[i]!=0)cout&&setw(3)&&a[i]; cout&& } } 1.编程要求 1) 编写函数int find(char *a , char *b),函数被调用时,a指向的数组中已 存储一个字符串,该字符串是一个包含了多个单词的英语句子。函数的篇七:结构体和共用体习题 习
题 六 1. 从下列四个选项中选择一个正确的填入括号中。 (1)在说明一个结构体变量时系统分配给它的存储空间是( D)。 A该结构体中第一个成员所需存储空间 B该结构体中最后一个成员所需存储空间 C该结构体中占用最大存储空间的成员所需存储空间 D该结构体中所有成员所需存储空间的总和 (2)在说明一个共用体变量时系统分配给它的存储空间是(D )。 A该共用体中第一个成员所需存储空间 B该共用体中最后一个成员所需存储空间 C该共用体中占用最大存储空间的成员所需存储空间 D该共用体中所有成员所需存储空间的总和 (3)共用体类型在任何给定时刻, ( B) 。 A所有成员一直驻留在内存中 B只有一个成员驻留在内存中 C部分成员驻留在内存中 D没有成员驻留在内存中 (4)以下定义结构体类型的变量st1,其中不正确的是(A ) A
typedef stuct student {
}STD; STD st1; B
student { int num, }st1; C
}; struct student st1; (5)已知职工记录描述为: struct
workers { char name[20];
设变量w中的”生日”应是”日”,下列对”生日”的正确赋值方式是( C)。 A day=25; month=10; year=1993; B w.day=25w.month=10; w.year=1993; C w.birth.day=25; w.birth.month=10; w.birth.year=1993; D birth.day=25; birth.month=10; birth.year=1993; (6)设有如下定义: struct sk {
}data,*p; 若有p=&则对data中的a成员的正确引用是( B)。 A (*p).data.a B (*p).a C p-&data.a D p.data.a 2.填空 (1)若有以下说明和定义且数组w和变量k已正确赋值,则对w数组中第k个元素中各成员的正确引用形式是 w[k-1].b、 w[k-1].c
、 w[k-1].d 。 struct
w[10]; int k=3; (2)若有以下说明和定义,则对x.b成员的另外两种引用形式是 x-&b-&
*b; }*p,p=&x; 3.下面程序,写出运行结果。 (1),ffffffcc #include &stdio.h& main( ) { struct byte {
}; union { int i[2];
char m[2];
}r,*s=&r;s-&j=0x; printf(&%x,%x\n&,s-&d.x,s-&d.y); } (2)结果:1,minicomputer #include &stdio.h& struct tree {
char *s; }t; func(struct tree
t ) { t.x=10; t.s=&computer&; return(0); } main() { t.x=1; t.s=&minicomputer&; func(t); printf(&%d,%s\n&,t.x,t.s); }
#include &stdio.h&..................................................结果:.0,&null& struct tree char *s; }t; func(struct tree
t ) { t.x=10; t.s=&computer&; return(0); } main() { //t.x=1; //t.s=&minicomputer&; func(t); printf(&%d,%s\n&,t.x,t.s); } (3)结果:34,12 #include &stdio.h& main() { union { char s[2];
}a; a.i=0x1234; printf(&%x,%x\n&,a.s[0],a.s[1]); } (4)结果:1,2,30 #include &stdio.h& struct st {
*y; }*p; int s[]={10,20,30,40}; struct st a[]={1,&s[0],2,&s[1],3,&s[2],4,&s[3]}; main() { p=a; printf(&%d,&,p-&x); printf(&%d,&,(++p)-&x); printf(&%d,&,*(++p)-&y);(5)结果:8 typedef
union{ long a[2];
char c[8]; }TY; TY main() { printf(“%d\n”,sizeof(our)); } 4. 编写程序输入一个学生记录, 记录包含学号、姓名、性别和成绩信息,淌淙胝 些数据,并且显示出来。 #include&stdio.h& struct student {
char name[20]; char sex[2];
}stu1; main() { printf(&*********请输入该学生的学号、姓名、性别和成绩:\n&); scanf(&%d %s %s %f&,&stu1.no,stu1.name,stu1.sex,&stu1.score); printf(&学号:%d\n 姓名:%s\n 性别:%s\n 成绩:%f\n&,stu1.no,stu1.name,stu1.sex,stu1.score); }
/*5.有若干运动员,每个运动员包括编号、姓名、性别、年龄、身高、体重。如果性别为男,参赛项目为长跑和登; 如果性别为女,参赛项目为短跑、跳绳。用一个函数输入员信息,用另一个函数输出运动员的信息 ,再建立一个函数求所有参赛运动员每个项目的平均成绩。*/ #include&stdioh& #include&string.h&
items1[2]={'长跑','登山'}; char
items2[2]={'短跑','跳绳'};
void InputAthInfo();相关热词搜索:
[写一个学生信息结构体,写出函数分别对应五个学生信息的输入与输出(共7篇)]相关的文章
看过本文的人还看了
【分别作文】图文推荐
Copyright & 2006 -
All Rights Reserved
池锝网 版权所有

我要回帖

更多关于 用结构体编写学生成绩 的文章

 

随机推荐