假设有五位同学四门课程(高数、英语、C语言和历史)的成绩,编一程序计算每一位同学的总分,平均分及每门功课的平均分。

#include <stdio.h>
int main()
{
	float x[5][4] = { {100,95,99,90},{99,99,99,99},{89,89,96,79},{65,98,100,100},{87,89,98,100} };
	int i, j, k, m, n, z;
	float a, b, c, d;
	for (i = 0, k = 1; i < 5, k < 6; i++, k++)
	{
		a = 0;
		for (j = 0; j < 4; j++)
		{
			a = a + x[i][j];
		}
		b = a / 4;
		printf("第%d位同学总分为%f,平均分为%f\n", k, a, b);
	}
	for (m = 0, z = 1; m < 4, z < 5; m++, z++)
	{
		c = 0;
		for (n = 0; n < 5; n++)
		{
			c = c + x[n][m];
		}
		d = c / 5;
		printf("第%d门课的平均分是%f\n", z, d);
	}
	return 0;
}

 

定义一个学生成绩结构体类型,其成员包括:学号、姓、性别(char型)、年龄、高数计算机、物理、英语总分平均分。利用学生信息的结构体,使其具有如下功能:1.写输入函数input( )实现从键盘输入数据赋给数组并计算总分平均分写输出函数output( )逐行输出每个学生的信息的函数。2.计算函数calculate(),根据给每个学生4课程成绩计算总分平均分。3.写查询函数seek(),通过键盘输入的学生,查询该学生的各种数据;若此同学不存在,则输出“No found”。如:输入“Marry”,则输出1003号学生各项数据;输入“Machael”,则输出“No found”。4.写按总分的函数sort(),根据每位学生总分排列并将排后的结果输出显示。5.写函数insert()将此学生插入到已有的学生信息数组中并显示插入后所有学生信息。6.写函数del()根据用户输入删除的位置将学生学生信息数组中删除并显示删除后所有学生信息。7.写函数reverse(),要求使用已有的学生内存实现学生数组逆置存储。【实验注意事项】由于该实验是综合设计实验,建议适当多安排一些时间进行熟悉。建议时安排如下:4学时,4学时实验通过PTA在机房现场完成,需要同学们务必做好准备,提前进行算法的思考设计。【实验提示】存储结构:#define N 1000 //学生可能达到的最大长度typedef struct student{ int num; //学号char name[20]; //姓char sex; //性别(char型,f表示女,m表示男)int age; //年龄 int score[4];//四门课程高数计算机、物理、英语float sum; //总分float ave; //平均分}student;char course[4][20]={"高数","计算机","物理","英语"};函数接口:void input(student stu[],int n);//从键盘输入数据赋给数组并计算总分平均分其中`stu[]` 是创建的学生信息数组;`n` 是学生的总人数。void output(student stu[],int n);//逐行输出每个学生的信息其中`stu[]` 是创建的学生信息数组;`n` 是学生的总人数。void calculate(student *p,int n);//计算4课程总分平均分其中`p`是指向要操作的学生数组的指针;`n` 是学生的总人数。void seek_name(student stu[],int n,char *name);//根据学生进行查找其中` stu[] ` 是创建的学生信息数组;`n` 是学生的总人数;` name `是待查找的学生。void sort(student stu[],int n);//根据每位学生总分排列并将排后的结果输出显示其中`stu[]` 是创建的学生信息数组;`n` 是学生的总人数。void insert(student *p,int *m,int index,student s);//在指定位置插入一个学生并显示所有学生信息其中`p` 是指向要操作的学生数组的指针;`m` 是指向学生的总人数的指针;`index`是插入的位置;`s`是待插入的一个学生信息。void del(student *p,int *m,int index);//在指定位置删除一个学生并显示所有学生信息其中`p` 是指向要操作的学生数组的指针;`m` 是指向学生的总人数的指针;`index`是删除的位置。void reverse(student stu[],int n);//学生数组逆置存储,要求使用已有的学生内存其中`stu[]` 是创建的学生信息数组;`n` 是学生的总人数。输入样例:第一行输入学生的个数n的值,后续输入n行学生的信息(学号、姓、性别、年龄、高数成绩计算成绩、物理成绩英语成绩),每个学生信息占一行,学号、姓、性别、年龄、高数成绩计算成绩、物理成绩英语成绩用空格分隔,英语成绩之后没有空格。51001 Jack f 20 85 96 77 841002 Sam m 19 85 74 96 841003 Marry f 21 84 95 78 891004 David m 20 98 94 87 821005 Susan f 21 77 84 89 91 输出样例:总计n行,显示n个学生的信息(号、姓、性别、年龄、高数成绩计算成绩、物理成绩英语成绩),每个学生信息占一行,学号、姓、性别、年龄、高数成绩计算成绩、物理成绩英语成绩总分平均分用空格分隔。其中总分平均分输出保留两位小数。1001 Jack f 20 85 96 77 84 0.00 0.001002 Sam m 19 85 74 96 84 0.00 0.001003 Marry f 21 84 95 78 89 0.00 0.001004 David m 20 98 94 87 82 0.00 0.001005 Susan f 21 77 84 89 91 0.00 0.00
最新发布
11-27
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值