代码输出时过度换行初学者遇问题

#include
int main()
{
int a,c,d;
char b;
while(1)
{
scanf ("%c",&b);
if (b!='@'){
scanf ("%d",&d);
for(c=1;c<=d-1;c+=1){
printf (" ");
}
printf("%c",b);
for(c=1;c<=d-1;c+=1){
printf (" ");
}
printf ("\n");
for(a=1;a
for(c=1;c<=d-a-1;c+=1){
printf(" ");
}
printf ("%c",b);
for(c=1;c<=2a-1;c++){
printf (" ");
}
printf ("%c",b);
for(c=1;c<=d-a-1;c+=1){
printf (" ");
}
printf ("\n");
}
for(c=1;c<=2
d-1;c++){
printf ("%c",b);
}
}
printf ("\b\b");
else{
break;
}
printf ("\n");
}
}
return 0;}

题主的代码没什么大问题,修改如下,供参考:

#include <stdio.h>
int main()
{
    int a, c, d;
    char b;
    while (1)
    {
        scanf("%c", &b);
        if (b != '@') {
            scanf("%d", &d);
            for (c = 1; c <= d - 1; c += 1) {
                printf(" ");
            }
            printf("%c", b);
            for (c = 1; c <= d - 1; c += 1) {
                printf(" ");
            }
            printf("\n");
            for (a = 1; a < d - 1; a++) {
                for (c = 1; c <= d - a - 1; c += 1) {
                    printf(" ");
                }
                printf("%c", b);
                for (c = 1; c <= 2 * a - 1; c++) {
                    printf(" ");
                }
                printf("%c", b);
                for (c = 1; c <= d - a - 1; c += 1) {
                    printf(" ");
                }
                printf("\n");
            }
            for (c = 1; c <= 2 * d - 1; c++) {
                printf("%c", b);
            }
            printf("\b\b");
        }
        else {
            break;
        }
        printf("\n");
    }
    return 0;
}

题主的写法太繁琐了,提供一个简单的写法,供参考:

//空心三角形
#include <stdio.h>
int main()
{
    int i, j, n = 4;
    char ch = 'a';
    while (scanf("%d %c", &n, &ch) == 2 && ch != '@') { //循环输入,直到输入:数字‘@’ 时结束输入退出
        for (i = 0; i < n; i++)
        {
            for (j = i; j < n - 1; j++)
                printf(" ");
            for (j = 0; j < 2 * i + 1; j++)
                printf("%c", (i == n - 1 || j == 0 || j == 2 * i) ? ch : ' ');
            for (j = i; j < n - 1; j++)
                printf(" ");
            printf("\n");
        }
    }
    return 0;
}

有什么问题吗?