有道题不知道错在哪里。
c语言吧
全部回复
仅看楼主
level 12
#include<stdio.h>
int main()
{
char a;
int n,i,k=0,j;
while(EOF!=scanf("%c",&a))
{
if(a=='@')
return 0;
if(k)
{
printf("\n");
}
scanf("%d",&n);
if(n==1)
{
printf("%c\n",a);
k=1;
}
else if(n==2)
{
printf(" %c\n",a);
printf("%c%c%c\n",a,a,a);
k=1;
}
else
{
for(j=1;j<=(n-1);j++)
{
printf(" ");
}
printf("%c\n",a);
for(i=2;i<=n-1;i++)
{
for(j=1;j<=(n-i);j++)
{
printf(" ");
}
printf("%c",a);
for(j=1;j<=((i-1)*2-1);j++)
{
printf(" ");
}
printf("%c\n",a);
}
for(i=1;i<=(n*2-1);i++)
{
printf("%c",a);
k=1;
}
printf("\n");
}
}
return 0;
}
2014年04月18日 03点04分 1
level 12
这是题目。
2014年04月18日 03点04分 2
level 12
形状能打印出来,就是空行总会多空出来好多行
2014年04月18日 03点04分 3
level 12
这是我测试的数据。
2014年04月18日 03点04分 4
题目要求,每两个结果之间空一行,但是一测试却多出来这么多行。
2014年04月18日 03点04分
level 12
简单说一下我的代码。
我的思路是:把它分成三类,一类是输出一行的,一类是输出两行的,一类是输出三行及以上的。一行和两行的就直接按照格式输出。三行及三行以上的用嵌套for循环输出。首先用一个单个for循环输出第一行,然后再用嵌套for循环输出第二行及第二行之后、最后一行之前的图案,然后再用一个单个for循环输出最后一行。
2014年04月18日 03点04分 5
level 12
我把
else
{
for(j=1;j<=(n-1);j++)
{
printf(" ");
}
printf("%c\n",a);
for(i=2;i<=n-1;i++)
{
for(j=1;j<=(n-i);j++)
{
printf(" ");
}
printf("%c",a);
for(j=1;j<=((i-1)*2-1);j++)
{
printf(" ");
}
printf("%c\n",a);
}
for(i=1;i<=(n*2-1);i++)
{
printf("%c",a);
k=1;
}
printf("\n");
}
都注释掉,只剩下n==1和n==2的情况的代码。只用“a 1”或者"a 2"两组数据反复测试了一下,还是会有很多多余空行出现。我觉得应该不是这部分的问题。可是n==1和n==2这部分的代码也没错啊。求大神!
2014年04月18日 03点04分 6
level 12
[泪][泪]
2014年04月18日 13点04分 7
level 7
考虑 到回车空格也是字符串的组成部分了吗?
2014年04月18日 16点04分 9
可是我输入的是字符%c,不是字符串%s啊。
2014年04月19日 00点04分
我在scanf("%d",&n);后面加了个getchar();接收一个回车符号。这回结果就对了。看来空格没有影响,有影响的是回车。谢谢你提醒啦。已经AC了[乖][花心]
2014年04月19日 07点04分
回复 就扯淡 :嗯。客气。
2014年04月19日 08点04分
1