请教九宫图程序问题

来源:百度知道 编辑:UC知道 时间:2024/05/26 01:53:28
我是个C语言初学者,请问以下程序有什么问题?
int a1,a2,a3,b1,b2,b3,c1,c2,c3;
for(a1=1;a1<10,a1++)
for(a2=1;a2<10;a2++)
...................
for(c3=1;c3<10;c3++)
{
if(a1!=a2!=a3!=b1!=b2!=b3!=c1!=c2!==c3&&a1+a2+a3==15&&
b1+b2+b3==15&&)/*把所有条件列出来*/
printf("a1=%d,a2=%d,a3=%d.....",a1,a2,a3.....)

}
请问一下,为什么不能求出解来?

开什么玩笑,程序设计语言有"连等于"(a==b==c)或"连不等于"(a!=b!=c)吗?
没有.

对于"a!=b!=c",程序会先判断a是否等于b,然后产生一个结果:0(不相等)或1(相等);然后再把结果(0或1)与c比较看是否相等.所以啊,楼主必须把所有的条件都列出来,类似这样:a!=b && a!=c && b!=c;不过根据排列组合要判断这9个数互不相等的话,需要 2C9 = 36 个不等式.

不过,从楼主的程序看来,楼主真是有心人,你的耐心真好.
9个嵌套的for语句,36个不等式加上8个等式作为条件,楼主你太有毅力了...

不过,我这有对楼主的几点建议:有没有想过用递归代替9个for循环,用数组来代替太多的条件表达式组合...
或许,你是c语言初学者,还不知道什么是递归,还不知道怎么用数组;如果是这样的话,你可以以后再考虑我的建议...

#include <stdio.h>
void main()
{
int a1,a2,a3,b1,b2,b3,c1,c2,c3;
for(a1=1;a1<10;a1++)
for(a2=1;a2<10;a2++)
for(b3=1;a3<10;a3++)
for(b1=1;b1<10;b1++)
for(b2=1;b2<10;b2++)
for(b3=1;b3<10;b3++)
for(c1=1;c1<10;c1++)
for(c2=1;c2<10;c2++)
for(c3=1;c3<10;c3++)
{
if(a1!=a2!=a3!=b1!=b2!=b3!=c1!=c2!=c3&&a1+a2+a3==15&&
b1+b2+b3==15&&c1+c2+c3==15)/*把所有条件列出来*/
printf("a1=%d,a2=%d,a3=%d,b1=%d,b2=%d,b3=%d,c1=%d,c2=%d,c3=%d