我被这个问题困扰了。我需要创建一个模式,如:
1
21
221
2221
22221
使用嵌套for循环。我有一些事情(A)
222221
222221
222221
222221
222221
曾经做过(B)
的事情/ * 1 * 21 * 221 * 2221 * 22221 * 222221 * 2222222 * /
#include <stdio.h>
main()
{
int n, c, k;
printf("Enter number of rows\n");
scanf("%d",&n);
for ( c = 1 ; c <= n ; c++ )
{
printf("1\n");
for( k = 1 ; k <= c ; k++ )
printf("2");
}
return 0;
}
任何提示都会有所帮助。
解决方案 - 感谢那些决定提供帮助的聪明人。 感谢您的帮助!
#include <stdio.h>
main()
{
int n, c, k;
printf("Enter number of rows");
scanf("%d",&n);
for ( c = 1 ; c <= n ; c++ )
{
for( k = 1 ; k < c ; k++ )
{
printf("2");
}
printf("1\n");
}
return 0;
}
答案 0 :(得分:1)
以下是一些生成第一个模式的代码。
#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;
}
重要的一点是内部for
循环,直到达到外循环的当前值(j<i
)。
答案 1 :(得分:1)
这可以使用嵌套for循环来完成。让我们检查一行输出的公式:
第1行:
1
可以使用这样的简单for循环来制作:
for (int i = 0; i < 1; i++)
{
putc('1', stdout);
putc('\n', stdout);
}
第2行:
21
嗯,这需要改变我们的结构,因为我们不能打破迭代#1的输出,但是我们仍然需要能够在那里添加'2'......这样的东西应该有效:< / p>
for (int i = 0; i < 2; i++)
{
if (i > 0)
putc('2', stdout);
putc('1', stdout);
putc('\n', stdout);
}
第3行:
等等,现在我们需要两个'2'!我们如何在不破坏第2和第3行的情况下做到这一点?这样的事情应该这样做:221
for (int i = 0; i < 3; i++)
{
int j = i;
while (j--)
{
putc('2', stdout);
}
putc('1', stdout);
putc('\n', stdout);
}
请注意,我使用了while
循环而不是for循环。这是一个练习让读者弄清楚如何将while循环转换为for循环。
希望这有助于您了解将来解决类似问题的过程 - 因为它是一项重要的编程技能。