创建星形图案,但如果在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
子句)。然后打印星星。