hdu 2565 HDU 1256 水题给的反思 又中招了

放大的X

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 6840    Accepted Submission(s): 2059


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
 

Source
 
题意很简单   很简单的题目 但是自己却PE了4遍     
 
第一次是发现自己忽略了 每组输出后面空一行  
而且没有意识到  不是指2组数据之间有一个空行 而是每组数据后面都有一个空行
之后还是PE  
实在搞不懂了  百度下代码 发现最后一个X的后面的空格是不能打上去的  这里很难发现额
不过可以通过复制样例 把样例变黑后  可以发现这个问题
 
通过本题给自己的反思就是 以后要注意题目要求的格式  不要一眼扫过    虽然输出很容易看懂 但是要看清出输出格式后面有没有空行
要对样例进行选定一下  看一下有没有空格之类的问题
 
以此题引以为戒 希望下次不要再犯如此弱智的错误   
#include<stdio.h>
#include<string.h>
int main()
{
    int cas,n,i,j;
    int map[100][100];
    int a[100];
    scanf("%d",&cas);
    //int cnt=0;
    while(cas--)
    {
        //if(cnt!=0) printf("\n");
        //cnt++;
        memset(map,0,sizeof(map));
        scanf("%d",&n);
        for(i=1;i<=n;i++) 
               map[i][n+1-i]=1;
        for(i=1;i<=n;i++) map[i][i]=1;

        for(i=1;i<=n;i++)
        {
            for(j=1;j<=n;j++)
            {
                if(map[i][j]==1) a[i]=j;     
            }
        }

        for(i=1;i<=n;i++)
        {
            for(j=1;j<=a[i];j++)
            {
                if(map[i][j]==1) printf("X");
                else printf(" ");
            }
            printf("\n");
        }
        printf("\n");
    }
    return 0;
}

 

画8

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 2926    Accepted Submission(s): 1296


Problem Description
谁画8画的好,画的快,今后就发的快,学业发达,事业发达,祝大家发,发,发.
 

Input
输入的第一行为一个整数N,表示后面有N组数据.
每组数据中有一个字符和一个整数,字符表示画笔,整数(>=5)表示高度.
 

Output
画横线总是一个字符粗,竖线随着总高度每增长6而增加1个字符宽.当总高度从5增加到6时,其竖线宽度从1增长到2.下圈高度不小于上圈高度,但应尽量接近上圈高度,且下圈的内径呈正方形.
每画一个"8"应空一行,但最前和最后都无空行.
 

Sample Input
   
   
2 A 7 B 8
 

Sample Output
   
   
AA AA AA AA AA AA AA AA AA AA AA BBB BB BB BB BB BBB BB BB BB BB BB BB BBB
 

Source
 

Recommend
JGShining
 
本题和上题类似 又是格式错误  首先需要注意 题目要求是  上下2个框框的高度尽量相近  且下面框框要满足正方形  
上面错了 几次之后 
我居然在 格式上也错误了2次
又犯了上面的错误     以后做题要用鼠标拉黑一下数据 看看格式省么样
自己编程能力好弱啊   搞了acm这么长时间了 都鄙视自己了   加油吧    相信我这次我可以变化很大
 
 
#include<stdio.h>
#include<string.h>
int a[1111][1111];
int main()
{
	int i,j,n,b,cnt=0;
	char s[2];
	scanf("%d",&b);
	while(b--)
	{
		int k,e;//k是竖线的宽度
		if(cnt++!=0) printf("\n");
		memset(a,0,sizeof(a));
		scanf("%s %d",s,&n);
		k=n/6+1;
		e=((n-3)+1)/2;//正方形的边长
		for(i=k+1;i<k+1+e;i++)
		{
			a[n][i]=1;
			a[n-e-1][i]=1;
			a[1][i]=1;
		}
		for(i=2;i<=n;i++)
		{
			if(a[i][k+1]!=1)
			{
				for(j=1;j<=k;j++)
                    a[i][j]=1;
				for(j=k+e+1;j<=k+e+k;j++)
                    a[i][j]=1;
			}
		}
		for(i=1;i<=n;i++)
		{
			if(a[i][k+1]!=1)
            for(j=1;j<=2*k+e;j++)
			{
				if(a[i][j]==1)  printf("%c",s[0]);
				else printf(" ");
			}
			else
			{
				for(j=1;j<=k+e;j++)
					 if(a[i][j]==1)  printf("%c",s[0]);
				     else printf(" ");
			}
			printf("\n");
		}
		
	}
	return 0;
}

 
 
 
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值