如何在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);
}