C语言二维数组随机替换元素:实战演练
C语言二维数组随机替换元素:实战演练
简介本篇博客将带你学习如何使用C语言查找二维数组中的零元素,并随机选择其中一个替换为2。我们将通过一个完整的代码示例来演示整个过程,并提供详细的代码解释,帮助你理解每个步骤的含义。
代码示例c#include <stdio.h>#include <stdlib.h>#include <time.h>
typedef struct { int row; int col;} Position;
int main() { int m, n; printf('请输入数组的行数和列数: '); scanf('%d %d', &m, &n);
int board[m][n]; printf('请输入数组元素:
'); for (int i = 0; i < m; i++) { for (int j = 0; j < n; j++) { scanf('%d', &board[i][j]); } }
Position positions[m * n]; int count = 0; for (int i = 0; i < m; i++) { for (int j = 0; j < n; j++) { if (board[i][j] == 0) { positions[count].row = i; positions[count].col = j; count++; } } }
if (count > 0) { srand(time(NULL)); int index = rand() % count; board[positions[index].row][positions[index].col] = 2; } else { printf('没有找到零元素,程序退出。
'); return 1; }
printf('修改后的数组为:
'); for (int i = 0; i < m; i++) { for (int j = 0; j < n; j++) { printf('%d ', board[i][j]); } printf(' '); }
return 0;}
代码解释
-
包含头文件: *
stdio.h: 提供输入输出函数,如printf和scanf。 *stdlib.h: 提供内存分配函数malloc和随机数生成函数rand和srand。 *time.h: 提供时间函数time,用于生成随机数种子。 -
定义结构体
Position: 用于存储二维数组中元素的位置信息,包含行号row和列号col。 -
主函数
main: 程序的入口点。 * 声明变量m和n,用于存储数组的行数和列数。 * 从用户输入获取数组的行数和列数。 * 声明二维数组board,大小为m x n,用于存储用户输入的数组元素。 * 使用嵌套循环从用户输入获取数组元素。 * 声明结构体数组positions,大小为m * n,用于存储所有零元素的位置信息。 * 声明变量count,初始化为 0,用于记录零元素的个数。 * 使用嵌套循环遍历数组board,查找所有零元素,并将它们的位置信息存储到结构体数组positions中,同时更新count的值。 * 如果count大于 0,说明找到了零元素: * 使用srand(time(NULL))初始化随机数生成器。 * 使用rand() % count生成一个 0 到count-1之间的随机数,并将其赋值给变量index。 * 将数组board中位置为positions[index]的元素替换为 2。 * 否则,输出提示信息,表示没有找到零元素,并退出程序。 * 使用嵌套循环输出修改后的数组board。
总结
本篇博客介绍了如何使用C语言查找二维数组中的零元素,并随机选择其中一个替换为2。我们通过一个完整的代码示例和详细的代码解释,帮助你理解了整个过程。希望这篇博客能够帮助你提高C语言编程技能。
原文地址: https://www.cveoy.top/t/topic/dq8Q 著作权归作者所有。请勿转载和采集!