C语言矩阵乘法程序:输入函数存在问题求助
矩阵输入函数的错误修复
存在的问题
- scanf格式符错误:代码中
scanf("&d", &mtrx[x][y]);里的格式符写成了&d,正确的整数输入格式符应该是%d,这个错误会导致无法正确读取输入的整数,甚至引发程序运行异常。 - 二维数组列数限制:函数参数
int mtrx[][10]固定了矩阵的列数为10,如果你的矩阵列数不是10,调用这个函数会出现数组越界等问题,灵活性不足。
修复后的代码(保持原参数形式)
void obtainMatrixElems(int mtrx[][10], int row_elems, int col_elems){ printf("请输入矩阵元素:\n"); for(int x = 0; x < row_elems; x++){ for(int y = 0; y < col_elems; y++){ printf("输入第%d行第%d列的元素:\n", x+1, y+1); scanf("%d", &mtrx[x][y]); // 修正格式符为%d } } }
更灵活的版本(支持任意列数)
如果需要处理不同列数的矩阵,可以改用指针实现,摆脱列数固定的限制:
void obtainMatrixElems(int *mtrx, int row_elems, int col_elems){ printf("请输入矩阵元素:\n"); for(int x = 0; x < row_elems; x++){ for(int y = 0; y < col_elems; y++){ printf("输入第%d行第%d列的元素:\n", x+1, y+1); scanf("%d", mtrx + x*col_elems + y); } } }
调用时直接传入矩阵的首地址即可,例如:obtainMatrixElems(&matrix[0][0], 3, 4);(假设matrix是3行4列的二维数组)
内容的提问来源于stack exchange,提问作者aadinnvv
相关产品推荐
相关产品推荐

