#算法竞赛入门

3.4.2 思考题

必要的储存量

 #include <stdio.h>
 #include <stdlib.h> 
 # define maxn 1000
void Count()/1 统计个数
{
	int ct = 0, n;
	while(1 == scanf("%d", &n))
	{
		ct ++;
	}
	printf("%d", ct);
}

void MaxMinAve()//题2 求最大值,最小值,平均数
{
	int max, min, sum = 0, n, ct = 0, first = 1;
	while(1)
	{
	while(1 == scanf("%d", &n))
	{
		ct ++;
		if(first) {max = min = n; first = 0;}
		if(n > max) max = n;
		if(n < min) min = n;
		sum += n;
	}
	printf("max = %d\nmin = %d\naverage = %.3f\n", max, min, sum*1.0/ct);
	}
}

void nearest()//题三
{
	int  num[maxn], n, i = 0;
	while(1 == scanf("%d", &num[i]))
		i++;
	int j, k, distance;
	int a = num[0], b = num[1];
	distance = abs(num[0] - num[1]);
	for(j = 0; j < i - 1; j++)
		for(k = j + 1; k < i; k++)
			{
				if(abs(num[k] - num[j]) < distance)
				{
					distance = abs(num[k] - num[j]);
					a = num[j];
					b = num[k];
				}
			} 
	printf("two nearest numbers : %d %d\ndistance:%d", a, b, abs(a - b));		
	
}

void second()//题四
{
	int max, smax, n, first = 1;
	while(1 == scanf("%d", &n))
	{
		if(first) 
		{
			max = smax = n;
			 first =0;
		}
		if(n > max)
		{
			smax = max;
			max = n;
		}
		if(n < max && n > smax)
		{
			smax = n;
		}
	}
	printf("max:%d\nsmax:%d", max, smax);
}

void variance()//题五
{
	int num[maxn], ct = 0, n;
	double average = 0.0, sum =0.0, psum = 0.0;
	while(1 == scanf("%d", &n))
	{
		num[ct++] = n;		
		sum += n;	
	}
	average = sum*1.0/ct;
	int i; 
	for(i = 0; i < ct; i++)//因为这后面还需要用到前面的数字,所以得设置数组来储存,也叫回溯信息 
	{
		psum += (num[i] - average) * (num[i] - average);
	}
	double var;
	var = psum / ct;
	printf("variance:%.3f", var);
	
}

void  LessThanAverage()//题六
{
	int num[maxn], n, ct = 0, sum = 0;
	double ave = 0.0;
	while(1 == scanf("%d", &n))
	{
		num[ct++] = n;
		sum += n; 
	}
	ave = sum*1.0/ct;
	int i, lct = 0;
	for(i = 0; i < ct; i++)
	{
		if(num[i] < ave)
		{
			lct++;
		}
	}
	printf("%d numbers  less than average %.3f", lct, ave);
	
	
 } 



int main()
{
//	Count();
//	MaxMinAve();
//	nearest();
//  second();
//  variance();
	LessThanAverage();
	return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值