hdu oj 2023 的自己范的错误

版权声明:本博客为博主原创文章,未经博主允许,禁止转载,谢谢合作。 https://blog.csdn.net/weixin_43971252/article/details/88342489

思路:用二维数组存储学生的成绩,之后单独求平均成绩,各科平均成绩,大于平均成绩的学生数
vs2019运行

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>

int main()
{
	int n, m;

	while (scanf("%d%d", &n, &m) != EOF) {
		double sum1,sum2;
		double **score = (double **)malloc(n * sizeof(double *));  //学生成绩,n个学生,每一个学生都是指针
		double *a = (double *)malloc(sizeof(double)*n);           //每个学生的平均成绩
		double *b = (double *)malloc(sizeof(double)*m);           //每门课的平均成绩
		int num = 0;                                          //大于平均分的人数
		int flag = 0;
		sum1 = sum2 = 0.0;
		for (int i = 0; i < n; i++)
			score[i] = (double *)malloc(sizeof(double) * m);     //每个学生有m门课 , 每一门课都是指针  

		//初始化成绩
		for(int i=0;i<n;i++)
			for (int j = 0; j < m; j++)
			{
				scanf("%lf", &score[i][j]);     
			}

		//求每个学生的平均成绩
		for (int i = 0; i < n; i++) {
			for (int j = 0; j < m; j++) {
				sum1 += score[i][j];                //单独一个学生时,行标不变,列标递增
			}
			a[i] = sum1 / m;
			sum1 = 0.0;    //计算下一个平均值时,清0,避免多加上一次计算的平均值                        
		}

		//每门课的平均成绩
		for (int j = 0; j < m; j++) {
			for (int i = 0; i < n; i++)
				sum2 += score[i][j];              //每一门课的平均分时,列标不变,行标递增
			b[j] = sum2 / n;
			sum2 = 0.0;
		}

		//各科成绩大于平均成绩(b[])学生数
		for (int i = 0; i < n; i++) {
			flag = 0;                       //太关键了,我特么的就这个问题提交了好几次都没过
			for (int j = 0; j < m; j++) {
				if (score[i][j] >= b[j])
					flag++;             //计算大于平均值的科目数
			}
			if (flag == m)             //各科全部大于平均值
				num++;
		}

		for (int i = 0; i < n; i++) {
			if (i > 0)
				printf(" %.2lf", a[i]);
			else 
				printf("%.2lf", a[i]);
		}
		putchar('\n');
		for (int i = 0; i < m; i++) {
			if (i > 0)
				printf(" %.2lf", b[i]);
			else
				printf("%.2lf", b[i]);
		}
		putchar('\n');
		printf("%d\n", num);
		putchar('\n');

		for (int i = 0; i < n; i++)
			free(score[i]);
		free(score);
		free(a);
		free(b);
	}

	return 0;
}

debug: 计算平均值时sum1和sum2没求完一次清零,计算优秀学生数时flag也要清0。 mmp这个问题耗费了我1个小时左右。

猜你喜欢

转载自blog.csdn.net/weixin_43971252/article/details/88342489