问题描述:
输入三个自然数: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;
}
输出: