放大的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’应如下所示:
如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
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)表示高度.
每组数据中有一个字符和一个整数,字符表示画笔,整数(>=5)表示高度.
Output
画横线总是一个字符粗,竖线随着总高度每增长6而增加1个字符宽.当总高度从5增加到6时,其竖线宽度从1增长到2.下圈高度不小于上圈高度,但应尽量接近上圈高度,且下圈的内径呈正方形.
每画一个"8"应空一行,但最前和最后都无空行.
每画一个"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;
}