| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1056 人关注过本帖
标题:请教一个小问题!希望大家帮个小忙
只看楼主 加入收藏
flyvagrant
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2005-11-6
收藏
得分:0 

#include<stdio.h>
void main()
{
int i,j,n,d=61;
printf("enter n:");
scanf("%d",&n);
for(i=1;i<=(n+1)/2;i++)
{
d=d+(n+2-2*i);
for(j=(n+1)/2;j>i;j--)
{
printf(" ");
}
for(j=1;j<=2*i-1;j++)
{

printf("%c",d);
}
printf("\n");
}
for(i=1;i<(n+1)/2;i++)
{
d=d-2*i+1;
for(j=1;j<=i;j++)
{
printf(" ");
}

for(j=n-1;j>=i*2;j--)
{
printf("%c",d);
}
printf("\n");
}

getch();
}

输入的为奇数才对称。

2005-11-10 02:31
flyvagrant
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2005-11-6
收藏
得分:0 
我认为:比如说n=5,则第一行的尾"B"走到第二行的头“E”的距离+前面的字符ASCII值(比如说例题上的是3+66(B的值))。
2005-11-10 02:41
zj1979
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2005-10-11
收藏
得分:0 
谢谢你flyvagrant,B->E->F的规律想的真好,我就是没想出如何用i表示它们的关系.谢谢你了
2005-11-10 09:01
swiminfire
Rank: 1
等 级:新手上路
帖 子:96
专家分:0
注 册:2005-8-11
收藏
得分:0 
#include<stdio.h>
void main()
{
int i,j,n;
printf("enter n:");
scanf("%d",&n);
for(i=0;i<=n/2;i++)
{
printf("\n");
for(j=n/2;j>i;j--)
{
printf(" ");
}
for(j=0;j<=2*i;j++)
{
if(i==1)
printf("B");

}
}
for(i=0;i<n/2;i++)
{
printf("\n");
for(j=0;j<=i;j++)
{
printf(" ");
}

for(j=n-2;j>i*2;j--)
{
printf("*");
}
}
}

Get in first, and then word your ways out ! BY KIKI
2005-11-10 11:04
swiminfire
Rank: 1
等 级:新手上路
帖 子:96
专家分:0
注 册:2005-8-11
收藏
得分:0 
最白痴的方法,6楼朋友的正在思考中。
include<stdio.h>
void main()
{
int i,j,n;
printf("enter n:");
scanf("%d",&n);
for(i=0;i<=n/2;i++)
{
printf("\n");
for(j=n/2;j>i;j--)
{
printf(" ");
}
for(j=0;j<=2*i;j++)
{
if(i==1)
printf("B");
else if(i==2)
printf("E");
else if("F");
}
}
for(i=0;i<n/2;i++)
{
printf("\n");
for(j=0;j<=i;j++)
{
printf(" ");
}

for(j=n-2;j>i*2;j--)
{
if(i==4)
printf("E");
else if(i==5)
printf("B");
}
}
}

Get in first, and then word your ways out ! BY KIKI
2005-11-10 11:17
flyvagrant
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2005-11-6
收藏
得分:0 

如果确定中间行的显示的话(一中间字母为基值再做递减规律):
#include<stdio.h>
void main()
{
int i,j,n,d=70,t;
printf("enter n:");
scanf("%d",&n);
for(i=1;i<=(n+1)/2;i++)
{
t=((n+1)/2-i)*((n+1)/2-i);
for(j=(n+1)/2;j>i;j--)
{
printf(" ");
}
for(j=1;j<=2*i-1;j++)
{


printf("%c",d-t);
}
printf("\n");
}
for(i=1;i<(n+1)/2;i++)
{
t=i*i;
for(j=1;j<=i;j++)
{
printf(" ");
}

for(j=n-1;j>=i*2;j--)
{
printf("%c",d-t);
}
printf("\n");
}

getch();
}

2005-11-10 12:25
vluobin
Rank: 1
等 级:新手上路
帖 子:50
专家分:0
注 册:2005-10-27
收藏
得分:0 
都很精妙^我就不献丑了!

2005-11-11 14:35
zwk035
Rank: 1
等 级:新手上路
帖 子:23
专家分:0
注 册:2005-10-28
收藏
得分:0 
[em
2005-11-16 18:50
我是一只小小鸟
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2005-11-16
收藏
得分:0 
以下是引用zj1979在2005-11-9 21:06:00的发言:

就是用for循环打印出来,就象下面的程序一
0
012
01234
0123456
012345678

#include<stdio.h>
void main()
{
int i,j;
for(i=1;i<=5;i++)
{
for(j=1;j<=5-i;j++)
{
printf(" ");
}
for(j=1;j<=2*i-1;j++)
{
printf("%d",j-1);
}
printf("\n");
}
}



#include<stdio.h>
void main()
{
int i,j;
for(i=1;i<=5;i++)
{
for(j=1;j<=5-i;j++)
{
printf(" ");
}
for(j=1;j<=2*i-1;j++)
{switch(i)
{case 1 : printf("B");break;
case 2 : printf("E");break;
case 3 : printf("F");break;
case 4 : printf("B");break;
case 5 : printf("E");break;}

}
printf("\n");
}
}
B
EEE
FFFFF
EEEEEEE
BBBBBBBBB

2005-11-16 19:26
快速回复:请教一个小问题!希望大家帮个小忙
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017851 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved