hdoj2565 放大的X

来源:互联网 发布:淘宝手机版店招尺寸 编辑:程序博客网 时间:2024/05/17 08:24

放大的X

Problem Description
请你编程画一个放大的’X’。
如3*3的’X’应如下所示:
X X XX X5*5的’X’如下所示:X   X X X  X X XX   X
 

Input
输入数据第一行是一个整数T,表示有T组测试数据;
接下来有T行,每行有一个正奇数n(3 <= n <= 79),表示放大的规格。
 

Output
对于每一个n打印一个规格为n * n放大的’X’;每组输出后面空一行。
 

Sample Input
235
 

Sample Output
X X XX XX X X X X X XX X
 
 
 
 
 
 
 
 
 
 
这道题主要考察输出格式:
用二维数组a[82][82]记录一个正方形的矩阵,我们需要把每一行最后一个x后面的空格消除掉。因此,可以把放大的X看成上下两个部分,上部分(包括中间)的规律是:第i行第一个x都是a[i][i],最后一个x都是a[i][n+1-i]。用两个for循环,i控制行数,j控制列数,如果i+j>n+1就break,跳出循环就可实现。
下面的规律是:第i行最后一个x都是a[i][i],所以,控制每一行输入到j<=i时,就break,跳出循环即可。
代码如下:
#include<stdio.h>#include<string.h>char a[82][82];int main(){int i,j,n,t;scanf("%d",&t);while(t--) {scanf("%d",&n); memset(a,0,sizeof(a)); for(i=1;i<=n;i++)  for(j=1;j<=n;j++)   {if(i==j||i==(n+1-j)) a[i][j]='X';   else a[i][j]=' ';   } for(i=1;i<=n/2;i++)  {for(j=1;j<=n;j++)        {if(i+j>n+1) break;   printf("%c",a[i][j]);   }  printf("\n");  } for(;i<=n;i++)  {for(j=1;j<=i;j++)   {     printf("%c",a[i][j]);   }   printf("\n");  } printf("\n"); }return 0;}
 
 
 
0 0
原创粉丝点击