我必须编写代码以通过输入行数来打印由星星(*)及其对角线组成的正方形。
对于lines = 5,它应该看起来像这样:square
*****
*' '*
* ' *
*' '*
*****
我的代码有什么问题?
This is my code so far:
#include <stdio.h>
int main()
{
int i, j, lines;
printf("Enter number of lines:");
scanf("%d",&lines);
for(i=1; i<=lines; i++)
{
for(j=1; j<=lines; j++)
{
if(i==1 || i==lines || j==1 || j==lines)
{
printf("*");
}
else
{
printf(" ");
}
if(i==j)
{
printf(".");
}
if(i==(-j))
{
printf(".");
}
}
printf("\n");
}
return 0;
}
答案 0 :(得分:1)
您的问题是要制作一个在正方形内带有十字的正方形吗?您尝试过,但没有达到预期的效果?
如果是,我希望这段代码对您有帮助:
#include <stdio.h>
int main ()
{
int n;
printf("enter number of n: ");
scanf("%d", &n);
for (int z=0; z<=n; z++) {
for (int y=0; y<=n; y++) {
//printf("%d%d ", z,y);
if (z==0 || y==0|| z==n || y==n) {
printf("* ");
}
else if (z==y || y==(n-z)) {
printf("' ");
}
else {
printf(" ");
}
}
printf("\n");
}
}
在您的代码中,存在一些没有道理的矛盾。如果(i ==(-j))
都始终提供正值怎么办?
为便于理解,请尝试首先打印第一个和第二个循环的值。例如n = 5
,它将给您:
00 01 02 03 04 05
10 11 12 13 14 15
20 21 22 23 24 25
30 31 32 33 34 35
40 41 42 43 44 45
在那里您可以看到需要操作的东西。
答案 1 :(得分:1)
#include <stdio.h>
int main(void) {
int i, j, lines;
printf("Enter number of lines:");
scanf("%d",&lines);
for(i=1; i<=lines; i++)
{
for(j=1; j<=lines; j++)
{
if(i==1 || i==lines || j==1 || j==lines)
{
printf("*");
}
else if(i==j || (lines-j)+1 == i)
{
printf(".");
}
else
{
printf(" ");
}
}
printf("\n");
}
return 0;
}
如果我们要打印更多的(i,j)
值,我们将得到一个以原点为中心的x,并在第4象限周围有一盒星星。我们需要将正斜线向下移动一点。