gpt4 book ai didi

c - 使用单个 for 循环打印右对齐 # 楼梯案例

转载 作者:太空宇宙 更新时间:2023-11-04 06:49:07 25 4
gpt4 key购买 nike

我想打印一个带有单循环的右对齐 # 楼梯。

我试图打印一个右对齐的 # 楼梯。
我做到了。但我想用单循环打印同样的内容。

for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
if(i+j>=n-1)
{
printf("#");
}
else
{
printf(" ");
}
}
printf("\n");
}

最佳答案

长话短说:有很多方法可以做到这一点。以下是我的一些想法。

递归:

void print(int n, int j) {
if (j < n) {
for (int i = 0; i < n; i++) {
putchar(i + j >= n - 1 ? '#' : ' ');
}

puts("");
print(n, j + 1);
}
}

int main() {
print(10, 0);
return 0;
}

内存设置:

#include <stdio.h>
#include <string.h>

int main() {
int i, n = 10;
char s[n+1];
memset(s, ' ', sizeof(char) * (n + 1));

for (i = 0; i <= n; i++) {
memset(s + n - i, '#', sizeof(char) * (n + 1 - i));
s[n+1] = '\0';
printf("%s\n", s);
}

return 0;
}

循环到 n * n 并使用条件判断何时打印新行:

int main() {
int i, j, n = 10;

for (i = 0, j = 0; i <= n * n; i++) {
putchar(j++ >= n - 1 ? '#' : ' ');

if (i % n == 0) {
puts("");
j = i / n;
}
}

return 0;
}

转到:

int main() {
int i = 0, j, n = 10;

loop:
for (j = 0; j <= n; j++) {
putchar(j++ >= n - 1 ? '#' : ' ');
}

puts("");
if (i++ < n) goto loop;

return 0;
}

关于c - 使用单个 for 循环打印右对齐 # 楼梯案例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54048209/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com