中位数和平均数(题目来源:JLOJ2332)

中位数和平均数(题目来源:JLOJ2332)

Description
通常把在 n 个排好序的数中,位于最中间的数就走“中位数”,这里再规定细一点,如果 n 是奇数,那么最中间的数只有一个,那就是“中位数”,但如果 n 是偶数,那么最中间的数有两个,我们把这两个数的平均数也叫作“中位数”。下面的任务是判断中位数大,还是所有数的平均数大。

Input
输入只有一行,若干个整数,前后两个整数之间用空格隔开,输入以 0 结束。每个整数的范围为 -1000 ~ 1000(含 -1000 和 1000),输入的整数个数不超过2000.

Output
输出只有一行,如果中位数比平均数大,那么输出 Yes,否则输出 No。

Sample Input
200 100 -100 300 400 -200 0

Sample Output
Yes

解题思路:
需要注意整数个数分别为奇数或偶数时中位数的情况,以及平均数和中位数计算的结果可能为浮点型数据,需要将接收平均数和中位数的变量设置为浮点型。
本题运用条件表达式可以减少部分代码量。

C参考程序:

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

int compar(const void* a, const void* b) {
   
	return *(int*)a - *(int*)b;
}

int main() {
   
	int arr[2001];
	int len = 0, sum = 0;
	double avg, mid;
	
	while (scanf("%d", &arr[len]) && arr[len]) {
   
		sum += arr
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值