c++急急急急

来源:百度知道 编辑:UC知道 时间:2024/06/28 15:58:56
c++高手:
你好。我想问你个问题,我自己写的一个c++程序,但是就是运行不出来我想要的要求,帮我看看是什么原因。我想编一个九宫格游戏程序就是说有0到9的9个数排列。要实现横的三个数相加等于15竖的三个数相加等于15斜的三个数相加也等于15.如:a b c
d e f
g h i

实现 a+b+c=d+e+f=g+h+i=a+d+g=b+e+h=c+f+i=a+e+i=c+e+g=15

我写的程序:
#include<iostream>
using namespace std;
void main()
{
int a,b,c,d,e,f,g,h,i;
for(a=1;a<10;a++)
for(b=1;b<10;b++)
for(c=1;c<10;c++)
for(d=1;d<10;d++)
for(e=1;e<10;e++)
for(f=1;f<10;f++)
for(g=1;g<10;g++)
for(h=1;h<10;h++)
for(i=1;i<10;i++)
if(a+b+c==15&&d+e+f==15&&g+h+i==15&&a+d+g==15&&b+e+h==15&&c+f+i==15&&a+e+i==15&&c+e+g==15&&a!=b&&b!=c&&!c!=d&&d!=e&&e!=f&&f!=g&&g!=h&&h!=i)

cout<<a<<"\t"<<b<<"\t"<<c<<endl;
cout<<d<

你的if条件不够详细,a!=b,但却可以是h或i。用个数组来检查a~i中是否有相等的数。把if做了点改动,代码如下:
#include<iostream>
using namespace std;
void main()
{
int a,b,c,d,e,f,g,h,i;
for(a=1;a<10;a++)
for(b=1;b<10;b++)
for(c=1;c<10;c++)
for(d=1;d<10;d++)
for(e=1;e<10;e++)
for(f=1;f<10;f++)
for(g=1;g<10;g++)
for(h=1;h<10;h++)
for(i=1;i<10;i++)
if(a+b+c==15&&d+e+f==15&&g+h+i==15&&a+d+g==15&&b+e+h==15&&c+f+i==15&&a+e+i==15&&c+e+g==15)
{
int arr[9]={a,b,c,d,e,f,g,h,i};
int j,k,t,flag=0;
for(j=0;j<9;j++){
t=arr[j];
for(k=0;k<9;k++)
if(t==arr[k])
flag++; %用来做标记
}
if(flag==9){
cout<<a<<"\t"<<b<<"\t"<<c<<endl;
cout<<d<<"\t"<<e<<"\t"<<f<<endl;
cout<<g<<"\t"<<h<<