繁体   English   中英

如何在C语言的控制台上打印叉号?

[英]How do I print a cross to the console in C?

我刚刚开始研究信息技术,目前正从事编程工作。

我必须用C编写一个代码,该代码在控制台上显示一个叉号,叉号由初始输入确定。

因此,控制台输出应如下所示:

size?: 5(user input)

xooox

oxoxo

ooxoo

oxoxo

xooox

(用空格替换操作系统)

我现在谈到的是:

#include <stdio.h>

int main(void)
{
    int n;

    printf("size?: ");
    scanf("%d",&n);

    for(int i=1;i<=n;i++)
    {
        for(int j=1;j<=n;j++)
        {
            if( (i==j) )
                printf("*");
            else 
                printf(" ");
        }
        printf("\n");
    }

    return 0;
}  

但是,这仅显示了十字架的一个对角线,我想如果在某个条件之后我不知所措之后,可以通过另一种条件来创建对角线。

您绝对是在正确的轨道上! 不要放弃

考虑这一点的方法是考虑循环计数器。 您已经解决了一半。 如果行和列相同,则需要输出* 那还有什么其他条件呢? 好吧,请考虑倒数。 如果该行与向后计数的列相同,则我们还需要*

我不想为您做家庭作业,因此我将暂不编写代码,但希望可以为您提供有关您需要做什么的提示。

如果需要帮助,还必须从另一侧检查该列:

#include <stdio.h>
int n;

int main(void) {
    printf("size?: ");
    scanf("%d",&n);
    for(int i = 1; i <= n; i++) {
        for(int j = 1; j <= n; j++) {
            if (i == j || i == n - j + 1) printf("*");
            else printf(" ");
        }
        printf("\n");
    }       
    return 0;
}  

编辑:有建议做i + j == n + 1 ,但我相信i == n - j + 1更有意义,因为:

  • i是你当前的行
  • j是您当前的列
  • n是正方形的大小(最大行/最大列)
  • i == n - j + 1表示max - current + 1 * max - current + 1 * max - current + 1

if( (i==j) )替换为if( (i==j)||(i+j)==n+1 ) ,即:

#include <stdio.h>

int main(void)
{
  int n;

  printf("size?: ");
  scanf("%d",&n);

  for(int i=1;i<=n;i++)
  {
    for(int j=1;j<=n;j++)
     {
      if( (i==j)||(i+j)==n+1 )
       printf("*");
      else 
       printf(" ");
     }
     printf("\n");
  }



   return 0;
 } 

首先是C编译器不喜欢

for (int i = 0; i < n; i++)

他们喜欢

int i = 0;
for (i = 0; i < n; i++)

但是,如果您使用的是C ++编译器,则可能不会遇到该问题。

现在; 回到解决眼前的问题!

在线上:

if( (i==j) )

在此条件下,您将在(1、1),(2、2),(3、3)...处绘制点

您还希望在(1,n),(2,n-1),(3,n-2)...处绘制点

因此,您需要在此if语句中添加第二个条件:

if ( (i==j) || (i == (n - j) + 1 ) )

然后,您可以根据需要简化此操作...

if ( (i==j) || (i == n - j + 1 ) )

然后你走了! 现在,它会打印一个叉号,就像您在问题中所描述的那样。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM