当前位置: 代码迷 >> C语言 >> 一道有趣的题目
  详细解决方案

一道有趣的题目

热度:170   发布时间:2007-04-03 21:59:28.0
一道有趣的题目

输入比如n=6,打印出如下图形:
1
22 22
333 333
4444 4444
55555 55555
666666 666666
55555 55555
4444 4444
333 333
22 22
1
这是我的代码,感觉有点傻啊,大家有没有更好的办法。
#include <iostream.h>
#include <stdio.h>
void main()
{int i,j,n;
cin>>n;
for(i=1;i<=n;i++)
{for(j=1;j<=2*(n-i);j++)
cout<<' ';
for(j=1;j<=i;j++)
cout<<i;
for(j=1;j<=2*(i-1)-1;j++)
cout<<' ';
if(i>1)
for(j=1;j<=i;j++)
cout<<i;
cout<<endl;
}
for(i=n-1;i>=1;i--)
{for(j=1;j<=2*(n-i);j++)
cout<<' ';
for(j=1;j<=i;j++)
cout<<i;
for(j=1;j<2*(i-1);j++)
cout<<' ';
if(i>1)
for(j=1;j<=i;j++)
cout<<i;
cout<<endl;
}
}

搜索更多相关的解决方案: 图形  include  

----------------解决方案--------------------------------------------------------
对I可以用
if ..else
来控制6以下的
55555 55555
4444 4444
333 333
22 22
1
因而你不比重复
{for(j=1;j<=2*(n-i);j++)
cout<<' ';
for(j=1;j<=i;j++)
cout<<i;
for(j=1;j<=2*(i-1)-1;j++)
cout<<' ';
if(i>1)
for(j=1;j<=i;j++)
cout<<i;
cout<<endl;
}
这只是我个人的理解...
----------------解决方案--------------------------------------------------------
结果很有趣啊
----------------解决方案--------------------------------------------------------

#include<stdio.h>
#include<math.h>
void main()
{
int i,j,k,m,t;


for(t=-5;t<=5;t++)
{
i=abs(t);

for(j=1;j<=2*i;j++)
printf(" ");

for(k=1;k<=6-i;k++)
printf("%d",6-i);

for(m=1;m<=(9-2*i);m++)
printf(" ");
if((6-i)!=1)
{
for(k=1;k<=6-i;k++)
printf("%d",6-i);
}
printf("\n");
}


}


----------------解决方案--------------------------------------------------------
#include "iostream.h"
#include"stdio.h"
void main()
{int i,n,a=1,d=1;
cout<<"请输入一个数字:";
cin>>n;
for(i=1;i<=n;i++)
{
for(i=1;i<=(n-a)*(n+a+1)/2;i++)
cout<<" ";
for(i=1;i<=a;i++)
cout<<a;
for(i=1;i<=a*(a-1);i++)
cout<<" ";
for(i=1;i<=a;i++)
cout<<a;
cout<<endl;
if(d<n)
{++a;++d;}
else
{a--;++d;}
}
}
看下我的。。。。
----------------解决方案--------------------------------------------------------

那我也来发一个:



#include <stdio.h>
#include <math.h>

#define N 6
#define M (N - 1)

int main()
{
int i, j;

for (i = -M; i <= M; i++)
{
for (j = -2*M; j <= 2*M; j++)
{
if (abs(i) + abs(j) >= M && abs(i)*2 +abs(j) <= 2*M)
printf("%d", N - abs(i));
else
printf(" ");
}
printf("\n");
}

return 0;
}


----------------解决方案--------------------------------------------------------
  相关解决方案