jz(a[4][4])改成jz(a);
成都創(chuàng)新互聯(lián)公司專注于泗陽(yáng)網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗(yàn)。 熱誠(chéng)為您提供泗陽(yáng)營(yíng)銷型網(wǎng)站建設(shè),泗陽(yáng)網(wǎng)站制作、泗陽(yáng)網(wǎng)頁(yè)設(shè)計(jì)、泗陽(yáng)網(wǎng)站官網(wǎng)定制、重慶小程序開(kāi)發(fā)公司服務(wù),打造泗陽(yáng)網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供泗陽(yáng)網(wǎng)站排名全網(wǎng)營(yíng)銷落地服務(wù)。
scanf("%d",a[i][j])改成scanf("%d",a[i][j]);
還有就是數(shù)組最好初始化,如果不初始化,容易出現(xiàn)亂碼,我給你改了下,運(yùn)行沒(méi)問(wèn)題了
#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++)?//轉(zhuǎn)置部分
{
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;
}
傳遞數(shù)組的指針和數(shù)組長(zhǎng)度
int
matrix_cmp(matrixA指針,
matrix
A長(zhǎng)度,matrixB指針
,
matrix
B長(zhǎng)度)
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個(gè)指針
printf("sum=%0.2f\n", matrix(p)); // 調(diào)用。
============
一般例子(已知數(shù)組 行列,動(dòng)態(tài)分配的數(shù)組)如何傳遞數(shù)值:
#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;
}
個(gè)人建議最好將矩陣的指針作為參數(shù)傳入。因?yàn)檫^(guò)大的二維數(shù)組會(huì)引發(fā)棧溢出,編譯器不會(huì)報(bào)錯(cuò),運(yùn)行時(shí)也不會(huì)中斷,但是二維數(shù)組最后一部分?jǐn)?shù)據(jù)會(huì)被截?cái)嗖G失。
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);
}
}