《算法竞赛入门经典》第三章思考题
程序员文章站
2022-06-02 22:14:34
...
参考:https://blog.csdn.net/Artprog/article/details/54791429
第一小题:略
第二小题: 输入一些数,求最大值、最小值和平均数
本题关键是first的设置,使max,min只赋值一次,后置0
我用的是windows64位操作系统,按Ctrl+D回车结束输入
#include <iostream>
using namespace std;
int main()
{
int n,max,min,sum=0,cnt=0,first=1;
double mean = 0;
while (scanf("%d\n",&n)==1)
{
if (first)
{
max = min = n;
first = 0;
}
if (n > max)
{
max = n;
}
if (n<min)
{
min = n;
}
sum += n;
++cnt;
}
mean = sum * 1.0 / cnt;
cout << "最大值:" << max << " " << "最小值:" << min << " " << "平均值:" << mean << endl;
//system("pause");
return 0;
}
第三小题:输入一些数,哪两个数最接近。
这道题,关键是for循环的设置,因为是一维数组,也要用两重循环去遍历,第一个for循环是遍历到 <lenght(array)-1(倒数第二个元素)就停止了,而第二次for是遍历到<lenght(array)(最后一个元素才停止)
#include <iostream>
#include<algorithm>
using namespace std;
int main()
{
int array[100], i, j, len = 0;
while (scanf("%d",&array[len])==1)
{
++len;
}
int a, b;
int distance = abs(array[0]-array[1]);
for (i = 0; i < len-1; i++)
{
for (j = i + 1; j < len; j++)
{
if (abs(array[i]-array[j])<distance)
{
a = array[i];
b = array[j];
distance = abs(array[i] - array[j]);
}
}
}
cout << "这两个数是:" << a << " " << b << ",接近值为:" << distance << endl;
//system("pause");
return 0;
}