十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
jz(a[4][4])改成jz(a);
成都创新互联公司专注于泗阳网站建设服务及定制,我们拥有丰富的企业做网站经验。 热诚为您提供泗阳营销型网站建设,泗阳网站制作、泗阳网页设计、泗阳网站官网定制、重庆小程序开发公司服务,打造泗阳网络公司原创品牌,更为您提供泗阳网站排名全网营销落地服务。
scanf("%d",a[i][j])改成scanf("%d",a[i][j]);
还有就是数组最好初始化,如果不初始化,容易出现乱码,我给你改了下,运行没问题了
#define _CRT_SECURE_NO_WARNINGS
#includestdio.h
#includestdlib.h
void jz(int a[4][4])
{
int i, j, k, b[4][4] = {0};
for (i = 0; i 4; i++) //转置部分
{
for (j = 0; j 4; j++)
{
b[i][j] = a[j][i];
}
}
int c[4][4] = {0}; //乘法部分
for (i = 0; i4; i++)
{
for (j = 0; j4; j++)
{
for (k = 0; k4; k++)
c[i][j] += a[i][k] * b[k][j];
}
}
for (i = 0; i4; i++) //输出部分
{
for (j = 0; j4; j++)
{
printf("%-4d", c[i][j]);
}
printf("\n");
}
}
int main()
{
int a[4][4] = {0};
int i, j;
for (i = 0; i4; i++)
{
for (j = 0; j4; j++)
{
scanf("%d", a[i][j]);
}
}
jz(a);
system("pause");
return 0;
}
传递数组的指针和数组长度
int
matrix_cmp(matrixA指针,
matrix
A长度,matrixB指针
,
matrix
B长度)
float matrix(float *a[3]){
return(a[0][0]+a[0][2]+a[1][1]+a[2][0]+a[2][2]);
}
int i,j;
float a[3][3],*p[3];
for(i = 0; i 3; i++)for(j = 0; j 3; j++){
scanf("%f",a[i][j]); // float 格式 %f
}
p[0]=a[0][0];p[1]=a[1][0];p[2]=a[2][0]; // 3个指针
printf("sum=%0.2f\n", matrix(p)); // 调用。
============
一般例子(已知数组 行列,动态分配的数组)如何传递数值:
#include stdio.h
void fun1(int *mat, int N_row, int N_col){
int i,j;
for (j=0;jN_row;j++){
for (i=0;iN_col;i++) printf("%d ",mat[j*N_col+i]);
printf("\n");
}
}
void fun2(int **mat, int N_row, int N_col){
int i,j;
for (j=0;jN_row;j++){
for (i=0;iN_col;i++) printf("%d ",mat[j][i]);
printf("\n");
}
}
int main()
{
int arr[3][4]={{11,12,13,14},{21,22,23,24},{31,32,33,34}};
int **a;
int NR,NC,j,i;
fun1( arr[0][0],3,4);
printf("input nrow ncol\n");
scanf("%d %d",NR,NC);
a = (int **) malloc(sizeof(int *) * NR);
for (j=0;jNR;j++){
a[j] = (int *) malloc(sizeof(int) * NC);
}
printf("input matrix data \n");
for (j=0;jNR;j++) for (i=0;iNC;i++) scanf("%d",a[j][i]);
fun2( a,NR,NC);
return 0;
}
个人建议最好将矩阵的指针作为参数传入。因为过大的二维数组会引发栈溢出,编译器不会报错,运行时也不会中断,但是二维数组最后一部分数据会被截断并丢失。
void func(int (*A)[M][N]) {
int i, j, maxValue, minValue;
for (i = 0; i N; i++) {
maxValue = (*A)[0][i];
minValue = (*A)[0][i];
for (j = 0; j M; j++) {
if (maxValue (*A)[j][i])
maxValue = (*A)[j][i];
if (minValue (*A)[j][i])
minValue = (*A)[j][i];
}
printf("第%d列上最大值和最小值的差是:%d\n", i, maxValue - minValue);
}
}