一个简单的c语言程序,快来啊有分加,再把那个输出整理一下啊

来源:百度知道 编辑:UC知道 时间:2024/06/20 14:08:20
1,2,3,4,0,-1,-2,-3,-4这九个数分别放在一个3乘3的正方形表格里,在一条直线上的三个数相加和相等 :

下面是我编写的不行,高手给我看看,或者有什么更好的办法可以写写也不费时间的。
#include<stdio.h>
void main()
{
int a[9]={-1,-2,-3,-4,0,1,2,3,4};
int i,j,k,l;
for(i=0;i<9;i++)
printf("%d\t",a[i]);
for(j=0;j<9;j++)
for(k=0;k<9;k++)
for(l=0;l<9;l++)
if((a[j]+a[k]+a[l]==0)&&(j!=k&&k!=l))
printf("%d,%d,%d\t",a[j],a[k],a[l]);
}
二楼还可以,不过没有把所有的情况都输出出来,我要的是所有的可能

看来对只有基本解你还舍不得给分,一定还要基本解的各种位置变换情况,下面是基本解和各种位置变化后的解:
/* 1,2,3,4,0,-1,-2,-3,-4这九个数分别放在一个3乘3的正方形表格里,
在一条直线上的三个数相加和相等 : */
#include <stdio.h>
int a[3][3];
void PRINT();
void tran1();
void tran2();
void swap(int *x,int *y);

main()
{
int i,j,k,l,m,n=3;
int c,p=-4;

clrscr();
m=n*n;
l=n/2;
k=0;
for(i=0;i<n;i++)
for(j=0;j<n;j++)a[i][j]=0;

for(i=0;i<m;i++){
a[k][l]=i+p;
c=(k==0?n-1:k-1);
j=(l==0?n-1:l-1);
if(a[c][j]==0)k=c,l=j;
else{
k++;
if(k==m+1)k=0;
}
}

for(k=0;k<4;k++){
tran1();
PRINT();
printf("\n");

tran2();
PRINT();
printf("\n");
getch();
}
}

void PRINT()
{int i,j;
for(i=0;i<3;i++){
for(j=0;j<3;j++)
printf("%2d ",a[i][j]);
printf("\n");<