您的位置:首页 > 编程语言 > C语言/C++

C语言编程入门必做题-画字符圈圈

2006-08-31 00:33 337 查看
3. 打印一个 N*N 的方阵,N为每边字符的个数(3<N<20), 要求最外一层为"T", 第二层为"J", 从第三层起每层依次打印数字 1,2,3,...
(右图以N为15为例)
TTTTTTTTTTTTTTT
TJJJJJJJJJJJJJT
TJ11111111111JT
TJ12222222221JT
TJ12333333321JT
TJ12344444321JT
TJ12345554321JT
TJ12345654321JT
TJ12345554321JT
TJ12344444321JT
TJ12333333321JT
TJ12222222221JT
TJ11111111111JT
TJJJJJJJJJJJJJT
TTTTTTTTTTTTTTT

这个题目已开始,我脑子里翻了老半天,都没有翻清楚,到底应该怎么写表达式,后来,突然想起来了,这个也很简单的,我解的时候是这样的,把这个图案看成是由对角线切割的四块三角形,每个三角形区域可以用直线的表达式来框定,这么一想呢,思路就清楚了。


#include "stdio.h"


#include "stdlib.h"




int main(){


int n,i,j;


printf("Please insert N:/n");


scanf("%d",&n);


if (n<=3 || n>=20)


{


printf("N must be meet 3<N<20/n");


return 0;


}


for (i=0; i<n; i++)


{


for(j=0; j<n; j++)


{


if (i==0 || i == n-1 || j==0 || j == n-1)


{


printf("T");


continue;


}


if (i==1 || i ==n-2 || j==1 || j == n-2)


{


printf("J");


continue;


}






if ( j <= n - i -1)


{


if (j <= i){


printf("%d",j-1);


}


else {


printf("%d",i-1);


}


}


else{


if (j <= i)


printf("%d",n-i-2);


else


printf("%d",n-j-2);


}


}


printf("/n");


}


return 0;


}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: