题目来源http://acm.hdu.edu.cn/showproblem.php?pid=2565
问题描述
放大的X
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 13666 Accepted Submission(s): 4395
Problem Description
请你编程画一个放大的’X’。
如3*3的’X’应如下所示:
如3*3的’X’应如下所示:
X X
X
X X
5*5的’X’如下所示:
X X
X X
X
X X
X X
Input
输入数据第一行是一个整数T,表示有T组测试数据;
接下来有T行,每行有一个正奇数n(3 <= n <= 79),表示放大的规格。
接下来有T行,每行有一个正奇数n(3 <= n <= 79),表示放大的规格。
Output
对于每一个n打印一个规格为n * n放大的’X’;每组输出后面空一行。
Sample Input
2 3 5
Sample Output
X X X X X X X X X X X X X X
Author
lemon
题目分析:有T组实验数据,每组数据输入一个数字n,输出一个共n行的放大的X。
解题思路:考察对空格的控制,双循环,当行和列相等或行和列的和为n时,输出X;注意控制列的循环次数,防止多输出空格。
错误原因:开始思路不对,循环没控制好,输出的不是X型。
代码实现:
#include<stdio.h>
int main (void)
{
int T,n,i,j,x;
scanf("%d",&T);
while(T--)
{
scanf("%d",&n);
for(i=0;i<n;i++)
{
if(i<=n/2) //确定j循环的次数,防止多输出空格
x=n-i;
else
x=i+1;
for(j=0;j<x;j++)
{
if(i==j||(i+j)==n-1) //控制X的位置
printf("X");
else
printf(" ");
}
printf("\n");
}
printf("\n");
}
return 0;
}