c语言编写九宫格,关于九宫格的算法

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

下面是正宗的九宫格(81个数字)但是仔细看会发现有错误

高手看到的话就改改 在下谢谢了

#include "stdio.h"

#include "stdlib.h"

#include "conio.h"

createWindow(int left,int top,int wide,int high,int textColor,int backGrdColor)

{

int i,j;

textcolor(textColor);

textbackground(backGrdColor);

for(i=1;i<=high;i++)

{

for(j=1;j<=wide;j++)

{

if(i==1&&j==1) putch(201);

if(i==1&&j==wide) putch(187);

if(i==wide&&j==1) putch(200);

if(i==wide&&j==wide) putch(188);

if(i%6==1&&j%2!=1) putch(205);

if(j%6==1&&i%2!=1) putch(186);

if(i==1&&(j==7||j==13)) putch(203);

if(i==wide&&(j==7||j==13)) putch(202);

if(j==1&&(i==7||i==13)) putch(204);

if(j==wide&&(i==7||i==13)) putch(185);

if((i==7||i==13)&&(j==7||j==13)) putch(206);

if(i==1&&j%6!=1&&j%2==1) putch(209);

if(i==wide&&j%6!=1&&j%2==1) putch(207);

if(j==1&&i%6!=1&&i%2==1) putch(199);

if(j==wide&&i%6!=1&&i%2==1) putch(182);

if(i%2!=1&&j%6!=1&&j%2==1) putch(179);

if(j%2!=1&&i%6!=1&&i%2==1) putch(196);

if((i==7||i==13)&&j%6!=1&&j%2==1) putch(216);

if((j==7||j==13)&&i%6!=1&&i%2==1) putch(215);

if(i%6!=1&&j%6!=1&&i%2==1&&j%2==1) putch(197);

if(i%2!=1&&j%2!=1) putch(32);

}

}

window(left+1,top+1,left+wide,top+high-1);

}

setdata(char *SDK,char *t)

{

int i,j,w,flag=9;

char r,temp,data[9]={'1','2','3','4','5','6','7','8','9'};

randomize();

for(i=0;i<=7;i++)

{

if(*(t+i)!=NULL)

{

flag--;

for(j=0;j<=8;j++)

{

if(data[j]==*(t+i))

{

temp=data[j];

data[j]=data[flag];

data[flag]=temp;

break;

}

}

}

else break;

}

*SDK=(data[random(flag)]);

}

main()

{

int p,u,i,j,g,k,w;

char temp,SuDoKu[9][9]={NULL},hang[9],lie[9],xiao[9],allelement[27];

clrscr();

window(1,1,19,20);

clrscr();

createWindow(1,1,19,19,WHITE,BLACK);

window(1,1,19,20);

for(p=0;p<=8;p++)

{

for(u=0;u<=8;u++)

{

for(i=0;i<=8;i++)

{

hang[i]=SuDoKu[p][i];

lie[i]=SuDoKu[i][u];

}

if(p>=0&&p<=2)

{

if(u>=0&&u<=2) for(j=0;j<=2;j++) for(g=0;g<=2;g++)

xiao[j*3+g]=SuDoKu[j][g];

if(u>=3&&u<=5) for(j=0;j<=2;j++) for(g=3;g<=5;g++)

xiao[j*3+g-3]=SuDoKu[j][g];

if(u>=6&&u<=8) for(j=0;j<=2;j++) for(g=6;g<=8;g++)

xiao[j*3+g-6]=SuDoKu[j][g];

}

if(p>=3&&p<=5)

{

if(u>=0&&u<=2) for(j=3;j<=5;j++) for(g=0;g<=2;g++)

xiao[j*3+g-9]=SuDoKu[j][g];

if(u>=3&&u<=5) for(j=3;j<=5;j++) for(g=3;g<=5;g++)

xiao[j*3+g-12]=SuDoKu[j][g];

if(u>=6&&u<=8) for(j=3;j<=5;j++) for(g=6;g<=8;g++)

xiao[j*3+g-15]=SuDoKu[j][g];

}

if(p>=6&&p<=8)

{

if(u>=0&&u<=2) for(j=6;j<=8;j++) for(g=0;g<=2;g++)

xiao[j*3+g-18]=SuDoKu[j][g];

if(u>=3&&u<=5) for(j=6;j<=8;j++) for(g=3;g<=5;g++)

xiao[j*3+g-21]=SuDoKu[j][g];

if(u>=6&&u<=8) for(j=6;j<=8;j++) for(g=6;g<=8;g++)

xiao[j*3+g-24]=SuDoKu[j][g];

}

for(w=0;w<=26;w++)

{

if(w<=8) allelement[w]=hang[w];

if(w>=9&&w<=17) allelement[w]=lie[w-9];

if(w>=18) allelement[w]=xiao[w-18];

}

for(w=0;w<=26;w++)

{

if(allelement[w]!=NULL)

{

for(k=0;k<=w-1;k++)

{

if(allelement[w]==allelement[k]) allelement[w]=NULL;

}

}

}

for(w=26;w>=0;w--)

{

for(k=0;k<=w-1;k++)

{

if(allelement[k]==NULL&&allelement[k+1]!=NULL)

{

temp=allelement[k];

allelement[k]=allelement[k+1];

allelement[k+1]=temp;

}

}

}

setdata(&SuDoKu[p][u],allelement);

}

}

for(p=0;p<=8;p++)

{

for(u=0;u<=8;u++)

{

gotoxy(2*(u+1),2*(p+1));

cprintf("%c",SuDoKu[p][u]);

}

}

}

注意程序通过调试 但是有BUG 高手来挑战啊

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值