我是C的初学者,想要使用for
循环创建一个程序,它提供以下输出:
* * * * * * *
* * * * * *
* * * *
* *
答案 0 :(得分: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]);
答案 1 :(得分:8)
这是一个便宜的版本,它可以完成工作但不提供很大的灵活性。
#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;
}
答案 2 :(得分:5)
你显然是在做这个作业。这是解决方案。但是,功课的重点是你需要了解它是如何工作的,它正在做什么等等。只是复制我的代码不会帮助你学习。
这里有两个循环。使用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;
}
答案 3 :(得分:2)
你自己有多远?你知道怎么写for循环和print语句吗?到目前为止你有什么输出?
编程(部分)是为了尽可能地解决问题,无论是粗略还是不完整,然后考虑你能够做什么并逐步完善代码。因此,除非我知道你已经到达了哪里,否则我会冒险破坏学习经验。
到目前为止向我们展示您的代码怎么样?
答案 4 :(得分:1)
您是否坚持使用算法或如何在C中实现它?算法如下所示:
Let `n` be the width of the rectange
Print n stars followed by a newline
For i from n/2 to 1 (counting down in steps of 1):
Print i stars, then n-2*i spaces, then i stars, then a newline
要在C中实现这一点,你需要一个for循环和一些输出函数,比如printf。
答案 5 :(得分:1)
#include < stdio.h >
int main() {
int i, j;
for (i = 0; i < 4; i++) {
for (j = 0; j < 7; j++) {
if (j <= 3 - i || j >= 3 + i)
printf("*");
else
printf(" ");
}
printf("\n");
}
return 0;
}