| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 608 人关注过本帖
标题:[讨论]大家看看能不能精简一下
只看楼主 加入收藏
snipered
Rank: 1
等 级:新手上路
威 望:1
帖 子:90
专家分:0
注 册:2007-10-5
收藏
 问题点数:0 回复次数:7 
[讨论]大家看看能不能精简一下
打印一个 N*N 的方阵,N为每边 N=15 打印出下面图形
字符的个数(3<N<20), 要求最 TTTTTTTTTTTTTTT
外一层为"T", 第二层为"J", 从第三层 TJJJJJJJJJJJJJT
起每层依次打印数字 1,2,3,... TJ11111111111JT
(右图以N为15为例) TJ12222222221JT
TJ12333333321JT
TJ12344444321JT
TJ12345554321JT
TJ12345654321JT
TJ12345554321JT
TJ12344444321JT
TJ12333333321JT
TJ12222222221JT
TJ11111111111JT
TJJJJJJJJJJJJJT
TTTTTTTTTTTTTTT



#include<stdio.h>
#include<stdlib.h>
#define N 15
void main()
{
int i,j,c,k,l;
k=N-2;
l=3;
c=1;
for(i=1;i<=N;i++)
{
for(j=1;j<=N;j++)
{
if(i==N||j==N||i==1||j==1)
{
printf("T");
}
else if(i==(N-1) || j==(N-1) ||i==2||j==2)
{
printf("J");
}
else if(i==k||j==k||i==l||j==l)

{

printf("%d",1);
}
else if(i==(k-1)||j==(k-1)||i==(l+1)||j==(l+1))

{

printf("%d",2);
}
else if(i==(k-2)||j==(k-2)||i==(l+2)||j==(l+2))

{

printf("%d",3);
}
else if(i==(k-3)||j==(k-3)||i==(l+3)||j==(l+3))

{

printf("%d",4);
}
else if(i==(k-4)||j==(k-4)||i==(l+4)||j==(l+4))

{

printf("%d",5);
}
else
{
printf("%d",6);
}
}
printf("\n");
}

}





我的水平不够只能做到这里了!
呵呵
搜索更多相关主题的帖子: 精简 
2007-10-10 17:25
野比
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:24
帖 子:1627
专家分:516
注 册:2007-5-24
收藏
得分:0 
http://bbs.bc-cn.net/viewthread.php?tid=147967
在1楼解答列表中找第3题,然后参考

女侠,约吗?
2007-10-10 19:32
snipered
Rank: 1
等 级:新手上路
威 望:1
帖 子:90
专家分:0
注 册:2007-10-5
收藏
得分:0 
没找到啊!

2007-10-12 13:09
zkkpkk
Rank: 2
等 级:论坛游民
威 望:5
帖 子:489
专家分:28
注 册:2006-6-17
收藏
得分:0 
我的很麻烦,但是因为我没看到(3<N<20)顾及了N能取很大的值

Viva,espana!
2007-10-12 18:52
野比
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:24
帖 子:1627
专家分:516
注 册:2007-5-24
收藏
得分:0 
以下是引用snipered在2007-10-12 13:09:05的发言:
没找到啊!

81楼...还有其他N多


女侠,约吗?
2007-10-13 18:23
hhei
Rank: 2
等 级:论坛游民
帖 子:36
专家分:27
注 册:2007-10-14
收藏
得分:0 
试一下我这个程序:
#include <iostream>
using namespace std;
void main ()
{
int n;
cout << "enter the value of N: " << endl;
cin >> n;
for(int i=0;i < n;i++)
{
for(int j=0;j < n;j++)
{
if(i==0||j==0||i==n-1||j==n-1)
{
cout << 'T';
}
else if(i==1||j==1||i==n-2||j==n-2)
{
cout << 'J';
}
else
{
for(int t=1;t <= ((n-3) / 2);t++)
{
if(i==(t+1)||j==(t+1)||i==(n-2-t)||j==(n-t-2))
{
cout << t;
break;
}


}
}

}
cout << endl;
}
cout << endl;
}

2007-10-15 16:19
eagleboycn
Rank: 1
等 级:新手上路
帖 子:191
专家分:0
注 册:2007-9-26
收藏
得分:0 
LS强!
学习了

兵法的精要在于韬晦自己
2007-10-15 16:26
snipered
Rank: 1
等 级:新手上路
威 望:1
帖 子:90
专家分:0
注 册:2007-10-5
收藏
得分:0 

我自己又精简了一下大家看看
#include<stdio.h>
void main()
{
int i,j,m,k,s,q;
int row;
m=-1;
printf("row:");
scanf("%d",&row);
for(i=1;i<=row;i++)
{
k=1;
s=row-2-2*m;
q=1;
for(j=1;j<=row;j++)
{
if(i==1 || j==1 || i==row || j==row)
printf("# ");
else if(i==2 || j==2 || i==row-1 || j==row-1)
printf("* ");
else
{
if(k==m)
{
printf("%d ",k);
q++;
if(q>s)
k++;
}
else
{
if(k<m)
printf("%d ",k);
else
printf("%d ",2*m-k);
k++;
}
}
}
if(i>row/2)
m--;
else
{
if(row%2==0 && i<row/2)
m++;
else if(row%2==1)
m++;
}
printf("\n");
}
}


2007-10-18 17:37
快速回复:[讨论]大家看看能不能精简一下
数据加载中...
 
   



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

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