1 c
我是C的初学者,想要使用for循环创建一个程序,它提供以下输出:
* * * * * * *
* * * * * *
* * * *
* *
Run Code Online (Sandbox Code Playgroud)
Guf*_*ffa 16
我喜欢写一行来解决像这样的简单问题.;)
for(int i=0;i<60;i++)putchar(" *\r\n"[i%15>=11?i%15-11:abs(i%15-6)>(i/15)*2-1&&i%15%2==0?1:0]);
Run Code Online (Sandbox Code Playgroud)
这是一个便宜的版本,它完成了工作,但没有提供太大的灵活性.
#include <stdio.h>
int main (int argc, char *argv[])
{
char *strings[4] = { "* * * * * * *",
"* * * * * *",
"* * * *",
"* *" };
int i;
for (i = 0; i < 4; i++)
{
puts (strings[i]);
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
你显然是把它作为家庭作业.这是解决方案.但是,功课的重点是你需要了解它是如何工作的,它正在做什么等等.只是复制我的代码不会帮助你学习.
这里有两个循环.使用的循环r用于行.使用的循环c用于列.有7列是星星或空格.在第一排,他们都是明星.在第二行,第3列是一个空格(记住我们从零开始编号).这是因为在第二行r是1.因此if条件是if (c>3-1 && c<3+1),或者if (c>2 && c<4)- 当c为3时,将打印空格.对于其他列,将打印星号.在下一行,它最终为if (c>1 && c<5)- 所以如果c是2,3或4,则打印空格.
尝试使用该程序,更改数字,更改打印内容以便更好地了解其正在执行的操作.
#include <stdio.h>
int main(void)
{
int r,c;
for (r=0; r!=4; r++)
{
for (c=0; c<7; c++)
{
if (c>3-r && c<3+r)
printf(" ");
else
printf("* ");
}
printf("\n");
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)