放大的X
问题描述 :
请你编程画一个放大的’X’。
如2*2的’X’应如下所示:
XX
XX
5*5的’X’如下所示:
X X
X X
X
X X
X X
输入说明 :
输入数据第一行是一个整数T,表示有T组测试数据;
接下来有T行,每行有一个正数n(2 <= n <= 80),表示放大的规格。
输出说明 :
对于每一个n打印一个规格为n * n放大的’X’;每组输出后面空一行。
注意:每一行输出的字符X为大写的'X',第一行的最前与最后都无空格,每行的最后都无空格。
这道题目就是一道数学规律题目,仔细判断后可以看出来只有当j==k||j+k==n-1满足时才打印“X”。
for循环两层遍历即可。
特别注意:题目要求每行的最后都无空格,我的思路是统计每行已经打印的X的个数,如果已经打印两个了,或者该行已经打印一个了(马上就换行),
那么执行换行操作,该行不在打印。
#include <stdio.h> #include <stdlib.h> #include <math.h> #include <string.h> int main(){ int t,n; scanf("%d",&t); int i,j,k; int num; //记录该行打印了几个X? for(i=0;i<t;i++){ scanf("%d",&n); for(j=0;j<n;j++){ num = 0; //默认该行没有打印X for(k=0;k<n;k++){ if(j==k||j+k==n-1){ printf("X"); num++; if(j==n/2&&k==n/2){//有一种特殊情况 num = 2; } }else{ if(num!=2){ //每行的最后都无空格 printf(" "); } } } printf("\n"); } printf("\n"); } return 0; }