C-注:同じ斜め格子を使用した列のカウンターパート

オリジナルリンク: http://c.biancheng.net/c/

問題の説明:
入力3の自然数: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