第四讲-数组 习题
737. 数组替换
//
// Created by lanys on 2024/3/29.
// 纯C版
include <iostream>
include <cstdio>
using namespace std;
int main() {
int a[10];
for (int i = 0; i < 10; i++) scanf("%d", &a[i]);
for (int i = 0; i < 10; i++) {
if (a[i] <= 0) a[i] = 1;
}
for (int i = 0; i < 10; i++) printf("X[%d] = %d\n", i, a[i]);
return 0;
}
738. 数组填充
//
// Created by lan on 2024/3/29.
// 数组填充
#include <cstdio>
int main() {
int a[10];
// 给数组第一个元素赋值
scanf("%d", &a[0]);
// 将之后的每个元素都乘以前一个元素的2倍
for (int i = 1; i < 10; i++) a[i] = a[i - 1] * 2;
for (int i = 0; i < 10; i++) printf("N[%d] = %d\n", i, a[i]);
return 0;
}
739. 数组选择
//
// Created by lan on 2024/3/29.
// 数组选择
#include <cstdio>
int main() {
// 定义数组
double a[100];
// 读入一百个数
for (int i = 0; i < 100; i++) scanf("%lf", &a[i]);
for (int i = 0; i < 100; i++) {
// 将所有不大于10的数找出来并输出
if (a[i] <= 10) printf("A[%d] = %.1lf \n", i, a[i]);
}
return 0;
}
740. 数组变换
//
// Created by lan on 2024/3/30.
// 数组变换
#include <cstdio>
#include <algorithm>
using namespace std;
int main() {
int a[20];
for (int i = 0; i < 20; i++) scanf("%d", &a[i]);
// 反转数组
reverse(a, a + 20);
for (int i = 0; i < 20; i++) printf("N[%d] = %d\n", i, a[i]);
return 0;
}
741. 斐波那契数列
//
// Created by lan on 2024/3/30.
// 斐波那契数列
#include<cstdio>
#include <iostream>
using namespace std;
int main() {
int n;
cin >> n;
// 小心整数溢出
long long f[61] = {0};
f[0] = 0, f[1] = 1;
int x;
while (n--) {
cin >> x;
// 记住i从2开始,因为前两项已经定义。
for (int i = 2; i <= x; i++) {
f[i] = f[i - 1] + f[i - 2];
}
printf("Fib(%d) = %lld\n", x, f[x]);
}
return 0;
}
742. 最小数和它的位置
//
// Created by lan on 2024/3/30.
// 最小数和它的位置
#include <cstdio>
int main() {
int n;
scanf("%d", &n);
// 数组直接定义1000,防止数据不够存
int a[1001] = {0};
// 将数据循环输入数组
for (int i = 0; i < n; i++) scanf("%d", &a[i]);
// 先将最小值定义为a[0],下标也为0
int min = a[0], index = 0;
// 将a[0]与数组中的元素进行比较,如果比min大,就将此数的数据赋值给min,并记录下标index
for (int i = 1; i < n; i++) {
if (min > a[i]) {
min = a[i];
index = i;
}
}
// 最后输出
printf("Minimum value: %d\n", min);
printf("Position: %d\n", index);
return 0;
}
743. 数组中的行
//
// Created by lan on 2024/3/29.
// 数组中的行
#include <cstdio>
using namespace std;
int main() {
double a[12][12];
int x;
char y;
scanf("%d\n%c", &x, &y);
// 输入每一个元素
for (int i = 0; i < 12; i++) {
for (int j = 0; j < 12; j++) {
scanf("%lf", &a[i][j]);
}
}
// 定义和跟平均数
double avg, sum = 0;
for (int i = 0; i < 12; i++) sum += a[x][i];
avg = sum / 12;
// 根据y的结果进行输出
if (y == 'S') printf("%.1lf", sum);
else if (y == 'M') printf("%.1lf", avg);
return 0;
}
744. 数组中的列
//
// Created by lan on 2024/3/29.
// 数组中的列
#include <cstdio>
int main() {
double a[12][12];
int n;
char c;
// 输入要求的第n列,和条件
scanf("%d\n%c", &n, &c);
// 循环输入所有的数据
for (int i = 0; i < 12; i++) {
for (int j = 0; j < 12; j++) {
scanf("%lf", &a[i][j]);
}
}
// 定义sum和avg
double sum = 0, avg;
// 这里注意是n列,不是n行,很容易写错的
for (int i = 0; i < 12; i++) sum += a[i][n];
avg = sum / 12;
if (c == 'S') printf("%.1lf", sum);
else printf("%.1lf", avg);
return 0;
}
745. 数组的右上半部分
//
// Created by lan on 2024/3/29.
// 数组的右上半部分
#include <cstdio>
int main() {
char c;
scanf("%c", &c);
double a[12][12];
for (int i = 0; i < 12; i++) {
for (int j = 0; j < 12; j++) {
scanf("%lf", &a[i][j]);
}
}
double sum = 0;
int count = 0;
for (int i = 0; i < 12; i++) {
for (int j = i + 1; j < 12; j++) {
count++;
sum += a[i][j];
}
}
if (c == 'S') printf("%.1lf", sum);
else printf("%.1lf", sum / count);
return 0;
}
746. 数组的左下半部分
//
// Created by lan on 2024/3/30.
// 数组的左下半部分
#include <iostream>
#include <cstdio>
using namespace std;
int main() {
char c;
cin >> c;
double a[12][12];
for (int i = 0; i < 12; i++) {
for (int j = 0; j < 12; j++) {
cin >> a[i][j];
}
}
double count = 0, sum = 0;
for (int i = 0; i <= 11; i++) {
for (int j = 0; j <= i - 1; j++) {
count += 1;
sum += a[i][j];
}
}
if (c == 'S') printf("%.1lf", sum);
else printf("%.1lf", sum / count);
return 0;
}
747. 数组的左上半部分
//
// Created by lanys on 2024/3/29.
// 数组的左上半部分
#include <cstdio>
int main() {
char c;
scanf("%c", &c);
double a[12][12];
for (int i = 0; i < 12; i++) {
for (int j = 0; j < 12; j++) {
scanf("%lf", &a[i][j]);
}
}
double sum = 0;
int count = 0;
for (int i = 0; i < 12; i++) {
for (int j = 0; j <= 10 - i; j++) {
count++;
sum += a[i][j];
}
}
if (c == 'S') printf("%.1lf", sum);
else printf("%.1lf", sum / count);
return 0;
}
748. 数组的右下半部分
//
// Created by lan on 2024/3/30.
// 数组的右下半部分
#include <cstdio>
int main() {
double m[12][12];
char c;
scanf("%c", &c);
for (int i = 0; i < 12; i++) {
for (int j = 0; j < 12; j++) {
scanf("%lf", &m[i][j]);
}
}
double count = 0, sum = 0;
for (int i = 1; i <= 11; i++) {
for (int j = 12 - i; j <= 11; j++) {
sum += m[i][j];
count += 1;
}
}
if (c == 'S') printf("%.1lf", sum);
else{ printf("%.1lf", sum / count);}
return 0;
}
749. 数组的上方区域
//
// Created by lan on 2024/3/29.
// 数组的上方区域
#include <cstdio>
int main() {
char c;
scanf("%c", &c);
double a[12][12];
for (int i = 0; i < 12; i++) {
for (int j = 0; j < 12; j++) {
scanf("%lf", &a[i][j]);
}
}
double sum = 0;
int count = 0;
for (int i = 0; i < 5; i++) {
for (int j = i + 1; j <= 10 - i; j++) {
count++;
sum += a[i][j];
}
}
if (c == 'S') printf("%.1lf", sum);
else printf("%.1lf", sum / count);
return 0;
}
750. 数组的下方区域
//
// Created by lan on 2024/3/30.
// 数组的下方区域
#include<cstdio>
#include <iostream>
using namespace std;
int main() {
char c;
cin >> c;
double a[12][12];
for (int i = 0; i < 12; i++) {
for (int j = 0; j < 12; j++) {
cin >> a[i][j];
}
}
double sum = 0, count = 0;
for (int i = 7; i <= 11; i++) {
for (int j = 12 - i; j <= i - 1; j++) {
sum += a[i][j];
count += 1;
}
}
if (c == 'S') printf("%.1lf", sum);
else printf("%.1lf", sum / count);
return 0;
}
751. 数组的左方区域
//
// Created by lan on 2024/3/29.
// 数组的左方区域
#include <cstdio>
int main() {
char c;
scanf("%c", &c);
double a[12][12];
for (int i = 0; i < 12; i++) {
for (int j = 0; j < 12; j++) {
scanf("%lf", &a[i][j]);
}
}
int count = 0;
double sum = 0;
for (int i = 1; i <= 5; i++) {
for (int j = 0; j <= i - 1; j++) {
count++;
sum += a[i][j];
}
}
for (int i = 6; i <= 10; i++) {
for (int j = 0; j <= 10 - i; j++) {
count++;
sum += a[i][j];
}
}
if (c == 'S') printf("%.1lf", sum);
else printf("%.1lf", sum / count);
return 0;
}
###752. 数组右方区域
//
// Created by lan on 2024/3/30.
// 数组右方区域
#include <iostream>
#include <cstdio>
using namespace std;
int main() {
char c;
cin >> c;
double a[12][12];
for (int i = 0; i < 12; i++) {
for (int j = 0; j < 12; j++) {
cin >> a[i][j];
}
}
double count = 0, sum = 0;
for (int i = 1; i <= 5; i++) {
for (int j = 12 - i; j <= 11; j++) {
count += 1;
sum += a[i][j];
}
}
for (int i = 6; i <= 10; i++) {
for (int j = i + 1; j <= 11; j++) {
count += 1;
sum += a[i][j];
}
}
if (c == 'S') printf("%.1lf", sum);
else printf("%.1lf", sum / count);
return 0;
}
753. 平方矩阵1
// 平方矩阵1
#include <iostream>
using namespace std;
int main() {
int n;
while (cin >> n, n) {
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= n; j++) {
int up = i, down = n - i + 1, left = j, right = n - j + 1;
cout << min(min(up, down), min(left, right)) << " ";
}
cout << endl;
}
cout << endl;
}
return 0;
}
754. 平方矩阵2
//
// Created by lan on 2024/3/31.
// 平方矩阵2
#include <iostream>
using namespace std;
int q[100][100];
int main() {
int n;
while (cin >> n, n) {
for (int i = 0; i < n; i++) {
// 将对角线全都赋值为1
q[i][i] = 1;
for (int j = i + 1, k = 2; j < n; j++, k++) q[i][j] = k;
for (int j = i + 1, k = 2; i < n; j++, k++) q[j][i] = k;
}
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) cout << q[i][j] << " ";
cout << endl;
}
cout << endl;
}
return 0;
}
755. 平方矩阵3
// Created by lan on 2024/3/31.
// 平方矩阵3
#include <iostream>
using namespace std;
int main() {
int n;
while (cin >> n, n) {
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
int v = 1;
for (int k = 0; k < i + j; k++) v *= 2;
cout << v << " ";
}
cout << endl;
}
cout << endl;
}
return 0;
}
756. 蛇形矩阵
//
// Created by lan on 2024/3/31.
// 蛇形矩阵
#include <iostream>
using namespace std;
int res[100][100];
int main() {
int n, m;
cin >> n >> m;
int dx[] = {0, 1,0, -1}, dy[] = {1, 0, -1, 0};
for (int x = 0, y = 0, d = 0, k = 1; k <= n * m; k++) {
res[x][y] = k;
int a = x + dx[d], b = y + dy[d];
if (a < 0 || a >= n || b < 0 || b >= m || res[a][b]) {
d = (d + 1) % 4;
a = x + dx[d], b = y + dy[d];
}
x = a, y = b;
}
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) cout << res[i][j] << " ";
cout << endl;
}
return 0;
}