都那样做了..
还谈算法干嘛
----------------解决方案--------------------------------------------------------
#include<stdio.h>
int main()
{
int n,m,i,j;
printf("please input the number of the pyramid!\n");
scanf("%d",&n);
n-=1;
for(m=0;m<=n;m++)
{
for(i=0;i<=n-m;i++)
printf(" ");
for(j=0;j<=2*m;j++)
printf("*");
printf("\n");
}
getch();
return 0;
}
这个是金字塔的代码
至于你想要的你图案的下半部,你就按照我的方法给它进行倒推就可以了
至于算法,呵呵,就请你自己把实际数字带入m,i,j进去看看就知道了
这种题目不难
----------------解决方案--------------------------------------------------------
我和楼上一样.
顶
----------------解决方案--------------------------------------------------------
就是这样了
#include<stdio.h>
void main()
{
int i,j;
clrscr();
for(i=1;i<=4;i++)
{gotoxy(5-i,i);
for(j=1;j<=2*i-1;j++)
printf("*");
}
for(i=1;i<=3;i++)
{
gotoxy(i+1,i+4);
for(j=1;j<=7-2*i;j++)
printf("*");
}
}
----------------解决方案--------------------------------------------------------
(我是用了C++,你自己转换一下吧。算法是一样的)
使用的算法如下
BEGIN:
for(i=1;i<=4;i++) 从第一行到第四行
for(j=1;j<=16-i;j++) 第i行右移的次数(在*的前面有空格,所以要右移)
print space 打印空格
endfor j 结束j的循环
for(k=1;k<=(2*i-1);k++) 输出*的个数
print *; 打印*
endfor k 结束k循环
CR 换行
endfor i 结束i的循环
for(i=1;i<=3;i++) 从倒数第i行到第1行
for(j=1;j<=(i+12);j++) 从第i行右移的次数
print space; 输出空格
endfor j 结束j的循环
for(k=1;k<=(-2*i);k++) 输出*的个数
print * 打印*
endfor k 结束k循环
CR 换行
endfor i 结束i的循环
END
主要是要弄懂算法。。以下的程序仅供参考。
#include <iostream>
using namespace std;
void main()
{
int i,j,k;
for(i+1;i<=4;i++)
{
for(j=1;j<=16;j++)
cout<<\" \";
for(k=1;k<=(2*i-1);k++)
cout<<\"*\";
cout<<endl;
}
for(i=1;i<=3;i++)
{
for(j=1;j<=i+2;j++)
cout<<\" \";
for(k=1;k<=(7-2*i);k++)
cout<<\"*\";
cout<<endl;
}
}
[此贴子已经被作者于2007-4-22 21:41:37编辑过]
----------------解决方案--------------------------------------------------------
printf(" *\n");
printf(" ***\n");
printf(" *****\n");
printf("*******\n");
printf(" *****\n");
printf(" ***\n");
printf(" *\n");
puts(" *");
puts(" ***");
puts(" *****");
puts("*******");
puts(" *****");
puts(" ***");
puts(" *");
更快
----------------解决方案--------------------------------------------------------
可以用字符数组,直接初始化,然后printf
----------------解决方案--------------------------------------------------------
谢谢各位大虾啦. 还真不少啊.
----------------解决方案--------------------------------------------------------
#include<stdio.h>
main()
{
char a[]="*******",b[]=" ";
int i,j;
for(i=6,j=0;i>=0;i-=2,j++)
printf("%s%s\n",b+j,a+i);
for(i=2,j=2;i<=6;i+=2,j--)
printf("%s%s\n",b+j,a+i);
getch();
}
----------------解决方案--------------------------------------------------------
楼上的也不错啊
----------------解决方案--------------------------------------------------------