#include void initialize();                                         //初始化

void near1(int a,int b,int a1,int b1);          //算法

void print_chess();                                   //打印棋盘

int exit_chess();                                        //判断是否结束

//全局变量

char chessman[10][10];                         //编译系统初始化每个元素为0

void main()

{

int row,line;                             //row是行号,line是列号

int row2,line2;                         //row是行号,line是列号

printf("\t\t\t按任意键开始\n");

fflush(stdin);

getch();

initialize();                //初始化棋盘内容

do

{

print_chess();

printf("输入第一个:");

fflush(stdin);

scanf("%d.%d",&line,&row);

printf("输入第二个:");

fflush(stdin);

scanf("%d.%d",&line2,&row2);

if(chessman[line][row]!=chessman[line2][row2])

{

printf("两数不相同!\n");                        //两数不同

}

else if(line==line2&&row==row2)

{

printf("错误输入!!!\n");                  //输入相同的坐标,提示用户错误

}

else if(line<=line2)

{

near1(line,row,line2,row2);                //使用函数处理,第一个点一定在第二个点上方

}

else

{

near1(line2,row2,line,row);                //使用函数处理

}

system("pause");

}while(exit_chess());

system("pause");

printf("\n\n\n\t\t恭喜您,您胜利了!\n");

printf("\n\t\t制作人:蒋睿立\n");

printf("\n\t博客:http:\\maidini.blog.163.com");

}

void initialize()                     //初始化棋盘

{

int i,j;                          //用于循环计数

int a[8]={0};                //记录哪些字符出现次数不是偶数

srand(time(NULL));

for(i=1;i<8;i++)                //这里只随机前8行,留最后一行不打印

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

{

chessman[i][j]=rand()%8+65;         //棋盘内容为大写字母A到H

if(chessman[i][j]==65) a[0]++;        //记录A的个数

if(chessman[i][j]==66) a[1]++;        //记录B的个数

if(chessman[i][j]==67) a[2]++;        //记录C的个数

if(chessman[i][j]==68) a[3]++;        //记录D的个数

if(chessman[i][j]==69) a[4]++;        //记录E的个数

if(chessman[i][j]==70) a[5]++;        //记录F的个数

if(chessman[i][j]==71) a[6]++;        //记录G的个数

if(chessman[i][j]==72) a[7]++;        //记录H的个数

}

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

{

if(a[i]%2!=0)        //如果字符的个数是奇数就还需要打印一个

chessman[8][i+1]=i+65;

else                    //如果前面7行随机的A到H字符恰好是偶数,最后一行全是I字符

chessman[8][i+1]=73;

}

}

void print_chess()                //打印棋盘内容

{

int i,j;

system("cls");

printf("\t       1   2   3   4   5   6   7   8   \n");

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

{

printf("\t\n\t");

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

{

printf("%4c",chessman[i][j]);

if(j==9&&i!=0&&i!=9)

printf("\t%d",i);

}

}

printf("\n\n\n\n");

}

int exit_chess()                //判断是否满足退出

{

int i,j;

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

{

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

if(chessman[i][j]!=0)

return 1;        //只要有1个棋子不为0,就返回1

}

return 0;

}

void near1(int a,int b,int a1,int b1)

{

int arow[2];

int aline[2];

int brow[2];

int bline[2];

int start=0,end=0;                //临时两个点

int i,j,n;                                //用于循环

for(i=0;i<2;i++)        //初始化数组

{

arow[i]=a;

brow[i]=a1;

aline[i]=b;

bline[i]=b1;

}

(a,b) a行中有哪些列

for(i=a+1;i<10;i++)

{

if(chessman[i][b]==0)

arow[1]=i;                                //arow[1]是A点a行向下向量

else

break;

}

for(i=a-1;i>=0;i--)

{

if(chessman[i][b]==0)                //arow[0]是A点a行向上向量

arow[0]=i;

else

break;

}

(a1,b1) a1行中有哪些列

for(i=a1+1;i<10;i++)

{

if(chessman[i][b1]==0)                //brow[1]是B点a1行向下向量

brow[1]=i;

else

break;

}

for(i=a1-1;i>=0;i--)

{

if(chessman[i][b1]==0)                //brow[0]是B点a1行向上向量

{brow[0]=i;}

else

{break;}

}

//(a,b) b列中有哪些行

for(i=b+1;i<10;i++)

{

if(chessman[a][i]==0)                //aline[1]是A点b列向右向量

{aline[1]=i;}

else

{break;}

}

for(i=b-1;i>=0;i--)

{

if(chessman[a][i]==0)                //aline[0]是A点b列向左向量

{aline[0]=i;}

else

{break;}

}

//(a1,b1) b1列中有哪些行

for(i=b1+1;i<10;i++)

{

if(chessman[a1][i]==0)                //bline[1]是B点b1列向右向量

{bline[1]=i;}

else

{break;}

}

for(i=b1-1;i>=0;i--)

{

if(chessman[a1][i]==0)                //bline[0]是B点b1列向左向量

{bline[0]=i;}

else

{break;}

}

//关键算法///

/********************************

情况一

·

(a,b)

·(a1,b1)

*********************************/

/*********************************

情况二

·

(a,b)

·(a1,b1)

**********************************/

/*考虑上下向量*/

if(brow[0]>=arow[0])                //向上方向向量 有共同的列向量

start=brow[0];                        //取大的

else

start=arow[0];

if(brow[1]<=arow[1])                //向下方向向量 有共同的列向量

end=brow[1];                        //取小的

else

end=arow[1];

for(;start<=end;start++)                //列向量上共同点start到end

{

/** b1要大于b,否则就交换

如果不交换将使下面的循环出错*/

if(b0))                //因为b与b1大小不能确定,所有有2个if

chessman[a][b]=chessman[a1][b1]=0;

if((n==b1-b)&&(n>0))

chessman[a][b]=chessman[a1][b1]=0;

}

/*考虑左右向量*/

if(aline[0]>=bline[0])                //向左的向量 有共同的行向量

start=aline[0];                        //取大的

else

start=bline[0];

if(aline[1]0)        //a1始终大于a

{

chessman[a][b]=chessman[a1][b1]=0;

break;

}

}

/*********************************************************************************

*                        同行               或者           同列          ·(a,b)

*

*         ·                  ·           或者

*        (a,b)          (a1,b1)                                           ·(a1,b1)

*

*********************************************************************************/

if(a==a1)                //同行

{

if((aline[1]>=b1)||(aline[0]<=b1))

chessman[a][b]=chessman[a1][b1]=0;

}

if(b==b1)               //同列

{

if(arow[1]>=a1)

chessman[a][b]=chessman[a1][b1]=0;

}

}

连连看c语言代码,连连看C语言代码.doc相关推荐

  1. 对人脑而言,阅读计算机代码和阅读语言有何不同?

    作者 | Anne Trafton 翻译 | 火火酱,责编 | 晋兆雨 出品 | AI科技大本营 头图 | 付费下载于视觉中国 神经科学家们发现,人类在解读代码时会激活一个通用的大脑区域网络,但不会激 ...

  2. 教你C语言实现通讯录的详细代码

    本文详细讲解了C语言实现通讯录的方法,文中通过示例代码介绍的非常详细.对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下 (一)实现思路 1.通讯录功能 添加好友,删除好友,查找好友,修改 ...

  3. python叫什么语言-Python代码是什么语言

    Python代码是一种计算机程序设计语言,是一种动态的.面向对象的脚本语言,最初是用来编写自动化脚本的,随着版本的不断更新和语言新功能的添加,越来越多被用于独立的.大型项目的开发. Python代码是 ...

  4. 【Android NDK 开发】Kotlin 语言中使用 NDK ( 创建支持 Kotlin 的 NDK 项目 | Kotlin 语言中使用 NDK 要点 | 代码示例 )

    文章目录 一.创建支持 Kotlin 的 NDK 项目 二.Kotlin 语言中使用 NDK 要点 1.加载动态库 2.声明 ndk 方法 3.Project 下的 build.gradle 配置 4 ...

  5. Python语言学习:python语言代码调试—异常处理之详细攻略

    Python语言学习:python语言代码调试-异常处理之详细攻略 目录 python语言代码调试-异常处理 异常捕捉可以使用 try/except 语句 相关文章 Python3 错误和异常 | 菜 ...

  6. 动图图解C语言插入排序算法,含代码分析

    C语言文章更新目录 C语言学习资源汇总,史上最全面总结,没有之一 C/C++学习资源(百度云盘链接) 计算机二级资料(过级专用) C语言学习路线(从入门到实战) 编写C语言程序的7个步骤和编程机制 C ...

  7. python语言能够整合各类程序代码-python语言概述

    python语言的发展 python语言诞生于1990年,由Guide van Rossum设计并领导开发. python语言是开源项目的优秀代表,其解释器的全部代码都是开源的. 编写Hello程序 ...

  8. C语言计算月份天数if,阅读下列说明,回答问题1至问题3。【说明】 以下代码由C语言书写,能根据指定的年、月计算当月所含天数 - 赏学吧...

    阅读下列说明,回答问题1至问题3. [说明] 以下代码由C语言书写,能根据指定的年.月计算当月所含天数. int GetMaxDay( int year, int month ) { int maxd ...

  9. c++ doxygen 注释规范_[代码规范]Go语言编码规范指导

    本规范旨在为日常Go项目开发提供一个代码的规范指导,方便团队形成一个统一的代码风格,提高代码的可读性,规范性和统一性.本规范将从命名规范,注释规范,代码风格和 Go 语言提供的常用的工具这几个方面做一 ...

  10. php连接数据库语言,PHP语言连接MYSQL数据库实例代码

    本文主要向大家介绍了PHP语言连接MYSQL数据库实例代码,通过具体的内容向大家展示,希望对大家学习php语言有所帮助. 现在做的项目需要php连接mysql数据库,虽然之前学过,但是现在基本上都给忘 ...

最新文章

  1. Docker学习(3)——安装部署过程及简单应用
  2. FPGA设计心得(5)Aurora 例子工程分析与仿真实例分析(streaming版)
  3. 《设备调试与网络优化》教学讲义(二)
  4. Spring 5.0 源码编译, 403, 404 依赖pom 无法下载问题
  5. Java客户端操作zookeeper:删除节点代码示例
  6. 一卡通大冒险(hdu2512)
  7. JavaScript学习(八十五)—数据类型的转换
  8. 功能增强的进度条控件(源码)
  9. 关于Centos Linux系统安装Python的问题
  10. Expression Blend学习5控件-TextButton
  11. 勒索病毒WannaCry深度技术分析:详解传播、感染和危害细节
  12. 计算机二级C语言选择题——01
  13. win10资源管理器——删除左侧图标(自用)
  14. 一个问题的暴漏有多难? 过五关!!!
  15. 这几种食物不要给1岁内宝宝吃
  16. 计算机三级考试网络技术资料,计算机三级考试2017网络技术辅导资料
  17. 把握云计算+引领云时代
  18. 腾讯云增强型SSD云硬盘性能方面有哪些特点?
  19. 常用技术指标之一文读懂RSI指标
  20. 代码随想录训练营day43

热门文章

  1. A卡速度表以及软件的设置参数(二…
  2. Brave浏览器保护用户隐私第2招:第三方页面垃圾过滤
  3. java自定义注解实现
  4. usaco Horseshoes
  5. 方差、标准差、均方误差、均方根误差
  6. Docker运行MySql镜像
  7. MIUI国际/欧版使用小米应用商店/国内浏览器-解决不会下载软件/上网问题
  8. 【宝物志】门店运营内容分享 第二十四期
  9. 视达配色教程12 粉红色的色彩性格是什么
  10. swift有一句代码搞定APP引导页(图片/GIF/视频)