c语言输出星号的问题

要输出
*
* *
* *
* *
* *
* *
*
我写的代码是

#include<stdio.h>
int main()
{
int line,k1,k2,n=7;
for(line=1;line<=(n+1)/2;line++)
{
for(k1=1;k1<=(n+1)/2-line;k1++)
{
printf(" ");
}
if(line==1)
printf("*\n");

else
{
printf("*");
for(k2=1;k2<=(line-1)*2-1;k2++)
{
printf(" ");
}
printf("*\n");

}
}
for(line=(n+1)/2+1;line<=n;line++)
{
for(k1=1;k1<=line-(n+1)/2;k1++)
{
printf(" ");
}
if(line==n)
printf("*\n");
else
{
printf("*");
for(k2=1;k2<=(n-line)*2-1;k2++);
{
printf(" ");
}
}
printf("*\n");
}
}
可是运行结果不正确,求解答

第1个回答  推荐于2016-06-15
你的程序太长了。。我懒的看 直接写了一个 你觉得怎样
#include<stdio.h>
#include<math.h>
main()
{ int i,j;
for(i=-3;i<=3;i++)
{
for(j=0;j<fabs(i);j++)
printf(" ");
printf("*");
for(j=0;j<5-2*fabs(i);j++)
printf(" ");
if(!(i==-3||i==3))
printf("*");
printf("\n");
}
}
怕你不会用n带,我又写了一个n的版本。。
#include<stdio.h>
#include<math.h>
main()
{ int i,j,n=11;
for(i=-n/2;i<=n/2;i++)
{
for(j=0;j<fabs(i);j++)
printf(" ");
printf("*");
for(j=0;j<n-2*fabs(i)-2;j++)
printf(" ");
if(!(i==-n/2||i==n/2))
printf("*");
printf("\n");
}
}
算了 如果n是偶数我也帮你写了吧
#include<stdio.h>
#include<math.h>
main()
{ int i,j,n=11,f=0;
if(n%2==0)
{
f=1;n++;
}
for(i=-n/2;i<=n/2;i++)
{
if(f&&i==0)
continue;
for(j=0;j<fabs(i);j++)
printf(" ");
printf("*");
for(j=0;j<n-2*fabs(i)-2;j++)
printf(" ");
if(!(i==-n/2||i==n/2))
printf("*");
printf("\n");
}
}本回答被提问者采纳
第2个回答  2013-11-02
#include<stdio.h>
int main()
{
    int line,k1,k2,n=7;
    for(line=1; line<=(n+1)/2; line++)
    {
        for(k1=1; k1<=(n+1)/2-line; k1++)
        {
            printf(" ");
        }
        if(line==1)
            printf("*\n");

        else
        {
            printf("*");
            for(k2=1; k2<=(line-1)*2-1; k2++)
            {
                printf(" ");
            }
            printf("*\n");

        }
    }
    for(line=(n+1)/2+1; line<=n; line++)
    {
        for(k1=1; k1<=line-(n+1)/2; k1++)
        {
            printf(" ");
        }
        if(line==n)
            printf("*\n");
        else
        {
            printf("*");
            for(k2=1; k2<=(n-line)*2-1; k2++)            //你这怎么有一个分号啊坑死了
            {
                printf(" ");
            }
            printf("*\n");                                     //我改了这一行的位置
        }
    }
}

第3个回答  2013-11-02
你是怎么考虑的?实际上 这个问题不用考虑中间空格的问题 在打印星号的时候 只打印第一个和最后一个就可以了
public class demo3
{
public static void main(String args[])
{
int lay=10;
for(int i=1;i<=(lay/2+1);i++)
{
for(int j=1;j<=(lay/2+1-i);j++)
{
System.out.print(" ");
}
for(int k=1;k<=(i*2-1);k++)
{
if(k==1||k==(i*2-1))
{
System.out.print("*");
}
else
{
System.out.print(" ");
}

}
System.out.println();
}
for(int i=(lay/2);i>=0;i--)
{
for(int j=1;j<=(lay/2-i+1);j++)
{
System.out.print(" ");
}
for(int k=1;k<=(i*2-1);k++)
{
if(k==1||k==(i*2-1))
{
System.out.print("*");
}
else
{
System.out.print(" ");
}

}
System.out.println();
}
}
}
这是我用java写的 主体的思想一样的
第4个回答  2013-11-02
唉,,,,
相似回答