/顺序表实战1:求奇数乘积
//给你n个整数,求他们中所有奇数的乘积
//通常做题无需写模板,顺序表就是数组
#include <iostream>
using namespace std;
int a[10000];
int main() {
int n;
while (cin >> n) {
for (int i = 0; i < n; ++i) {
int x;
cin >> x;
a[i] = x;
}
int prod = 1;
for (int i = 0; i < n; ++i) {
int val = a[i];
if (val % 2 == 1) {
prod = prod * val;
}
}
cout << prod << endl;
}
return 0;
}
实战2和3需要使用Day1的模板做
//顺序表实战2:数值统计
//统计所给的n个数中,负数,零和正数的个数
#include <iostream>
using namespace std;
int main() {
int n;
while (cin >> n && n) {
SequentialList s;
initalizeList(&s, 1);
for (int i = 0; i < n; ++i) {
eleType x;
cin >> x;
insert(&s, i, x);
}
int pcnt = 0, zcnt = 0, ncnt = 0;
for (int i = 0; i < size(&s); ++i) {
eleType ele = getElement(&s, i);
if (ele > 1e-8) {
++pcnt;
}
else if (ele < -1e-8) {
++ncnt;
}
else {
++zcnt;
}
}
cout << ncnt << zcnt << pcnt << endl;
}
return 0;
}
//顺序表实战3:青年歌手大赛
//评委给选手打分,规则为去掉一个最高分和一个最低分,然后计算平均值,输出某选手的得分
int main() {
int n;
while (cin >> n) {
SequentialList s;
initalizeList(&s, 1);
for (int i = 0; i < n; ++i) {
eleType ele;
cin >> ele;
insert(&s, i, ele);
}
eleType eMax = -1000000000, eMin = 10000000000;
eleType eSum = 0;
for (int i = 0; i < size(&s); ++i) {
eleType ele = getElement(&s, i);
if (ele > eMax) eMax = ele;
if (ele < eMin) eMin = ele;
eSum += ele;
}
eSum -= eMax;
eSum -= eMin;
eSum /= (n - 2);
printf("%.2lf\n", eSum);
}
return 0;
}