程序设计实验 实验七T1

1)设计一个保存学生成绩信息的结构,包括学号、姓名、课程名、
平时成绩、考试成绩、总评成绩。分别用函数实现以下功能:

①输入n个学生的信息(平时和考试成绩)
②要求计算并输出学生的总分(平时20%,考试80%)并输出;
③输出总分最高和最低的学生信息。
 

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include<string.h>
typedef struct student
{
    char stu_number[20]; 
	char classname[20];
    char stu_name[20];
    float usual_mark;
    float exam_mark;
    float overall_mark; 
   
}Student;
void inputInformation(Student*stus,int N)         
{
	printf("输入各学生学号,姓名,课程名,该门课平时、考试成绩(中间用空格隔开):\n");
	int i;
	for(i=0;i<N;i++){
		scanf("%s %s %s %f %f",stus[i].stu_number,stus[i].stu_name,stus[i].classname,&stus[i].usual_mark,&stus[i].exam_mark);
	}
}

void outputInformation(Student *stus,int N)
{
	int i,m,n;
	float max=0,min=100;
	printf("学号\t姓名\t课程名\t\t平时成绩\t考试成绩\t总评\n");
	for(i=0;i<N;i++){
		
		stus[i].overall_mark=stus[i].usual_mark*0.2+stus[i].exam_mark*0.8;
		printf("%s\t%s\t%s\t%.2f\t\t%.2f\t\t%.2f\n",stus[i].stu_number,stus[i].stu_name,stus[i].classname,stus[i].usual_mark,stus[i].exam_mark,stus[i].overall_mark); 
		
		if(max<stus[i].overall_mark){
			max=stus[i].overall_mark;
			m=i;
		}
		if(min>stus[i].overall_mark){
			min=stus[i].overall_mark;
			n=i;
		}
	}
	printf("************总评最低学生信息如下************\n");
	printf("学号\t姓名\t课程名\t\t平时成绩\t考试成绩\t总评\n");
	printf("%s\t%s\t%s\t%.2f\t\t%.2f\t\t%.2f\n",stus[n].stu_number,stus[n].stu_name,stus[n].classname,stus[n].usual_mark,stus[n].exam_mark,stus[n].overall_mark);
	printf("************总评最高学生信息如下************\n");
	printf("学号\t姓名\t课程名\t\t平时成绩\t考试成绩\t总评\n");
	printf("%s\t%s\t%s\t%.2f\t\t%.2f\t\t%.2f\n",stus[m].stu_number,stus[m].stu_name,stus[m].classname,stus[m].usual_mark,stus[m].exam_mark,stus[m].overall_mark);
}
int main()
{
    Student stus[200];                 
    int N;
    printf("学生人数N=");
    scanf("%d",&N);
    inputInformation(stus,N);
    printf("全部学生、总评最低和最高学生信息如下:\n");
    outputInformation(stus,N);
    return 0;
}

运行结果:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值