emmmmmmmmmmmmm
额,这估计是一篇丑陋的博客,因为我没有区分任何的标题
并且没有使用任何的高亮来处理自己的代码
代码本身也写得很丑陋,可能是因为我不在状态吧。。。。。
#include<stdio.h>
struct juz{ //自定义了分数的数据类型
int a; //分子
int b; //分母
};
juz Juz[12][12],Juz_T; //用来存放行列式的二位结构体数组
int n;
void YueF_All(){ //自定义函数全局约分(可以一次性约分已经输入的所有数)
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
if(Juz[i][j].a<0&&Juz[i][j].b<0||Juz[i][j].a>0&&Juz[i][j].b<0){
Juz[i][j].a*=-1;
Juz[i][j].b*=-1;
}
int x=Juz[i][j].a;
int y=Juz[i][j].b;
while(y){
int t=x%y;
x=y;
y=t;
}
Juz[i][j].a/=x;
Juz[i][j].b/=x;
}
}
}
void YueF(int i,int j){ //自定义函数单个约分(只需要传入数据的坐标就ok)
if(Juz[i][j].a<0&&Juz[i][j].b<0||Juz[i][j].a>0&&Juz[i][j].b<0){
Juz[i][j].a*=-1;
Juz[i][j].b*=-1;
}
int x=Juz[i][j].a;
int y=Juz[i][j].b;
while(y){
int t=x%y;
x=y;
y=t;
}
Juz[i][j].a/=x;
Juz[i][j].b/=x;
}
juz jian(int x,int y,int a,int b){ //减法函数,返回z[x][y]-z[a][b]的值
int x_=Juz[x][y].a;
int y_=Juz[x][y].b;
int a_=Juz[a][b].a;
int b_=Juz[a][b].b;
a_*=y_;
x_*=b_;
y_*=b_;
x_-=a_;
Juz_T.a=x_;
Juz_T.b=y_;
return Juz_T;
}
juz Ride(int x,int y,int a,int b){// =xy*ab 返回z[x][y]*z[a][b]的值
int x_=Juz[x][y].a;
int y_=Juz[x][y].b;
int a_=Juz[a][b].a;
int b_=Juz[a][b].b;
Juz_T.a=x_*a_;
Juz_T.b=y_*b_;
return Juz_T;
}
juz Div(int x,int y,int a,int b){// =xy/ab 返回z[x][y]/z[a][b]的值
int x_=Juz[x][y].a;
int y_=Juz[x][y].b;
int a_=Juz[a][b].a;
int b_=Juz[a][b].b;
Juz_T.a=x_*b_;
Juz_T.b=y_*a_;
return Juz_T;
}
int main(){ //这是我处理得比较糟糕的部分,算法的实现被我一团糟的写到了主函数的部分。
printf("ÑùÀýÊäÈ룺\n");
printf("3\n");
printf("1 -1 2\n");
printf("5 6 7\n");
printf("4 -1 2\n");
printf("\n");
while(1){
scanf("%d",&n);
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
scanf("%d",&Juz[i][j].a);
Juz[i][j].b=1;
}
}
int T=n;
for(int i=1;i<T;i++){
for(int j=i;j<T;j++){
if(Juz[j][i-1].a){
Juz[10][10]=Div(j,i-1,i-1,i-1);//»ñÈ¡ÐÐÁÐʽ±¶ÂÊ
for(int k=1;k<=T;k++){
Juz[11][11]=Ride(10,10,i-1,k-1);
Juz[j][k-1]=jian(j,k-1,11,11);
}
YueF_All();
YueF(10,10);
YueF(11,11);
if(Juz[10][10].b==1){
if(Juz[10][10].a<0)
printf("\nC%d+%d*C%d\n",j+1,-Juz[10][10].a,i);
else
printf("\nC%d-%d*C%d\n",j+1,Juz[10][10].a,i);
}else{
if(Juz[10][10].a<0)
printf("\nC%d+%d/%d*C%d\n",j+1,-Juz[10][10].a,Juz[10][10].b,i);
else
printf("\nC%d-%d/%d*C%d\n",j+1,Juz[10][10].a,Juz[10][10].b,i);
}
for(int q=0;q<n;q++){
for(int w=0;w<n;w++){
if(Juz[q][w].b==1)
printf(" %d",Juz[q][w].a);
else
printf(" %d/%d",Juz[q][w].a,Juz[q][w].b);
}
printf("\n\n");
}
}
}
}
Juz[10][10].a=1;
Juz[10][10].b=1;
for(int p=0;p<n;p++){
Juz[10][10]=Ride(10,10,p,p);
}
YueF(10,10);
if(Juz[10][10].b==1)
printf("´ð°¸ÊÇ£º%d",Juz[10][10].a);
else
printf("´ð°¸ÊÇ£º%d/%d",Juz[10][10].a,Juz[10][10].b);
}
return 0;
}