c 语言怎么输入行数列数均为变量的矩阵
时间: 2024-12-18 20:38:35 浏览: 4
C 语言统计字符个数,可以直接编译使用
在C语言中,处理行数和列数均为变量的矩阵通常涉及到动态内存分配和二维数组的创建。由于C语言本身不支持动态多维数组,我们可以使用指针和嵌套循环来实现这样的功能。以下是一个基本的示例,假设我们使用`malloc`函数来动态分配内存:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义结构体来存储矩阵元素
typedef struct {
int row;
int col;
int data[1]; // 动态大小的数组
} Matrix;
// 创建矩阵函数,输入行数和列数
Matrix* create_matrix(int rows, int cols) {
Matrix *matrix = (Matrix*) malloc(sizeof(Matrix));
matrix->row = rows;
matrix->col = cols;
// 分配足够的空间存储数据
matrix->data = (int*) realloc(matrix->data, rows * cols * sizeof(int));
if (!matrix->data) { // 检查内存是否成功分配
printf("Memory allocation failed.\n");
return NULL;
}
// 初始化所有元素为0
for (int i = 0; i < rows * cols; ++i)
matrix->data[i] = 0;
return matrix;
}
// 输入矩阵元素
void input_matrix(Matrix* matrix) {
for (int i = 0; i < matrix->row; ++i) {
for (int j = 0; j < matrix->col; ++j) {
printf("Enter element at (%d,%d): ", i+1, j+1);
scanf("%d", &matrix->data[i*matrix->col + j]);
}
}
}
// 主函数演示如何使用
int main() {
int rows, cols;
printf("Enter the number of rows and columns: ");
scanf("%d %d", &rows, &cols);
Matrix *matrix = create_matrix(rows, cols);
if (matrix) {
input_matrix(matrix);
// ... 对矩阵进行其他操作 ...
free(matrix); // 释放内存
} else {
return 1;
}
return 0;
}
```
在这个例子中,用户会被提示输入矩阵的行数和列数,然后程序会动态地分配内存并允许用户逐个输入每个元素。别忘了在结束使用后记得释放动态分配的内存。
阅读全文