C语言 如何返回一个二维数组
我构建了一个生成N*N希尔伯特的矩阵希望给定一个整数生成一个希尔伯特矩阵,返回到主程序中,请问应该怎么写?intmain(){int**p;inti,N;N=5;p=hi...
我构建了一个生成N*N 希尔伯特的矩阵
希望给定一个 整数 生成一个希尔伯特矩阵, 返回到主程序中, 请问应该怎么写?
int main ()
{
int **p;
int i,N;
N=5;
p = hilbert(N);
return 0;
printf("%d",p[0][3]);
}
int ** hilbert(int N )
{
int a[N][N];
int i,j;
for ( i = N; i < N; i++)
{
for (j=N;j<N;j++)
{
a[i][j]=1/(i+j+1);
}
}
return a;
} 展开
希望给定一个 整数 生成一个希尔伯特矩阵, 返回到主程序中, 请问应该怎么写?
int main ()
{
int **p;
int i,N;
N=5;
p = hilbert(N);
return 0;
printf("%d",p[0][3]);
}
int ** hilbert(int N )
{
int a[N][N];
int i,j;
for ( i = N; i < N; i++)
{
for (j=N;j<N;j++)
{
a[i][j]=1/(i+j+1);
}
}
return a;
} 展开
展开全部
#include <stdio.h>
#include <stdlib.h> // for malloc()
// 返回一个hilbert类型的(n * n)阶矩阵
double **hilbert(int n) {
int i,j;
double **arr = (double **)malloc(n * sizeof(double *));
for(i = 0; i < n; i++) {
arr[i] = (double *)malloc(n * sizeof(double));
for(j = 0; j < n;j++) {
arr[i][j] = 1.0/(i + j + 1);
}
}
return arr;
}
// 显示二维数组信息
void show(double **a,int n) {
int i,j;
for(i = 0; i < n; ++i) {
for(j = 0; j < n; ++j)
printf("%.4lf ",a[i][j]);
printf("\n");
}
printf("\n");
}
// 释放动态内存
void freememory(double **a,int n) {
int i;
for(i = 0; i < n; ++i)
free(a[i]);
free(a);
}
int main () {
double **a;
a = hilbert(8);
show(a,8);
freememory(a,8);// 内存释放动态,避免内存泄漏
a = hilbert(5);
show(a,5);
freememory(a,5);// 内存释放动态,避免内存泄漏
return 0;
}
展开全部
c语言,这里用malloc(头文件memory.h)申请对空间。
int **a=(int **)malloc(N*sizeof(int *));
int i;
for(i=0;i<N;i++){
a[i]=(int *)malloc(N*sizeof(int));
};
当然a可以定义为全局变量。
int a[N][N];
放在main()函数之外,这样本文件里任何一个函数都能访问。
int **a=(int **)malloc(N*sizeof(int *));
int i;
for(i=0;i<N;i++){
a[i]=(int *)malloc(N*sizeof(int));
};
当然a可以定义为全局变量。
int a[N][N];
放在main()函数之外,这样本文件里任何一个函数都能访问。
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询