3.4.2思考题

输入一些数,统计个数

点击查看代码
#include<stdio.h>

int main()
{
	int cnt = 0, tmp;
	while(scanf("%d", &tmp) == 1)
		cnt++;
	printf("%d\n", cnt); 
	return 0; 
}

输入一些数,求最大值、最小值和平均数

点击查看代码
#include<stdio.h>
#define maxn 100000000

int main()
{
	int tot = 0, cnt = 0, tmp, max = -maxn, min = maxn;
	while(scanf("%d", &tmp) == 1)
	{
		cnt++;
		tot += tmp;
		if(max < tmp) max = tmp;
		if(min > tmp) min = tmp;
	}
	printf("%d %d %f\n", min, max, (double)tot/cnt); 
	return 0; 
}

输入一些数,那两个数最接近

点击查看代码
#include<stdio.h>
#define maxn 100000
#define p(a, b) (a>b)?(a-b):(b-a)
int a[105];

int main()
{
	int cnt = 0, del = maxn, n, m;
	while(scanf("%d", &a[cnt]) == 1) cnt++;
	for(int i = 0; i < cnt - 1; i++)
	{
		for(int j = i + 1; j < cnt; j++)
		{
			if(del > p(i, j))
			{
				del = p(i, j);
				n = i;
				m = j;
			}
		}
	}
	printf("%d %d\n", n, m);
	return 0;
}

输入一些数,求第二大的值

点击查看代码
#include<stdio.h>

int main()
{
	int max1, max2, tmp, flag = 1;
	while(scanf("%d", &tmp) == 1)
	{
		if(flag)
		{
			max1 = tmp;
			max2 = tmp;
			flag = 0;
			continue;
		}
		if(tmp > max1)
		{
			max2 = max1;
			max1 = tmp;	
		}
		else if(tmp > max2) max2 = tmp;
	}
	printf("%d\n", max2);
	return 0;
}

输入一些数,求他们的方差

点击查看代码
#include<stdio.h>
int a[105];

int main()
{
	int cnt = 0, tot = 0;
	double ans = 0;
	while(scanf("%d", &a[cnt++]) == 1) 
		tot += a[cnt-1];
	for(int i = 0; i < cnt-1; i++)
		ans += ((double)a[i] - (double)tot/(cnt-1))*((double)a[i] - (double)tot/(cnt-1));
	printf("%f\n", ans);
	return 0;
}

总结:是否需要保存数据,其实质就是判断这些数据之间的关联性,如果其中的每个成员都需要与每位成员比较一番才能得出答案是强关联,此时一般需要将所有的数据进行存储;如果只是少数几个数据需要与大多数的成员进行比较,此时一般有方法使得这一种弱关联不需要一定存储所有的数据成员。

posted @   banyanrong  阅读(40)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示