hdoj-2565-放大的X(解题报告)

这篇博客介绍了HDU 2565编程题的解题报告,题目要求根据输入的数字n输出一个放大的X图案。解题者分析了问题,指出关键在于控制空格和循环条件,以形成X形状。最初的尝试因循环控制不当导致输出错误,最终通过修正解决了问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目来源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’应如下所示:
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),表示放大的规格。

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;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值