c语言编程 三角形绘图等腰

img

img


我想打印一个等腰三角形但是为啥是这样的 有人能帮我看看嘛 (水字数111111111111111111111111111111111111111111111111111111111111111111111111111111111111)

第二个for循环的结束条件a<5-a改为a<5-i即可。

修改如下:


#include <stdio.h>

int main(void){
    
    int a,b,i;
    
    for(i=0;i<=5;i++){
        
        // 如果结束条件为a<5-a,则此循环每次都是打印固定的3个空格 
        //  实际需要打印的等腰三角形每行前面的空格的个数从上到下依次为:5,4,3,2,1,0
        // 所以可以使用结束条件 a<5-i来实现 
        for(a=0;a<5-i;a++){  
            printf(" ");
        }
    
        
        for(b=0;b<2*i+1;b++){
            printf("*");
        }
        
        printf("\n");
        
    }
    
    return 0;
    
} 

img

img

【以下回答由 GPT 生成】

#include <stdio.h>

int main() {
    int rows, i, j, space;

    printf("请输入等腰三角形的行数: ");
    scanf("%d", &rows);

    for (i = 1; i <= rows; ++i) {
        for (space = 1; space <= rows - i; ++space) {
            printf(" ");
        }

        for (j = 1; j <= 2 * i - 1; ++j) {
            printf("*");
        }

        printf("\n");
    }
    return 0;
}

你的代码基本上是正确的,只需要进行一点小的修改即可得到所需的等腰三角形。修改的部分是在第二个内部循环时,你应该打印的空格数量不是等于行数,而是等于当前行数减1。此外,在第二个内部循环结束后,你需要打印一个换行符,以绘制下一行。

以下是修改后的代码:

#include <stdio.h>

int main() {
    int rows, i, j, space;

    printf("请输入等腰三角形的行数: ");
    scanf("%d", &rows);

    for (i = 1; i <= rows; ++i) {
        for (space = 1; space <= rows - i; ++space) {
            printf(" ");
        }

        for (j = 1; j <= 2 * i - 1; ++j) {
            printf("*");
        }

        printf("\n");
    }
    return 0;
}

现在,当你运行该程序并输入行数时,将会正确地绘制等腰三角形。



【相关推荐】



如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^