你的程序在输出三角形的时候在行末输出了多余的空格。据题意,你程序的第n+i-1个字符输出完以后,不应再输出空格。(即最后等腰三角形最右边的边输出完后,不能在该边的右边输出空格)
你的程序的另一个问题是键盘缓冲区残余信息导致读入有误。(具体情况请参考百度百科的scanf词条)
所以应该做如下修改:
(1)在while循环的末尾应该加上getchar();以清除键盘缓冲区残余信息。
(2)将else printf(" ");改为else if(j
#include
#include
int main()
{
int n,i,k,j,t=0;
char c;
while(scanf("%c%d",&c,&n)!=EOF&&c!='@')
{
if(t!=0) printf("\n");
for(i=0;i
for(j=0;j<2*n-1;j++)
{
if(j==n-i-1||j==n+i-1) printf("%c",c);
else if(j
printf("\n");
}
if(i==n-1)
{
for(k=0;k<2*n-1;k++)
{
printf("%c",c);
t++;
}
printf("\n");
}
getchar();
}
return 0;
}
#include
using namespace std;
int main()
{
char a;
int b;
int i,j;
int c=0;
while(cin>>a&&a!='@')
{
if(c>0)
cout<
cin>>b;
b=b-1;
for(i=0;i<=b;i++)
{
if(i==0)
for(j=0;j<=b;j++)
{
if(j cout<<" ";
else
cout< }
else
{
if(i==b)
for(j=0;j<=b+i;j++)
{
cout< if(j==b+i)
cout<
else
{
for(j=0;j<=b+i;j++)
{
if(j==b-i)
cout< if(j
if(j==b+i)
cout< if(j>b-i&&j cout<<" ";
}
}
}
}
}
return 0;
}
好久没acm了~~我是来打酱油的~