【问题标题】:What could be the initialization and control statements?初始化和控制语句可能是什么?
【发布时间】:2019-02-24 13:10:54
【问题描述】:

这个问题需要使用嵌套的 for 循环来解决,并且只能在 C 中使用。
希望大家能帮帮我。

Sample input            Sample output
3                       1___1
                        12_21
                        12321

4                       1_____1
                        12___21
                        123_321
                        1234321

我试图在这里写一些我的代码。但它在下划线的事情上失败了。

  #include<stdio.h>
  int main()
  {
     int i,n,j,m;
     scanf("%d",&n);
     int k=n;
     for(i=1;i<=n;i++)
     {
        for(j=1;j<=i;j++)
        {
           printf("%d",j);
        }
        for(m=k;m>=0;m--)
        {
           printf("_");
        }
        printf("\n");
        k=k-2;;
     }
  }  

【问题讨论】:

  • 谷歌搜索回文。那里应该有大量的样本。
  • 是的,我知道回文。但是,不能解决下划线的事情。
  • 您可以使用chars 进行操作。有一个'_' 可用于_ 的输出。剩下的就是摆弄柜台。您应该至少公开您目前拥有的代码以期待更多帮助。 (你可以edit你的问题。)
  • 编辑完成。虽然花了一些时间
  • 避免命名变量ij(和l)彼此相邻,与mn 相同。只是通过混淆他们来自找麻烦。事实上,避免使用一个字母的标识符(除了循环字符和​​类似的东西),而是找到适当的描述性名称。

标签: c for-loop nested-loops


【解决方案1】:
#include <stdlib.h>
#include <stdio.h>

int main(void)
{
    int limit;  
    for (; printf("limit: "), scanf(" %d", &limit) != 1;) {
        fputs("Input error :(", stderr);
        return EXIT_FAILURE;
    }

    for (int line = 1; line <= limit; ++line, putchar('\n')) {
        for (int i = 1; i <= line; ++i)
            printf("%d", i);
        for (int i = line + 1; i < 2 * limit - line; ++i)
            putchar('_');
        for (int i = (line == limit) ? line - 1 : line; i; --i)
            printf("%d", i);
    }
}

【讨论】:

  • 感谢您的回答。但对于像我这样的初学者来说,它仍然看起来很复杂。不过,我可以理解逻辑
  • 如果输入循环在第一次失败时退出,为什么它是一个循环?
  • @JonathanLeffler 仅使用嵌套 for 循环 ^^
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多