创建并输入一个 n 行 m 列的二维数组,之后给你两个数字 x 和 y,表示你需要输出该二维数组的第 x 行第 y 列的数字 k (下标从 1 开始)。用c语言解决
时间: 2024-09-20 09:14:12 浏览: 35
在C语言中,你可以创建一个二维数组并利用结构体的指针来访问特定元素。这里是一个简单的示例,我们将使用动态内存分配来创建数组,并提供一个函数来获取指定位置的值:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义二维数组的结构体
typedef struct {
int** array;
int rows;
int cols;
} Array;
// 动态初始化二维数组
Array* create_array(int rows, int cols) {
Array* arr = (Array*)malloc(sizeof(Array));
arr->array = (int**)malloc(rows * sizeof(int*));
for (int i = 0; i < rows; i++) {
arr->array[i] = (int*)malloc(cols * sizeof(int));
}
arr->rows = rows;
arr->cols = cols;
return arr;
}
// 输入二维数组元素
void input_array(Array* arr, int rows, int cols) {
printf("请输入 %d 行 %d 列的元素:\n", rows, cols);
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
scanf("%d", &arr->array[i][j]);
}
}
}
// 获取并输出特定位置的元素
int get_element(Array* arr, int x, int y) {
if (x >= 1 && x <= arr->rows && y >= 1 && y <= arr->cols) {
return arr->array[x - 1][y - 1]; // C语言下标从1开始
} else {
printf("索引超出范围!\n");
return -1; // 返回错误码
}
}
int main() {
int rows, cols, x, y, k;
printf("请输入行数和列数:");
scanf("%d %d", &rows, &cols);
// 创建并输入数组
Array* my_array = create_array(rows, cols);
input_array(my_array, rows, cols);
// 获取用户输入的位置
printf("请输入你要查询的行和列(例如:1 2): ");
scanf("%d %d", &x, &y);
// 输出元素
k = get_element(my_array, x, y);
if (k != -1) {
printf("第%d行第%d列的数字是:%d\n", x, y, k);
}
// 清理内存
for (int i = 0; i < rows; i++) {
free(my_array->array[i]);
}
free(my_array->array);
free(my_array);
return 0;
}
```
阅读全文