求一个程序的循环设置?
* * *
* *
* *
* *
* *
*
请问这个空心菱型图案的循环怎么设置?
[[it] 本帖最后由 corpro 于 2008-4-19 19:56 编辑 [/it]]
搜索更多相关的解决方案:
图案
----------------解决方案--------------------------------------------------------
几个for就能解决,想一想,中间的空格与行数之间的关系。
----------------解决方案--------------------------------------------------------
程序代码:
/*************************************************************************
这个是我作的代码,基本实现了你所要求的边长为4的棱形;
也有许多不足之处,谨作参考。
************************************************************************/
#include<stdio.h>
int main(void)
{
int i,j;
for(i=1;i<=4;++i)
{
for(j=1;j<=10-i;++j)
printf(" ");
printf("*");
for(j=1;j<=2*i-3;++j)
printf(" ");
if(i==1)
{
puts(" ");
continue;
}
printf("*");
puts(" ");
}
for(i=3;i>=1;--i)
{
for(j=1;j<=10-i;++j)
printf(" ");
printf("*");
for(j=1;j<=2*i-3;++j)
printf(" ");
if(i==1)
break;
printf("*");
puts(" ");
}
getch();
}
----------------解决方案--------------------------------------------------------
#include<stdio.h>
int main(void)
{for( )
for( )
for( )
}
不知道能不能用上面的格式一步实现?而不是把图案分成上下两部分,然后合并来实现?
[[it] 本帖最后由 corpro 于 2008-4-19 19:54 编辑 [/it]]
----------------解决方案--------------------------------------------------------
你想要四行代码版本?
----------------解决方案--------------------------------------------------------
恩,行吗
----------------解决方案--------------------------------------------------------
这程序我以前在哪本书上面看到过,就是想不起来了
----------------解决方案--------------------------------------------------------
我刚写的,供参考,还请指点:
#include <stdio.h>
int main()
{
int i,j,k;
for(i=5;i>=0;i--)
{
for(j=1;j<=i;j++)
printf(" ");
printf("*");
for(k=1;k<=(5-i)*2-1;k++)
printf(" ");
if(i<5)
printf("*");
printf("\n");
}
for(i=1;i<=5;i++)
{
for(j=1;j<=i;j++)
printf(" ");
printf("*");
for(k=1;k<=(5-i)*2-1;k++)
printf(" ");
if(i<5)
printf("*");
printf("\n");
}
return 0;
}
----------------解决方案--------------------------------------------------------
#include <stdio.h>
#define ABS(a) (a<0?-a:a)
#define N 3
int main()
{
int i,j;
for(i=-N;putchar('\n'),i<=N;++i)for(j=-N;j<=N;++j)
if(ABS(i)+ABS(j)==N)putchar('*');else putchar(' ');
return 0;
}
#define ABS(a) (a<0?-a:a)
#define N 3
int main()
{
int i,j;
for(i=-N;putchar('\n'),i<=N;++i)for(j=-N;j<=N;++j)
if(ABS(i)+ABS(j)==N)putchar('*');else putchar(' ');
return 0;
}
偶没有运行过,不知道对不对
[color=white]
[[it] 本帖最后由 雨中秣燕 于 2008-4-19 21:04 编辑 [/it]]
----------------解决方案--------------------------------------------------------
就是RETURN写错了,改了下,行
----------------解决方案--------------------------------------------------------