代码如下:
进行软件仿真
如果Assuming_obj 这个变量给6以下三次输出的矩阵是正确的.Assuming_obj变量给7,8前两个矩阵的输出是正确的,最后一个矩阵和倒数第二个矩阵的输出是同一个内容一个在子函数中输出,一个是在主函数输出,但是输出结果不一样.Assuming_obj变量给9以上仿真没有输出 我想问一下这是和软件仿真有关,还是我代码问题.
#include <stdio.h>
#include <math.h>
#include <string.h>
typedef double data_type;
#define Assuming_obj 7
//对称矩阵
data_type **diagonal_matrix(int a)
{
int i,j;
data_type **pi;
// int **pi=new int*[a];
* pi=(data_type **)malloc(a*sizeof(data_type*));
/* for(i=0;i<a;i++)
{
pi[i]=(int *)malloc(a*sizeof(int));
} */
for(i=0;i<a;i++)
{
pi[i]=(data_type *)malloc(a*sizeof(data_type));
for(j=0;j<a;j++)
{
if(i==j)
pi[i][j]=1;
}
}
return pi;
}
//反对称矩阵
data_type **back_diagonal_matrix(int a)
{
int i,j;
data_type **pi_1;
// int **pi=new int*[a];
* pi_1=(data_type **)malloc(a*sizeof(data_type*));
/* for(i=0;i<a;i++)
{
pi[i]=(int *)malloc(a*sizeof(int));
} */
for(i=0;i<a;i++)
{
pi_1[i]=(data_type *)malloc(a*sizeof(data_type));
for(j=0;j<a;j++)
{
if(i+j==(a-1))
{
pi_1[i][j]=1;
printf("%f\t",pi_1[i][j]);
}
else
{
pi_1[i][j]=0;
printf("%f\t",pi_1[i][j]);
}
}
printf("\n");
}
printf("\n");
return pi_1;
}
int main() {
int i,j,k=1;
data_type **pi=diagonal_matrix(Assuming_obj_num);
for(i=0;i<Assuming_obj_num;i++)
{
for(j=0;j<Assuming_obj_num;j++)
{
printf("%f\t",pi[i][j]);
}
printf("\n");
}
printf("\n");
data_type **pi_1=back_diagonal_matrix(Assuming_obj_num);
for(i=0;i<Assuming_obj_num;i++)
{
for(j=0;j<Assuming_obj_num;j++)
{
printf("%f\t",pi_1[i][j]);
}
printf("\n");
}
printf("\n");
return 0;
}