三角形看起来应该是这样的
1
11
111
1111
11111
111111
用户输入的行数然后转换为该函数 注意:没有数组,必须有一个循环(while或for)而不是嵌套循环
我得到的最接近的是一个带有2个循环的代码(但是不能考虑如何用更少的循环来实现)
int i,k;
for(i=1;i<=x;i++)
{
for(k=1;k<=i;k++)
{
printf("1");
}
printf("\n");
}
以上问题是有人问的,但是它被标记为偏离主题我不知道为什么......? 我想出了这个解决方案告诉我它是否正确?
int i=1,k=1;
while (i<=x)
{
if(k<=i)
{
printf("1");
k++;
continue;
}
i++;
k=1;
printf("\n");
}
感谢
答案 0 :(得分:1)
您可以使用递归替换循环(迭代),尝试此操作(使用一个循环):
#include <stdio.h>
void draw(int depth)
{
int i;
if(depth <= 0) return;
draw(depth-1);
for(i = 0; i < depth; i++)
printf("1");
printf("\n");
}
int main()
{
draw(5);
return 0;
}
即使没有循环也可以做到
#include <stdio.h>
void draw_num_char(int num)
{
if(num <= 0) return;
printf("1");
draw_num_char(num-1);
}
void draw(int depth)
{
int i;
if(depth <= 0) return;
draw(depth-1);
draw_num_char(depth);
printf("\n");
}
int main()
{
draw(5);
return 0;
}
答案 1 :(得分:1)
递归解决方案,一个循环,没有数组。
#include <stdio.h>
void liner(int line, int limit) {
int i;
if (line > limit)
return;
for(i=1; i<=line; i++)
printf("1");
printf("\n");
liner (line + 1, limit);
}
int main() {
int limit;
printf ("Enter number of lines ");
scanf ("%d", &limit);
liner (1, limit);
return 0;
}