第十一行的小于等于是否应该改为等于

img

那感觉没问题了

把代码敲电脑里试试。

题主的判断正确,for(j=1;j<=n-i-1;j++) 这里的条件有问题,书上的代码有错误的,两种效果图形运行如下,供参考:

#include<stdio.h>

void main()
{
    char c;
    int i,j,k,n;
    printf("输入n:");
    scanf("%d",&n);
    printf("对应的菱形图\n");
    c = 'A';
    for(k=1-n;k<=n-1;k++)
    {
        i = n-abs(k);
        for(j=1;j<=n-i-1;j++)
            printf(" ");
        for(j=1;j<=2*i-1;j++)
            printf("%c",c);
        printf("\n");
        c++;
    }
}

img

#include<stdio.h>

void main()
{
    char c;
    int i,j,k,n;
    printf("输入n:");
    scanf("%d",&n);
    printf("对应的菱形图\n");
    c = 'A';
    for(k=1-n;k<=n-1;k++)
    {
        i = n-abs(k);
        for(j=1;j<=n-i;j++)
            printf(" ");
        for(j=1;j<=2*i-1;j++)
            printf("%c",c);
        printf("\n");
        c++;
    }
    system("pause");
}

img