永发信息网

c语言难题!!!!!

答案:4  悬赏:70  手机版
解决时间 2021-05-03 04:19

以下是我用全排列编写的行列式计算程序,貌似出了点问题,每次输出的sum值都为0.请各位高手指点哪里出了问题???

#include<stdio.h>
#include <math.h>
int a[3][3]={};
double sum;
void main()
{double per(int* a, int i, int n);

int ni(int ,int ,int );
for(int b=0;b<=2;b++)
for(int c=0;c<=2;c++)

{printf("请输入%d",a[b][c]);
scanf("%d",&a[b][c]); }

for(int i=0;i<=2;i++)
{for(int g=0;g<=2;g++)
{printf("%d ",a[i][g]);}
printf("\n");}
getchar();

double sum1=0;


int y[] = {0,1,2};

sum1 =per(y, 0, 3);
printf("%d",sum1);

}
int ni(int a ,int b,int c )
{int d=0;int n[3]={a,b,c};
for(int z=0;z<=2;z++)
for (int f=0;f<=z;f++)
if ( n[z]<n[f])
d=d+1;
return(d);
}

void swap(int* a, int* b)
{
int t;
t = *a; *a = *b; *b = t;
}

double per(int* h, int i, int n)
{
int k;

int g;
int f[3]={0};
if(i == n) {

int x=h[0],c=h[1],v=h[2];
f[0]=a[x][0];
f[1]=a[c][1];
f[2]=a[v][2];
g=ni(f[0],f[1],f[2]);

sum=pow(-1.0,g)*f[0]*f[1]*f[2]+sum;

}

else
{for(k = i; k < n; ++k)
{swap(h+i, h+k);
per(h, i+1, n);
swap(h+i, h+k);
}
}
return (sum);}

最佳答案
请问你是要做个什么程序呢?连个注释都不得我咋看呀!
全部回答

#include<stdio.h>

#include <math.h>

int a[3][3];

double sum;

void main()

{double per(int* a, int i, int n);

int ni(int ,int ,int );

for(int b=0;b<=2;b++)

for(int c=0;c<=2;c++)

{printf("请输入%d",a[b][c]);

scanf("%d",&a[b][c]); }

for(int i=0;i<=2;i++)

{for(int g=0;g<=2;g++)

{printf("%d ",a[i][g]);}

printf("\n");}

getchar();

double sum1=0;

int y[] = {0,1,2};

sum1 =per(y, 0, 3);

printf("%d",sum1);

}

int ni(int a ,int b,int c )

{int d=0;int n[3]={a,b,c};

for(int z=0;z<=2;z++)

for (int f=0;f<=z;f++)

if ( n[z]<n[f])

d=d+1;

return(d);

}

void swap(int* a, int* b) {

int t;

t = *a; *a = *b; *b = t;

}

double per(int* h, int i, int n)

{

int k;

int g;

int f[3]={0};

if(i == n) {

int x=h[0],c=h[1],v=h[2];

f[0]=a[x][0];

f[1]=a[c][1]; f[2]=a[v][2];

g=ni(f[0],f[1],f[2]);

sum=pow(-1.0,g)*f[0]*f[1]*f[2]+sum;

}

else

{for(k = i; k < n; ++k) {swap(h+i, h+k);

per(h, i+1, n);

swap(h+i, h+k);

}

}

return (sum);}

程序编译通过了。。。。。。。

代码风格不敢恭维。。。。
你的递归有问题 卡在里面了 仔细检查下吧 也没有注释 不知道怎么给你改
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
谁会下围棋,教教我
CSOL生化3怎么有人变成蓝色的啊?
有没有干厨房的 ````
高级QQ群怎么升级啊
当你个你很讨厌的人突然消失了,你会感到难过
诛仙寻宝怎么卖号,我第一次卖号 不知道怎么卖
角度·良友超市下年综合商店我想知道这个在什
qq头像怎么老上传失败?
寻好看的日本动漫撒。有的介绍介绍哈
WOW谁能给个猎人副本无脑输出宏
vista系统下最好用的分区工具
圣经是否存在另外的一面
三国演义关羽的故事
现在的人怎么样就是对不住
雷打石村我想知道这个在什么地方
推荐资讯
迈克尔。杰克逊去世的时候多大了?
如果有人向你告白,对自己是真心的,但他很懒
行政法调整的范围
早上起来做什么最好
七雄争霸如何改城主名
重庆两江码头老火锅在哪里啊,我有事要去这个
求现金流量表自动生成表
怀孕期间可以吃猪血吗?
去哪里工作最好啊
sky作为复数时可翻译为天空吗
QQ 飞车考高级驾照的技巧?
桂林函授学校有哪些啊?哪些可以晚上或周末上
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?