C语言笔记:同行同列同对角线的格子

原文链接: http://c.biancheng.net/c/

问题描述:
输入三个自然数:n(n<=10),i(1<=i<=n),j(1<=j<=n),输出在n*n格的棋盘中(行列从1开始)与格子(i,j)同行、同列、同一对角线所有格子的位置。

如图,蓝色是输入部分,红色是输出部分:
在这里插入图片描述

#include <stdio.h>
int main(void)
{
 int n,i,j;
 printf("输入n,i,j:\n");
 scanf("%d %d %d",&n,&i,&j);
 for(int col=1;col<=n;col++)//1、输出与i在同一行的格子位置 
 {
  printf("(%d,%d)",i,col);
 }
 printf("\n"); 
 for(int row=1;row<=n;row++)//2、输出与j在同一列的格子位置 
 {
  printf("(%d,%d)",row,j);
 }
 printf("\n");
 for(int row=1;row<=n;row++)//3、输出与(i,j)在左上到右下对角线的格子位置 
 {
  int col=row-i+j;//如果在该对角线上,则斜率为1,即(row-i)/(col-j)=1--->row-i=col-j--->col=row-i+j 
  if(col>=1&&col<=n)
  {
   printf("(%d,%d)",row,col);
  }
 }
 printf("\n");
 for(int row=n;row>=1;row--)//4、输出输出与(i,j)在左下到右上对角线格的子位置  
 {
  int col=i+j-row;//如果在该对角线上,则斜率为-1,即(row-i)/(col-j)=-1--->row-i=-(col-j)--->col=i+j-row
  if(col>=1&&col<=n)
  {
   printf("(%d,%d)",row,col);
  }
 }
 printf("\n");
 return 0; 
}

输出:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_42124234/article/details/102560837