2 liu yanzhao LIU_YANZHAO 于 2016.03.26 19:34 提问

初学者的c语言问题,如图

图片说明

 #include <stdio.h>
int main()
{
    int i,j,k,ch,n;
    printf("请输入行数:");
    scanf("%d",&n);
    for(i=1;i<n+1;i++)
    {
        for(k=1;k<n+1-i;k++)
        {
            printf(" ");
        }
        for(j=1,ch='A';j<=i;j++,ch++)
        {
            printf("%c",ch);
        }
        ch=ch-2; //关键
        for(j=1;j<i;j++,ch--)
        {
            printf("%c",ch);
        }
        printf("\n");
    }

    for(i=1;i<n;i++)
    {
        for(k=1;k<=i;k++)
        {
            printf(" ");
        }
        for(j=n,ch='A';j>i;j--,ch++)
        {
            printf("%c",ch);
        }
        ch=ch-2;
        for(j=n;j>i;j--,ch--)
        {
            printf("%c",ch);
        }
        printf("\n");
    }

}

为什么会出现右边的@啊

2个回答

qq423399099
qq423399099   Ds   Rxr 2016.03.26 19:58
已采纳

下半部分有个地方多循环了一次,打印一行的后半部分应该比前半部分少循环一次(改的地方我标注在代码里了)

#include <stdio.h>
int main()
{
    int i,j,k,ch,n;
    printf("请输入行数:");
    scanf("%d",&n);
    for(i=1;i<n+1;i++)
    {
        for(k=1;k<n+1-i;k++)
        {
            printf(" ");
        }
        for(j=1,ch='A';j<=i;j++,ch++)
        {
            printf("%c",ch);
        }
        ch=ch-2; //关键
        for(j=1;j<i;j++,ch--)
        {
            printf("%c",ch);
        }
        printf("\n");
    }

    for(i=1;i<n;i++)
    {
        for(k=1;k<=i;k++)
        {
            printf(" ");
        }
        for(j=n,ch='A';j>i;j--,ch++)
        {
            printf("%c",ch);
        }
        ch=ch-2;
        for(j=n;j>i;j--,ch--)//应该改成for(j=n;j-1>i;j--,ch--)
        {
            printf("%c",ch);
        }
        printf("\n");
    }

} 
Dennis_Zip
Dennis_Zip   2016.03.26 19:57

for(j=n,ch='A';j>i-1;j--,ch++)

Dennis_Zip
Dennis_Zip 写错,应该是 for(j=n;j>i+1;j--,ch--)
一年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!