为了账号安全,请及时绑定邮箱和手机立即绑定

如下图,参数表那里不太会用,求大神帮忙看一下!

如下图,参数表那里不太会用,求大神帮忙看一下!

茅侃侃 2022-07-08 11:07:58
matrix()函数生成矩阵,pri()函数输出矩阵。#include <stdio.h>#include <time.h>#include <stdlib.h>void matrix(int (*p)[n],int n){int i,j;srand(time(0));for(i=0;i<n;++i)for(j=0;j<n;++j)*(*(p+i)+j)=rand()%10;}void pri(int (*p)[n],int n){int i,j;printf("随机生成的矩阵为:\n");for(i=0;i<n;++i)for(j=0;j<n;++j)printf(j==n-1?"%-3d\n":"%-3d",*(*(p+i)+j),*(*(p+i)+j));}int main(){int n;printf("请输入矩阵阶数:");scanf("%d",&n);int a[n][n];matrix(a,n);pri(a,n);}
查看完整描述

2 回答

?
明月笑刀无情

TA贡献1828条经验 获得超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("随机生成的矩阵为:\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("请输入矩阵阶数:");
scanf("%d",&n);
//int a[n][n]; 只有静态数组才能这样写,动态数组要动态分配
int *a;
a = (int*)malloc(sizeof(int)*n*n);
matrix(a,n);
pri(a,n);
free(a);
return 0;
}



查看完整回答
反对 回复 2022-07-11
?
白衣非少年

TA贡献1155条经验 获得超0个赞

错误在于对多维数组的认识不对
多维数组不是多重指针,多维数组与一维数组是一样的,p[i][j]与*(p+i*n+j)等效。多维数组的位置最好自己计算(类似于*(p+i*n+j))。

查看完整回答
反对 回复 2022-07-11
  • 2 回答
  • 0 关注
  • 115 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信