创建星形图案,但如果在C中添加1个空格

创建星形图案,但如果在C中添加1个空格,c,C,我做了一个星形图案,但效果不理想 如何制作这样的图案 ********** ********** ********** ********** ********** ********** ********** ********** ********** ********** 正方形星形图案,但在偶数行上增加1个空格 但在下一条线上恢复正常 #include <stdio.h> int main() { int n; int i; int j; printf("Ad

我做了一个星形图案,但效果不理想 如何制作这样的图案

**********
 **********
**********
 **********
**********
 **********
**********
 **********
**********
 **********
正方形星形图案,但在偶数行上增加1个空格 但在下一条线上恢复正常

#include <stdio.h>
int main() {
int n;
int i;
int j;
printf("Add rows :");
scanf("%d", &n);

for (i = 0; i < n; i++)
{
    for (j = 0; j < i; j++)
    {
        if (i % 2 == 1)
            printf(" ");
        else
            printf("*");
    }
    /* Print stars after spaces */
    for (j = 0; j < n; j++)
    {
        printf("*");
    }
    printf("\n");
}
return 0;
#包括
int main(){
int n;
int i;
int j;
printf(“添加行:”);
scanf(“%d”和“&n”);
对于(i=0;i

}

如果您想制作如图所示的图案:

#include <stdio.h>

int main()
{
int n;
int i;
int j;
printf("Add rows :");
scanf("%d", &n);
//outer loop for checking odd or even line
for (i = 0; i < n; i++)
{
    if (i % 2 == 1)
        printf(" ");
    // inner loop for adding stars according to input
    for (j = 0; j < n; j++)
    {
        printf("*");
    }
    printf("\n");
}

return 0;
#包括
int main()
{
int n;
int i;
int j;
printf(“添加行:”);
scanf(“%d”和“&n”);
//检查奇偶线的外环
对于(i=0;i

}

如果您想制作如图所示的图案:

#include <stdio.h>

int main()
{
int n;
int i;
int j;
printf("Add rows :");
scanf("%d", &n);
//outer loop for checking odd or even line
for (i = 0; i < n; i++)
{
    if (i % 2 == 1)
        printf(" ");
    // inner loop for adding stars according to input
    for (j = 0; j < n; j++)
    {
        printf("*");
    }
    printf("\n");
}

return 0;
#包括
int main()
{
int n;
int i;
int j;
printf(“添加行:”);
scanf(“%d”和“&n”);
//检查奇偶线的外环
对于(i=0;i

}

您还可以做的是,不要将问题视为“是否打印空格,然后打印星星”,而是注意“无空格的行”只是从第二个字符开始的其他行。在C语言中,字符串表示为字符数组(以
'\0'
结尾)。这意味着,通过存储以空格开头的行,可以同时存储两种类型的行:

stars = " **********";  // '\0' is implicitly appended
然后,“无空间字符串”就是
&stars[1]
(或者类似地,
stars+1

从这里,您可以从无条件代码中获得预期的行为,其中只有传递给代码的数据发生更改,即您只有一个
printf
调用:

const char *line = (i % 2 ? stars : &stars[1]);
printf("%s\n", line);
使用(自动打印
'\n'
)可以更好地表示:

intmain()
{
静态常量字符*常量星=“**********”;
无符号行计数;
printf(“添加行:”);
扫描频率(“%d”和行计数);
for(无符号行=0;行<行\计数;行++)
看跌期权(第%2行?星:&星[1]);
返回退出成功;
}

您还可以做的是,不要将问题视为“是否打印空格,然后打印星星”,而是注意“无空格的行”只是从第二个字符开始的其他行。在C语言中,字符串表示为字符数组(以
'\0'
结尾)。这意味着,通过存储以空格开头的行,可以同时存储两种类型的行:

stars = " **********";  // '\0' is implicitly appended
然后,“无空间字符串”就是
&stars[1]
(或者类似地,
stars+1

从这里,您可以从无条件代码中获得预期的行为,其中只有传递给代码的数据发生更改,即您只有一个
printf
调用:

const char *line = (i % 2 ? stars : &stars[1]);
printf("%s\n", line);
使用(自动打印
'\n'
)可以更好地表示:

intmain()
{
静态常量字符*常量星=“**********”;
无符号行计数;
printf(“添加行:”);
扫描频率(“%d”和行计数);
for(无符号行=0;行<行\计数;行++)
看跌期权(第%2行?星:&星[1]);
返回退出成功;
}

在调试器中测试。在纸上完成代码。提示:在
for
循环中声明变量:
for(int i=0;…)
而不是在顶部的混乱中预先声明它们。在偶数行上打印一个空格,否则什么都不做(即,甚至没有
else
子句)。然后打印星号。在调试器中测试。在纸上完成代码。提示:在
for
循环中声明变量:
for(int i=0;…)
而不是在顶部的混乱中预先声明它们。在偶数行上打印一个空格,否则什么都不做(即,甚至没有
else
子句)。然后打印星星。