オリジナルリンク:
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;
}
出力: