2 回答
TA貢獻(xiàn)1828條經(jīng)驗 獲得超4個贊
回答如下(程序中帶//的行改過):
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
void matrix(int *p,int n)//
{
int i,j;
srand((unsigned int)time(0));//
for(i=0;i<n;++i)
for(j=0;j<n;++j)
*(p+i*n+j)=rand()%10;//寫成p[i*n+j]=...也對
}
void pri(int *p,int n) //
{
int i,j;
printf("隨機(jī)生成的矩陣為:\n");
for(i=0;i<n;++i)
for(j=0;j<n;++j)
{ printf("%-3d ",p[i*n+j]); if(j==n-1)printf("\n");}//
}
int main()
{
int n;
printf("請輸入矩陣階數(shù):");
scanf("%d",&n);
//int a[n][n]; 只有靜態(tài)數(shù)組才能這樣寫,動態(tài)數(shù)組要動態(tài)分配
int *a;
a = (int*)malloc(sizeof(int)*n*n);
matrix(a,n);
pri(a,n);
free(a);
return 0;
}
TA貢獻(xiàn)1155條經(jīng)驗 獲得超0個贊
錯誤在于對多維數(shù)組的認(rèn)識不對
多維數(shù)組不是多重指針,多維數(shù)組與一維數(shù)組是一樣的,p[i][j]與*(p+i*n+j)等效。多維數(shù)組的位置最好自己計算(類似于*(p+i*n+j))。
添加回答
舉報
