如何获得像翻转Floyds三角形的输出?以及如何解决它的最佳方式?
示例:
5555
_555
__55
___5
注意:_是一个空格
已经尝试了很多代码,但我仍然无法获得这样的输出。
我的一个代码:
#include<stdio.h>
int main () {
int a,b,c,n;
scanf("%d",&n);
for(a=1;a<=n;a++) {
for(b=n;b>=a;b--) {
printf(" ");
}
for(c=1;c<=a;c++) {
printf("*");
}
printf("\n");
}
}
答案 0 :(得分:2)
这不是最好的方式......但代码与您发布的代码类似。
int main()
{
int a, b, c, n;
scanf("%d", &n);
for (a = n; a > 0; a--)
{
for (b = n; b >= a; b--)
{
printf(" ");
}
for (c = 1; c <= a; c++)
{
printf("*");
}
printf("\n");
}
}
在原帖中,你首先进行循环是
for(a=1;a<=n;a++)
这意味着第二个for循环将打印n *空格而第三个for循环将打印一个星。 通过将第一个for循环更改为
for (a = n; a > 0; a--)
所有内容都被反转,因此第一个循环将不会打印任何空格并持续循环n *星。
答案 1 :(得分:1)
作为一个笑话;)
#include <stdio.h>
int main( void )
{
int n = 5555;
while (n)
{
printf("%5d\n", n);
n /= 10;
}
return 0;
}
程序输出与所需的相同。:)
5555
555
55
5
如果要使用循环,那么例如程序可能看起来像
#include <stdio.h>
int main( void )
{
const char c = '5';
while (1)
{
printf("Enter a non-negative number (0 - exit): ");
unsigned int n;
if (scanf("%u", &n) != 1 || n == 0) break;
putchar('\n');
for (unsigned int i = 0; i < n; i++)
{
unsigned int j = i + 1;
printf("%*c", (int)j, c);
while (j++ < n) putchar(c);
putchar('\n');
}
putchar('\n');
}
return 0;
}
它的输出可能看起来像
Enter a non-negative number (0 - exit): 10
5555555555
555555555
55555555
5555555
555555
55555
5555
555
55
5
Enter a non-negative number (0 - exit): 0
内部while循环可以替换for循环
for ( ; j < n; j++ )