[good]c语言数组的运算
#include <stdio.h> #include <stdlib.h> #include <time.h> #define MAX 10 int **createRandom2DArray(int rows, int cols) { srand(time(NULL)); // 初始化随机数生成器 int **arr = (int **)(malloc(sizeof(int *) * rows)); if (arr == NULL) { printf("Memory allocation failed.\n"); exit(1); } for (int i = 0; i < rows; i++) { arr[i] = (int *)(malloc(sizeof(int) * cols)); if (arr[i] == NULL) { printf("Memory allocation failed.\n"); exit(1); } for (int j = 0; j < cols; j++) { arr[i][j] = rand() % 100; // 生成一个0到99的随机数 } } return arr; } int *create1DArray(int size) { int i; int *arr = (int *)(malloc(sizeof(int) * size)); for (i = 0; i < size; i++) { arr[i] = 0; } return arr; } int *create2DArray(int rows, int cols) { int i, j; int **arr = (int **)(malloc(sizeof(int *) * rows)); if (arr == NULL) { printf("Error allocating memory\n"); exit(1); } for (i = 0; i < rows; i++) { arr[i] = (int *)(malloc(sizeof(int) * cols)); if (arr[i] == NULL) { printf("Error allocating memory\n"); exit(1); } for (j = 0; j < cols; j++) { arr[i][j] = 0; } } return arr; } int *transTo1DOnesArray(int *arr, int size) { int i; for (i = 0; i < size; i++) { arr[i] = 1; } return arr; } int **transTo2DOnesArray(int **arr, int rows, int cols) { int i, j; for (i = 0; i < rows; i++) { for (j = 0; j < cols; j++) { if (i == j) { arr[i][j] = 1; } } } return arr; } int sum1DArray(const int *arr, const int size) { int i = 0; int sum = 0; for (i = 0; i < size; i++) { sum += arr[i]; } return sum; } int sum2DArray(const int **arr, const int rows, const int cols) { int sum = 0; int i = 0, j = 0; for (i = 0; i < rows; i++) { for (j = 0; j < cols; j++) { sum += arr[i][j]; } } return sum; } int sum2DArrayByPointers(int *start, int *end) { int sum = 0; int *p = start; while (p < end) { sum += *p; p++; } return sum; } void print2DArray(int **p, int rows, int cols) { printf("2D Array:\n"); for (int i = 0; i < rows; i++) { printf("["); for (int j = 0; j < cols; j++) { printf("%d", p[i][j]); if (j != cols - 1) { printf(", "); } } printf("]\n"); } } void print1DArray(int *p, int size) { printf("Array: ["); for (int i = 0; i < size; i++) { printf("%d", p[i]); // 不在最后一个元素后面打印逗号 if (i != size - 1) { printf(", "); } } printf("]\n"); } int **transpose2DArray(int **p, int rows, int cols) { int **p_trans = (int **)malloc(sizeof(int *) * cols); if (p_trans == NULL) { printf("malloc failed\n"); exit(1); } for (int i = 0; i < cols; i++) { p_trans[i] = (int *)malloc(sizeof(int) * rows); if (p_trans[i] == NULL) { printf("malloc failed\n"); exit(1); } } for (int i = 0; i < rows; i++) { for (int j = 0; j < cols; j++) { p_trans[j][i] = p[i][j]; } } return p_trans; } int main() { int *p_arr1d = create1DArray(10); print1DArray(p_arr1d, 10); int rows = 3; int cols = 4; int **p_arr2d = create2DArray(rows, cols); print2DArray(p_arr2d, rows, cols); int sum2 = 0; int *p1darr_ones = transTo1DOnesArray(p_arr1d, 10); print1DArray(p1darr_ones, 10); int **p2darr_ones = transTo2DOnesArray(p_arr2d, rows, cols); print2DArray(p2darr_ones, rows, cols); int sum1d = sum1DArray(p1darr_ones, 10); int sum2d = sum2DArray(p2darr_ones, rows, cols); printf("sum1d=%d, sum2d=%d\n", sum1d, sum2d); int **p2d = createRandom2DArray(3, 5); print2DArray(p2d, 3, 5); int **p2d_tr = transpose2DArray(p2d, 3, 5); print2DArray(p2d_tr, 5, 3); // free memory free(p_arr1d); for (int i = 0; i < rows; i++) { free(p_arr2d[i]); } free(p_arr2d); printf("all done"); return 0; }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
2021-11-29 vim的使用技巧