函数的应用

本文深入探讨了函数在C++、C和MATLAB三种编程语言中的应用,阐述了它们在软件开发中的核心作用,包括代码复用、模块化设计和算法实现。通过实例分析,展示了如何利用函数提升程序效率和可维护性。
/*输入10个学生5门课的成绩,分别用函数实现下列功能:
1、计算每个学生的平均分
2、计算每门课的平均分
3、找出没所有50个分数中最高的分数所对应的学生和课程
4、计算平均分方差*/
#include<stdio.h>
#define M 10
#define N 5
float aveg[N],avg_cou[M];
float score[M][N];
char course[P][Q];
int main(){
	void average(void);	//函数声明
	void input(void);
	void average_course(void);
	void MaxScore(void);
	float s_var(void);
	input();		//函数调用,输入成绩
	average();		//函数调用	求出平均分
	average_course();
	//打印出输入的成绩
	printf("\n NO.\t    物理\t    化学\t    政治\t    生物\t    语文\t    平均分\n");
	for(int i=0;i<M;i++){
		printf("\nNO%2d\t",i+1);
		for(int j=0;j<N;j++){
			printf("%8.2f\t",score[i][j]);
			
		}
		printf("%8.2f",aveg[i]);		//每个学生的平均分
		printf("\n");
	}

	//输出每门课的平均成绩
	printf("\n平均分:\t");
	for(int i=0;i<N;i++){
		printf("%8.2f\t",avg_cou[i]);

	}
	printf("\n");
	MaxScore();
	printf("\n");
	printf("平均分方差为:%8.2f\t",s_var());
	
	
	printf("\t");
	return 0;
}

//输入成绩
void input(){
	for(int i=0;i<M;i++){	
		printf("请输入第%d位学生的成绩:\n",i+1);
		for(int j=0;j<N;j++){
			scanf("%f",&score[i][j]);

		}
	}

}
	
//求每个学生的平均分
void average(){
	float sum;
	for(int i=0;i<M;i++){
		sum=0;
		for(int j=0;j<N;j++){
			sum+=score[i][j];
		}
		aveg[i]=sum/N;		//求出每个学生的平均分,存储在一维数组中
	}
		
}

//计算每门课的平均分
void average_course(){
	float sum;
	for(int i=0;i<N;i++){
		sum=0;
		for(int j=0;j<M;j++){
			sum+=score[j][i];
		}
		avg_cou[i]=sum/M;	//求出每门课程的平均成绩
	}
}

//50个分数中最高的分数所对应的学生和课程
void MaxScore(){
	float max=score[0][0];
	int m=0,n=0;
	for(int i=0;i<M;i++){
		for(int j=0;j<N;j++){
			if(max<=score[i][j]){
				max=score[i][j];
				m=i;
				n=j;

			}
				
		}
	}
	printf("\n最高分是%8.2f,是学号为NO.%d学生,课程是:",score[m][n],m+1);
	switch(n+1){
		case 1:
			printf("物理");break;
		case 2:
			printf("化学");break;
		case 3:
			printf("政治");break;
		case 4:
			printf("生物");break;
		case 5:
			printf("语文");break;
			
	}
}

//计算平均分方差

float s_var(void){
	int i;
	float sumx,sumxn;
	sumx=0.0;
	sumxn=0.0;
	for(i=0;i<N;i++){
		sumx+=aveg[i]*aveg[i];
		sumxn+=aveg[i];
		
	}
	return (sumx/N-(sumxn/N)*(sumxn/N));	//方差公式
}
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值