研究生复试上机编程练习8

问题描述

从键盘输入n代表有n组数据,在输入第一组数据的个数K和这K个数据的值,随后按同样的方法从键盘输入数据知道第n组,编写函数输出每组数据中低于平均数的个数和具体值

标准输入

2

5

1 3 5 7 12

4

1 2 3 4

标准输出

3

1 3 5

2

1 2

解题思路

a二维数组保存n组数据,sum求每组的累计和
cnt保存每组的数据个数,ans保存每组小于平均数的个数,avg保存每组平均值

先用两层for 保存每组的所有值、平均值以及每组的数据个数(k)

再用两层for 求每组的平均值,这里的平均值使用的double类型

最后两层for 输出每组小于其对应平均值的个数,一次遍历小于该值就输出

记得换行位置别弄错~~~

解题代码

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<math.h>
int main(){
	int i,j,n,k,a[100][100],sum[100]={0},cnt[100]={0},ans[100]={0};
	double avg[100];
	//a二维数组保存n组数据,sum求每组的累计和
	//cnt保存每组的数据个数,ans保存每组小于平均数的个数,avg保存每组平均值
	scanf("%d",&n);
	for(i = 0; i < n; i++){
		scanf("%d",&k);
		cnt[i] = k;
		for(j = 0; j < k; j++){   //输入n组数据保存对应的值
			scanf("%d",&a[i][j]);
			sum[i] += a[i][j];
		}
		avg[i] = sum[i] * 1.0 / cnt[i];
	}
	for(i = 0; i < n; i++)
		for(j = 0; j < cnt[i]; j++)	//求每组数据低于平均值的个数
			if(a[i][j] < avg[i]) ans[i]++;
	//输出结果
			for(i = 0; i < n; i++){
				printf("%d\n",ans[i]);
				for(j = 0; j < cnt[i]; j++){
					if(a[i][j] < avg[i])
						printf("%d ",a[i][j]);
				}
				printf("\n");
			}
	return 0;
}

猜你喜欢

转载自blog.csdn.net/weixin_44572229/article/details/129336417