求助:求方程和求转置的两个函数出现了问题
两个很小的小程序就是运行老出错,不晓得哪里出错误了啊:1、求方程 的根,用三个函数分别求当b2-4ac大于0、等于0、和小于0时的根,并输出结果。从主函数输入a、b、c的值。
#include"stdio.h"
#include"math.h"
float x2,y;
float root1(float m,float n,float k)
{
float x1;
x1=(-n+sqrt(k))/(2*m);
x2=(-n-sqrt(k))/(2*m);
return x1;
}
float root2(float m,float n)
{float x;
x=-n/(2*m);
return x;
}
float root3(float m,float n,float k)
{float x0;
x0=-n/(2*m);
y=sqrt(-k)/(2*m);
return x0;
}
main()
{float a,b,c,q,x,x1;
printf("input a b c is ");
scanf("%f,%f,%f",&a,&b,&c);
printf("\n");
q=b*b-4.0*a*c; printf("q=%f\n",q);
if(q>0)
{ x1=root1(a,b,q); printf("two shigen is x1=%.3f and x2=%.3f\n",x1,x2); }
else if(q==0)
{x=root2(a,b); printf("denggen is x=%.3f\n",x); }
else {x=root3(a,b,q); printf("two xugen is x1=%.3f+%.3fi and x2=%.3f-%.3fi\n",x,y,x,y); }
}
2.写一个函数,使给定的一个二维数组(3×3)转置,即行列互换。
#include<stdio.h>
main()
{
int zuan(int s[3][3]);
int a[3][3],b[3][3];int i,j;
for(i=0;i<3;i++)
for(j=0;j<3;j++)
scanf("%d",&a[i][j]);
for(i=0;i<3;i++)
{for(j=0;j<3;j++)
printf(" %d",a[i][j]);
printf("\n"); }
b[3][3]=zuan(a[3][3]);
for(i=0;i<3;i++)
{for(j=0;j<3;j++)
printf("%d",b[i][j]);
printf("\n"); }
}
int zuan(int s[3][3])
{int i,j;int t[3][3];
for(i=0;i<3;i++)
for(j=0;j<3;j++)
t[j][i]=s[i][j];
return t[3][3];
}