第一部分 C++语言
第五章 数组
第一节 一维数组
1102 与指定数字相同的数的个数
#include <iostream>
using namespace std;
int main() {
int n, m, a[105], cnt = 0;
cin >> n;
for (int i = 0; i < n; i ++ ) cin >> a[i];
cin >> m;
for (int i = 0; i < n; i ++ ) {
if (a[i] == m) cnt ++;
}
cout << cnt << endl;
return 0;
}
1103 陶陶摘苹果
#include <iostream>
using namespace std;
int main() {
int a[10], h, cnt = 0;
for (int i = 0; i < 10; i ++ ) cin >> a[i];
cin >> h;
for (int i = 0; i < 10; i ++ ) {
if (h + 30 >= a[i]) cnt ++;
}
cout << cnt << endl;
return 0;
}
1104 计算书费
#include <cstdio>
using namespace std;
int main() {
int qty;
double ttl, price[10] = {28.9, 32.7, 45.6, 78, 35, 86.2, 27.8, 43, 56, 65};
for (int i = 0; i < 10; i ++ ) {
scanf("%d", &qty);
ttl += price[i] * qty;
}
printf("%.1lf", ttl);
return 0;
}
1105 数组逆序重存放
#include <iostream>
using namespace std;
int main() {
int n, a[105];
cin >> n;
for (int i = 1; i <= n; i ++ ) cin >> a[i];
for (int i = n; i >= 1; i -- ) cout << a[i] << ' ';
return 0;
}
1106 年龄与疾病
#include <cstdio>
using namespace std;
int main() {
int n, age, c[4] = {};
scanf("%d", &n);
for (int i = 0; i < n; i ++ ) {
scanf("%d", &age);
if (age >=0 && age <=18) c[0] ++;
else if (age <= 35) c[1] ++;
else if (age <= 60) c[2] ++;
else c[3] ++;
}
printf("%.2lf%%\n", 100.0 * c[0] / n);
printf("%.2lf%%\n", 100.0 * c[1] / n);
printf("%.2lf%%\n", 100.0 * c[2] / n);
printf("%.2lf%%\n", 100.0 * c[3] / n);
return 0;
}
1107 校门外的树
#include <iostream>
using namespace std;
int main() {
int l, m, a[10005], cnt = 0;
cin >> l >> m;
for (int i = 0; i <= l; i ++ ) a[i] = 1;
while (m--) {
int s, e;
cin >> s >> e;
for (int i = s; i <= e; i ++ ) a[i] = 0;
}
for (int i = 0; i <= l; i ++ ) {
if (a[i] == 1) cnt ++;
}
cout << cnt << endl;
return 0;
}
1108 向量点积计算
#include <iostream>
using namespace std;
int main() {
int n, a[1005], b[1005], ans = 0;
cin >> n;
for (int i = 0; i < n; i ++ ) cin >> a[i];
for (int i = 0; i < n; i ++ ) cin >> b[i];
for (int i = 0; i < n; i ++ ) {
ans += a[i] * b[i];
}
cout << ans << endl;
return 0;
}
1109 开关灯
#include <iostream>
using namespace std;
int main() {
int n, m;
bool a[5005];
cin >> n >> m;
for (int i = 1; i <= n; i ++ ) a[i] = 1;
for (int i = 1; i <= m; i ++ ) {
for (int j = 1; j <= n; j ++ ) {
if (j % i == 0) a[j] = !a[j];
}
}
bool flag = true;
for (int i = 1; i <= n; i ++ ) {
if (!a[i]) {
if (flag) {
cout << i;
flag = false;
}
else {
cout << ',' << i;
}
}
}
return 0;
}
1110 查找特定的值
#include <iostream>
using namespace std;
int main() {
int n, x, a[10005];
cin >> n;
for (int i = 1; i <= n; i ++ ) cin >> a[i];
cin >> x;
for (int i = 1; i <= n; i ++ ) {
if (a[i] == x) {
cout << i << endl;
return 0;
}
}
cout << -1 << endl;
return 0;
}
1111 不高兴的津津
#include <iostream>
using namespace std;
int main() {
int a, b, max = 8, day = 0;
for (int i = 1; i <= 7; i ++ ) {
cin >> a >> b;
if (a + b > max) {
max = a + b;
day = i;
}
}
if (day > 0) cout << day << endl;
else cout << 0 << endl;
return 0;
}
1112 最大值和最小值的差
#include <iostream>
#include <algorithm>
using namespace std;
int main() {
int m, x, a[10005], maxx = 0, minn = 10000;
cin >> m;
for (int i = 0; i < m; i ++ ) {
cin >> x;
maxx = max(maxx, x);
minn = min(minn, x);
}
cout << maxx - minn << endl;
return 0;
}
1113 不与最大数相同的数字之和
#include <iostream>
#include <algorithm>
using namespace std;
int main() {
int n, a[105], maxx = 0, sum = 0;
cin >> n;
for (int i = 0; i < n; i ++ ) {
cin >> a[i];
maxx = max(maxx, a[i]);
}
for (int i = 0; i < n; i ++) {
if (a[i] != maxx) sum += a[i];
}
cout << sum << endl;
return 0;
}
1114 白细胞计数
#include <cstdio>
#include <algorithm>
#include <cmath>
using namespace std;
int main() {
int n;
double a[305], avg, diff = 0;
scanf("%d", &n);
scanf("%lf", &a[0]);
double minn = a[0], maxx = a[0], sum = a[0];
for (int i = 1; i < n; i ++ ) {
scanf("%lf", &a[i]);
maxx = max(maxx, a[i]);
minn = min(minn, a[i]);
sum += a[i];
}
avg = (sum - maxx - minn) / (n - 2);
bool flag1 = true, flag2 = true;
for (int i = 0; i < n; i ++ ) {
if (a[i] == maxx && flag1) {
flag1 = false;
}
else if (a[i] == minn && flag2) {
flag2 = false;
}
else {
diff = max(diff, abs(a[i] - avg));
}
}
printf("%.2lf %.2lf\n", avg, diff);
return 0;
}
1115 直方图
#include <iostream>
#include <algorithm>
using namespace std;
int n, a[10005], fmax = 0;
int main() {
cin >> n;
for (int i = 0; i < n; i ++ ) {
int t;
cin >> t;
a[t] ++;
fmax = max(fmax, t);
}
for (int i = 0; i <= fmax; i ++ ) cout << a[i] << endl;
return 0;
}
1116 最长平台
#include <iostream>
#include <algorithm>
using namespace std;
int main() {
int n, a, b, cnt = 1, maxx = 0;
cin >> n;
cin >> a;
for (int i = 1; i < n; i ++ ) {
cin >> b;
if (b == a) {
cnt ++;
maxx = max(maxx, cnt);
}
else {
cnt = 1;
}
a = b;
}
cout << maxx << endl;
return 0;
}
1117 整数去重
#include <iostream>
using namespace std;
int main() {
int n, x, a[5005] = {};
cin >> n;
for (int i = 0; i < n; i ++ ) {
cin >> x;
if (!a[x]) {
cout << x << ' ';
a[x] = 1;
}
}
return 0;
}
1118 铺地毯
#include <iostream>
using namespace std;
int main(){
int n, a[10005][4];
cin >> n;
for (int i = 1; i <= n; i ++ ) {
for (int j = 0; j < 4; j ++ ){
cin >> a[i][j];
}
}
int x, y;
cin >> x >> y;
for (int i = n; i >= 1; i -- ) {
if (x >= a[i][0] && x <= a[i][0] + a[i][2] && y >= a[i][1] && y <= a[i][1] + a[i][3]) {
cout << i << endl;
return 0;
}
}
cout << -1 << endl;
return 0;
}
如果您的孩子四年级及以上,对计算机编程感兴趣,且文化课学有余力,欢迎联系客服(微信号:xiaolan7321),参加信息学的学习。我们是专业的信息学竞赛教练,采用线上小班授课的方式,目标是帮助热爱编程的中小学生,在国内外信息学竞赛中取得优秀成绩。
教学特点:
-
线上小班授课,打好代码基础。避免大班课堂上学生要么“跟不上”,要么“吃不饱”的问题。
-
教学经验丰富,熟悉学生的知识结构与学习能力,合理安排进度。
-
以赛代练,通过考级与比赛,不断提高学生能力。