如何在C中使用for循环创建模式

如何在C中使用for循环创建模式,c,design-patterns,C,Design Patterns,我被这个问题难住了。我需要创建一个模式,例如: 1 21 221 2221 22221 使用嵌套for循环。我有一件事(A) 曾经有过这样的事情(B) /*一, * 21 * 221 * 2221 * 22221 * 222221 * 2222222 */ #包括 main() { int n,c,k; printf(“输入行数\n”); scanf(“%d”和“&n”); 对于(c=1;c,这里有一些生成第一个模式的代码 #include <stdio.h>

我被这个问题难住了。我需要创建一个模式,例如:

1
21
221
2221
22221
使用嵌套for循环。我有一件事(A)

曾经有过这样的事情(B)

/*一, * 21 * 221 * 2221 * 22221 * 222221 * 2222222 */

#包括
main()
{
int n,c,k;
printf(“输入行数\n”);
scanf(“%d”和“&n”);

对于(c=1;c,这里有一些生成第一个模式的代码

#include <stdio.h>

#define NUMLINES 5

int main(void) {
    int i, j;
    for(i=0; i<NUMLINES; i++) {
        for(j=0; j<i; j++) {
             printf("2");
        }
        printf("1\n");
    }
    return 0;
}
#包括
#定义NUMLINES 5
内部主(空){
int i,j;

for(i=0;i这可以使用嵌套for循环完成。让我们检查一行输出的公式:

第1行

一,

可以使用以下简单的for循环来实现:

for (int i = 0; i < 1; i++)
{
    putc('1', stdout);
    putc('\n', stdout);
}
for(int i=0;i<1;i++)
{
putc('1',标准件);
putc('\n',stdout);
}
第2行

二十一,

嗯,这需要改变我们的结构,因为我们不能破坏迭代#1的输出,但我们仍然需要能够在其中添加“2”…类似这样的东西应该可以工作:

for (int i = 0; i < 2; i++)
{
    if (i > 0)
       putc('2', stdout);

    putc('1', stdout);
    putc('\n', stdout);
}
for(int i=0;i<2;i++)
{
如果(i>0)
putc('2',标准件);
putc('1',标准件);
putc('\n',stdout);
}
第3行:

221

等等,现在我们需要两个'2'在那里!我们怎么能不打破线的2和3呢?像这样的东西应该可以做到:

 for (int i = 0; i < 3; i++)
 {
     int j = i;
     while (j--)
     {
         putc('2', stdout);
     }

     putc('1', stdout);
     putc('\n', stdout);
 } 
for(int i=0;i<3;i++)
{
int j=i;
而(j--)
{
putc('2',标准件);
}
putc('1',标准件);
putc('\n',stdout);
} 
请注意,我使用了
while
循环而不是for循环。读者可以通过练习了解如何将while循环转换为for循环


希望这有助于您理解将来解决类似问题的过程,因为这是一项重要的编程技能。

展示一些代码。闻起来像家庭作业……@RichardJ.RossIII这里的家庭作业没有问题;请注意,该标记已被弃用。老实说,我没有睡觉,因为我一直在尝试我正在努力解决这个问题。感谢大家的帮助。现在是上午8:25。我要等到结束才会休息。我认为重要的编程技巧是看问题,将其抽象为“0到4”2后面跟着“1”,然后编写实现它的明显代码。@JimBalter这是一个风格问题。对我个人来说,我在挖掘代码时会更好地考虑解决方案,而不仅仅是在代码之外抽象。不过,每个人的想法都不同,所以对一个人有效的可能对另一个人无效。你所说的是一个方法问题,不是“风格”,但如果一个人不能做抽象,那么他就缺乏技能。现代编程的整个方向,函数式编程,就是朝着这个技能。值得注意的是,有多少C恐龙缺乏这种技能。你知道疯狂的部分吗?除了最后一个printf语句,我什么都有。
for (int i = 0; i < 1; i++)
{
    putc('1', stdout);
    putc('\n', stdout);
}
for (int i = 0; i < 2; i++)
{
    if (i > 0)
       putc('2', stdout);

    putc('1', stdout);
    putc('\n', stdout);
}
 for (int i = 0; i < 3; i++)
 {
     int j = i;
     while (j--)
     {
         putc('2', stdout);
     }

     putc('1', stdout);
     putc('\n', stdout);
 }