#include738. 数组填充#include using namespace std; int main() { int a[10]; for (int i = 0; i < 10; i ++ ) { cin >> a[i]; if (a[i] <= 0) a[i] = 1; } for (int i = 0; i < 10; i ++ ) printf("X[%d] = %dn", i, a[i]); return 0; }
#include739. 数组选择#include using namespace std; int main() { int a[10]; cin >> a[0]; for (int i = 1; i < 10; i ++ ) a[i] = a[i - 1] * 2; for (int i = 0; i < 10; i ++ ) printf("N[%d] = %dn", i, a[i]); return 0; }
#include740. 数组变换#include using namespace std; int main() { double a[100]; for (int i = 0; i < 100; i ++ ) cin >> a[i]; for (int i = 0; i < 100; i ++ ) if (a[i] <= 10) printf("A[%d] = %.1lfn", i, a[i]); return 0; }
#include741. 斐波那契数列#include #include using namespace std; int main() { int a[20]; for (int i = 0; i < 20; i ++ ) cin >> a[i]; reverse(a, a + 20); for (int i = 0; i < 20; i ++ ) printf("N[%d] = %dn", i, a[i]); return 0; }
#include742. 最小数和它的位置#include using namespace std; int main() { long long t ,a[61]; a[0] = 0, a[1] = 1; for (int i = 2; i < 61; i ++ ) a[i] = a[i - 1] + a[i - 2]; cin >> t; while (t -- ) { int n; cin >> n; printf("Fib(%d) = %lldn", n, a[n]); } return 0; }
#include743. 数组中的行#include using namespace std; int main() { int a[1001]; int n, pos = 0; cin >> n; cin >> a[0]; for (int i = 1; i < n; i ++ ) { cin >> a[i]; if (a[i] < a[pos]) pos = i; } cout << "Minimum value: " << a[pos] << endl; cout << "Position: " << pos << endl; return 0; }
#include744. 数组中的列#include using namespace std; int main() { double m[12][12]; int l; char t; cin >> l >> t; for (int i = 0; i < 12; i ++ ) for (int j = 0; j < 12; j ++ ) cin >> m[i][j]; double sum = 0; for (int j = 0; j < 12; j ++ ) sum += m[l][j]; if (t == 'S') printf("%.1lfn", sum); else printf("%.1lfn", sum / 12); return 0; }
#include745. 数组的右上半部分#include using namespace std; int main() { double m[12][12]; int c; char t; cin >> c >> t; for (int i = 0; i < 12; i ++ ) for (int j = 0; j < 12; j ++ ) cin >> m[i][j]; double sum = 0; for (int i = 0; i < 12; i ++ ) sum += m[i][c]; if (t == 'S') printf("%.1lfn", sum); else printf("%.1lfn", sum / 12); return 0; }
#include746. 数组的左下半部分#include using namespace std; int main() { double m[12][12]; char t; cin >> t; for (int i = 0; i < 12; i ++ ) for (int j = 0; j < 12; j ++ ) cin >> m[i][j]; double sum = 0; int cnt = 0; for (int i = 0; i < 11; i ++ ) for (int j = i + 1; j < 12; j ++ , cnt ++ ) sum += m[i][j]; if (t == 'S') printf("%.1lfn", sum); else printf("%.1lfn", sum / cnt); return 0; }
#include747. 数组的左上半部分#include using namespace std; int main() { double m[12][12]; char t; cin >> t; for (int i = 0; i < 12; i ++ ) for (int j = 0; j < 12; j ++ ) cin >> m[i][j]; double sum = 0; int cnt = 0; for (int i = 1; i < 12; i ++ ) for (int j = 0; j < i; j ++ , cnt ++ ) sum += m[i][j]; if (t == 'S') printf("%.1lfn", sum); else printf("%.1lfn", sum / cnt); return 0; }
#include748. 数组的右下半部分#include using namespace std; int main() { double m[12][12]; char t; cin >> t; for (int i = 0; i < 12; i ++ ) for (int j = 0; j < 12; j ++ ) cin >> m[i][j]; double sum = 0; int cnt = 0; for (int i = 0; i < 11; i ++ ) for (int j = 0; j < 11 - i; j ++ , cnt ++ ) sum += m[i][j]; if (t == 'S') printf("%.1lfn", sum); else printf("%.1lfn", sum / cnt); return 0; }
#include749. 数组的上方区域#include using namespace std; int main() { double m[12][12]; char t; cin >> t; for (int i = 0; i < 12; i ++ ) for (int j = 0; j < 12; j ++ ) cin >> m[i][j]; double sum = 0; int cnt = 0; for (int i = 1; i < 12; i ++ ) for (int j = 12 - i; j < 12; j ++ , cnt ++ ) sum += m[i][j]; if (t == 'S') printf("%.1lfn", sum); else printf("%.1lfn", sum / cnt); return 0; }
#include750. 数组的下方区域#include using namespace std; int main() { double m[12][12]; char t; cin >> t; for (int i = 0; i < 12; i ++ ) for (int j = 0; j < 12; j ++ ) cin >> m[i][j]; double sum = 0; int cnt = 0; for (int i = 0; i < 5; i ++ ) for (int j = i + 1; j < 11 - i; j ++ , cnt ++ ) sum += m[i][j]; if (t == 'S') printf("%.1lfn", sum); else printf("%.1lfn", sum / cnt); return 0; }
#include751. 数组的左方区域#include using namespace std; int main() { double m[12][12]; char t; cin >> t; for (int i = 0; i < 12; i ++ ) for (int j = 0; j < 12; j ++ ) cin >> m[i][j]; double sum = 0; int cnt = 0; for (int i = 7; i < 12; i ++ ) for (int j = 12 - i; j < i; j ++ , cnt ++ ) sum += m[i][j]; if (t == 'S') printf("%.1lfn", sum); else printf("%.1lfn", sum / cnt); return 0; }
#include752. 数组的右方区域#include using namespace std; int main() { double m[12][12]; char t; cin >> t; for (int i = 0; i < 12; i ++ ) for (int j = 0; j < 12; j ++ ) cin >> m[i][j]; double sum = 0; int cnt = 0; for (int i = 1; i < 11; i ++ ) for (int j = 0; j < min(i, 11 - i); j ++ , cnt ++ ) sum += m[i][j]; if (t == 'S') printf("%.1lfn", sum); else printf("%.1lfn", sum / cnt); return 0; }
#include753. 平方矩阵 I#include using namespace std; int main() { double m[12][12]; char t; cin >> t; for (int i = 0; i < 12; i ++ ) for (int j = 0; j < 12; j ++ ) cin >> m[i][j]; double sum = 0; int cnt = 0; for (int i = 1; i < 11; i ++ ) for (int j = max(12 - i, i + 1); j < 12; j ++ , cnt ++ ) sum += m[i][j]; if (t == 'S') printf("%.1lfn", sum); else printf("%.1lfn", sum / cnt); return 0; }
#include754. 平方矩阵 II#include 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 ++ ) cout << min(min(i, n - i + 1), min(j, n - j + 1)) << ' '; cout << endl; } cout << endl; } return 0; }
#include755. 平方矩阵 III#include 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 ++ ) cout << abs(i - j) + 1 << ' '; cout << endl; } cout << endl; } return 0; }
#include756. 蛇形矩阵#include #include 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 ++ ) cout << (int)pow(2, i + j) << ' '; // cout << (1 << (i + j)) << ' '; cout << endl; } cout << endl; } return 0; }
#include其他知识点#include using namespace std; const int N = 110; int n, m; int a[N][N]; int main() { cin >> n >> m; int dx[] = {0, 1, 0, -1}; int dy[] = {1, 0, -1, 0}; int x = 0, y = 0, d = 0; for (int i = 1; i <= n * m; i ++ ) { a[x][y] = i; int tx = x + dx[d]; int ty = y + dy[d]; if (tx >= n || tx < 0 || ty >= m || ty < 0 || a[tx][ty]) d = (d + 1) % 4; x += dx[d]; y += dy[d]; } for (int i = 0; i < n; i ++ ) { for (int j = 0; j < m; j ++ ) cout << a[i][j] << ' '; cout << endl; } return 0; }
-
一维数组
- 数组定义
int a[100];
- 数组初始化
int a[3] = {0, 1, 2}; int b[] = {0, 1, 2}; // 自动分配大小 int c[4] = {1}; // 长度为 5,没有给出初始值默认为 0 int d[4] = {0}; // 长度为 4,初始值全为 0 // 全局变量 堆区 初始值随机 空间较大 // 局部变量 栈区 初始值为零 空间较小
-
多维数组
- 数组定义
int a[3][4];
- 数组初始化
int a[3][3] = { {1, 2, 3}, {4, 5, 6}, {7, 8, 9} };
-
memset、memcpy
#include
#include using namespace std; int main() { int a[10]; memset(a, 0, sizeof(a)); // 以字节为单位初始化 (0 / -1) memcpy(b, a, sizeof(b)); // 将 a 复制到 b return 0; }
-
浮点数比较
const double eps = 1e-6; if (fabs(a - b) < eps) puts("相等"); else { if (a > b) puts("a > b"); else puts("a < b"); }



