下面是在一个4*4的数组中随意输入坐标,然后在该坐标和该坐标所在的行,该坐标所在的列,和两条斜线上全部赋'*'(星号字符),我晕,现在为什么当坐标为(2,2)时,坐标(1,0)的位置也出现星号,那位大哥看看,怎么回事
#include <stdio.h>
#include <conio.h>
#define N 4
int main(void)
{
char a[N][N];
int i, j, k, m, n;
for (m = 0; m < N; m++)
{
for (n = 0; n < N; n++)
{
a[m][n] = ' ';
}
}
printf("Enter position i and j: ");
scanf("%d %d", &i, &j);
a[i][j] = '*'; /* a[2][1] = '*' */
for (k = 0; k < N; k++) /* horizontal */
{
a[i][k] = '*';
}
for (k = 0; k < N; k++) /* vertical */
{
a[k][j] = '*';
}
m = i; n = j; /* left top */
while (m > 0 && n > 0)
{
a[--m][--n] = '*';
}
m = i; n = j; /* right bottom */
while (m < N && n < N)
{
a[++m][++n] = '*';
}
m = i; n = j; /* right top */
while (m > 0 && n < N)
{
a[--m][++n] = '*';
}
m = i; n = j; /* left bottom */
while (m < N && n > 0)
{
a[++m][--n] = '*';
}
for (m = 0; m < N; m++)
{
putchar('\n');
for (n = 0; n < N; n++)
{
if (a[m][n] == '*')
{
putchar('*');
putchar(' ');
}
else
{
putchar('@');
putchar(' ');
}
}
}
getch();
return 0;
}
----------------解决方案--------------------------------------------------------
没人告诉我吗?没人管拉倒,自己来
----------------解决方案--------------------------------------------------------
我写了个你对照下 我把范围放大了些
[CODE]
#include "stdio.h"
#define N 9
int main()
{
int i,j,m,n;
printf("Enter position m and n: \n");
scanf("%d%d",&m,&n);
for(i=0;i<N;i++)
{
for(j=0;j<N;j++)
printf("%c ",(i==n||j==m||m-j==n-i||m-j==i-n)?42:32);
printf("\n");
}
return 0;
}
[/CODE]
document.body.clientWidth*0.5) {this.resized=true;this.width=document.body.clientWidth*0.5;this.style.cursor='pointer';} else {this.onclick=null}" alt="" />
----------------解决方案--------------------------------------------------------
我噻,这也行
----------------解决方案--------------------------------------------------------
版主真强啊,这也能想到!!
----------------解决方案--------------------------------------------------------
能解释以下算法 吗
----------------解决方案--------------------------------------------------------
(i==n||j==m||m-j==n-i||m-j==i-n)?42:32);
行数等于n后面不再计算,表达式值为1,直接打印*;否则
列数等于m后面不再计算,表达式值为1,打印*;再否则
至于后面分别是y-n=x-m和y-n=-x+m两条线上的x,y循环而已.
满足方程即表达式值为1,打印*.
----------------解决方案--------------------------------------------------------